python 输入输出 类似c++
python是个好东西。
搞过ACM竞赛的同学应该遇到过即使是long long
类型也无法进行存储的数字,这是因为c++对每种数据类型的存储空间是固定的,所以我们要么使用数组进行存储。
python
就没有这样的问题。理论上只要内存足够大,我们就可以存储无穷大的数。
但是python
每次输入都是按照字符串来进行存储的,所以初次使用python来进行一行内输入多个数字会面临很多问题,比如下面的代码就是错误的。
a, b = input(), input() #一行输入两个数字,但是结果是错误的
print(a+b)
print(type(a+b))
1 2
1
1 21
<class 'str'>
运行上面的代码,第一行我输入了1 空格 2,然后回车。
这时它还好会提示我们在进行输入,于是我输入了1,print输出的结果是1 21
其实结果是一个字符串类型的
a, b = map(int, input().strip().split())#正确的代码实现
print(a+b)
print(type(a+b))
1 2
3
<class 'int'>
这里来解释下,为什么第二个代码是正确的。
首先,正如上面说的,python输入默认是字符串类型,而且输入都是按照一行来的,也就是说,无论一行有多少的空格,python都会接受。
这里来说一下上面正确代码的流程
- 这里的input函数会返回一个字符串
- 然后调用字符串的strip函数,这个函数会去掉这个字符串的首尾的特定字符,这里我们没有传递给它参数,所以默认去掉的字符串首尾的空格。
- 去掉空格后再次调用split函数,这个函数会按照特定的字符来对字符串进行分割,这里我们也没有传递参数,所以默认是根据空格来进行分割。
- 这样我们就得到了输入的两个数字的字符串列表(类似于c++中的数组,但是更灵活)
- 然后我们使用了map函数,对,这个函数就是对上面列表里面的内容进行一个转换,第一个参数是int,那么就是把列表中的元素转换成int类型的数据
- 这样我们得到了两个数据,而且无论我们开头和结尾 或是 数字之间输入了多少个空格,我们都能进行正确地处理。
好了,完结撒花!
欢迎评论交流!