这个问题';s的答案是社区的努力。编辑现有答案以改进此帖子。它目前不接受新的答案或互动。
为什么在下面的代码中x和y是字符串而不是int
(注意:在Python2.x中使用raw\u input()。在Python3.x中,使用input()raw\u input()在Python3.x中被重命名为input())
play=True
游戏时:
x=输入(“输入一个数字:”)
y=输入(“输入一个数字:”)
打印(x+y)
打印(x-y)
打印(x*y)
打印(x/y)
打印(x%y)
如果输入(“再次播放?”)=“否”:
播放=错误
解决方案
由于Python3,input返回一个字符串,您必须显式地将其转换为ints,使用int,如下所示
x=int(输入(“输入一个数字”))
y=int(输入(“输入数字”))
您可以接受任意基数的数字,并使用int函数将其直接转换为base-10,如下所示
>&燃气轮机&燃气轮机;数据=int(输入(”输入一个数字“),8)
输入一个数字:777
&燃气轮机&燃气轮机&燃气轮机;数据
511
&燃气轮机&燃气轮机&燃气轮机;数据=int(输入(”输入一个数字“),16)
输入一个数字:FFFF
&燃气轮机&燃气轮机&燃气轮机;数据
65535
&燃气轮机&燃气轮机&燃气轮机;数据=int(输入(”输入一个数字“),2)
输入一个数字:10101010101
&燃气轮机&燃气轮机&燃气轮机;数据
1365
第二个参数说明输入的数字的基数,然后在内部理解并转换它。如果输入的数据错误,它将抛出一个ValueError
>&燃气轮机&燃气轮机;数据=int(输入(”输入一个数字“),2)
输入一个数字:1234
回溯(最近一次呼叫最后一次):
文件"&书信电报;输入>&引用;,第1行,in<;模块>;
ValueError:基为2的int()的文本无效:“1234”
对于可以包含分数分量的值,类型应为float,而不是int:
x=float(输入(“输入一个数字”))
Python2和Python3之间的差异
摘要
- Python 2的
input函数对接收到的数据进行求值,并将其隐式转换为整数(阅读下一节以了解其含义),但Python 3的input函数不再这样做 - Python2相当于Python3的
input是raw\u input函数
python2.x
有两个函数用于获取用户输入,分别称为input和raw\u input。它们之间的区别是,raw_input不计算数据,而是以字符串形式返回。但是,input将对您输入的内容进行评估,并返回评估结果。比如说,
>&燃气轮机&燃气轮机;导入系统
&燃气轮机&燃气轮机&燃气轮机;sys.version
“2.7.6(默认,2014年3月22日,22:59:56)\n[GCC 4.8.2]”
&燃气轮机&燃气轮机&燃气轮机;数据=输入(“输入数字”)
输入一个数字:5+17
&燃气轮机&燃气轮机&燃气轮机;数据,类型(数据)
(22,<;键入“int”>;)
对数据5+17进行评估,结果为22。当它计算表达式5+17时,它检测到您正在添加两个数字,因此结果也将是相同的int类型。因此,类型转换是免费完成的,22作为input的结果返回,并存储在data变量中。您可以将input看作是由eval调用组成的raw\u输入
>&燃气轮机&燃气轮机;数据=评估(原始输入(“输入数字”))
输入一个数字:5+17
&燃气轮机&燃气轮机&燃气轮机;数据,类型(数据)
(22,<;键入“int”>;)
注意:在Python2.x中使用input时应该小心。我在这个答案中解释了为什么在使用它时要小心
但是,raw_input不计算输入值,而是以字符串的形式返回
>&燃气轮机&燃气轮机;导入系统
&燃气轮机&燃气轮机&燃气轮机;sys.version
“2.7.6(默认,2014年3月22日,22:59:56)\n[GCC 4.8.2]”
&燃气轮机&燃气轮机&燃气轮机;数据=原始输入(“输入数字”)
输入一个数字:5+17
&燃气轮机&燃气轮机&燃气轮机;数据,类型(数据)
('5+17',<;类型'str'>;)
Python3.x
Python3.x的input和Python2.x的raw\u input类似,Python3.x中没有raw\u input
>&燃气轮机&燃气轮机;导入系统
&燃气轮机&燃气轮机&燃气轮机;sys.version
“3.4.0(默认,2014年4月11日,13:05:11)\n[GCC 4.8.2]”
&燃气轮机&燃气轮机&燃气轮机;数据=输入(“输入数字”)
输入一个数字:5+17
&燃气轮机&燃气轮机&燃气轮机;数据,类型(数据)
('5+17',<;等级'str'>;)