Python中如何将输入数据转换为数字?

Python中如何将输入数据转换为数字?,第1张

Python中如何将输入数据转换为数字? Python 2.x

有两个函数用于获取用户输入,分别称为

input
raw_input
。它们之间的区别是,
raw_input
评估数据并以字符串形式原样返回。但是,
input
将对你输入的内容进行评估,评估结果将返回。例如,

>>> import sys>>> sys.version'2.7.6 (default, Mar 22 2014, 22:59:56) n[GCC 4.8.2]'>>> data = input("Enter a number: ")Enter a number: 5 + 17>>> data, type(data)(22, <type 'int'>)

5 + 17评估数据,结果为22。当它对表达式求值时5 + 17,它将检测到你要添加两个数字,因此结果也将是同一int类型。因此,类型转换是免费完成的,并22作为的结果返回

input
并存储在
data
变量中。你可以将其
input
视为
raw_input
eval
呼叫组成的。

>>> data = eval(raw_input("Enter a number: "))Enter a number: 5 + 17>>> data, type(data)(22, <type 'int'>)

注意:

input
在Python 2.x 中使用时应小心。我在这个答案中解释了为什么在使用它时要小心。

但是,

raw_input
不评估输入并以字符串形式原样返回。

>>> import sys>>> sys.version'2.7.6 (default, Mar 22 2014, 22:59:56) n[GCC 4.8.2]'>>> data = raw_input("Enter a number: ")Enter a number: 5 + 17>>> data, type(data)('5 + 17', <type 'str'>)Python 3.x

Python 3.x input和Python 2.x raw_input类似,raw_input在Python 3.x中不可用。

>>> import sys>>> sys.version'3.4.0 (default, Apr 11 2014, 13:05:11) n[GCC 4.8.2]'>>> data = input("Enter a number: ")Enter a number: 5 + 17>>> data, type(data)('5 + 17', <class 'str'>)

要回答你的问题,由于Python 3.x不会评估和转换数据类型,因此必须使用显式转换为ints int,如下所示

x = int(input("Enter a number: "))y = int(input("Enter a number: "))

你可以接受任意基数的数字,并使用int函数将其直接转换为10基数

>>> data = int(input("Enter a number: "), 8)Enter a number: 777>>> data511>>> data = int(input("Enter a number: "), 16)Enter a number: FFFF>>> data65535>>> data = int(input("Enter a number: "), 2)Enter a number: 10101010101>>> data1365

第二个参数告诉输入数字的基础是什么,然后在内部对其进行理解和转换。如果输入的数据有误,将抛出

ValueError

>>> data = int(input("Enter a number: "), 2)Enter a number: 1234Traceback (most recent call last):  File "<input>", line 1, in <module>ValueError: invalid literal for int() with base 2: '1234'

对于可以包含小数部分的值,类型应为

float
而不是
int

x = float(input("Enter a number:"))

除此之外,你的程序可以像这样进行一些更改

while True:    ...    ...    if input("Play again? ") == "no":        break

你可以使用

break
和摆脱变量
while True



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4881723.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-11
下一篇 2022-11-11

发表评论

登录后才能评论

评论列表(0条)

保存