我如何将输入读取为数字?
- 2024-11-15 08:37:00
- admin 原创
- 53
问题描述:
为什么下面的代码中是字符串而不是整数x
?y
(注意:在 Python 2.x 中使用raw_input()
。在 Python 3.x 中使用input()
。在 Python 3.x 中raw_input()
已重命名为)input()
play = True
while play:
x = input("Enter a number: ")
y = input("Enter a number: ")
print(x + y)
print(x - y)
print(x * y)
print(x / y)
print(x % y)
if input("Play again? ") == "no":
play = False
解决方案 1:
从 Python 3 开始,input
返回一个必须明确转换为的字符串int
,如下所示
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
您可以接受任何基数的数字,像这样
>>> data = int(input("Enter a number: "), 8)
Enter a number: 777
>>> data
511
>>> data = int(input("Enter a number: "), 16)
Enter a number: FFFF
>>> data
65535
>>> data = int(input("Enter a number: "), 2)
Enter a number: 10101010101
>>> data
1365
第二个参数告诉它数字的基数,然后它在内部理解并转换它。如果输入的数据错误,它会抛出一个ValueError
。
>>> data = int(input("Enter a number: "), 2)
Enter a number: 1234
Traceback (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:"))
Python 2 和 3 之间的区别
概括
Python 2 的
input
函数评估接收到的数据,并隐式地将其转换为整数(阅读下一部分以了解其含义),但 Python 3 的input
函数不再这样做。Python 2 与 Python 3 等效的功能
input
是raw_input
函数。
Python 2.x
有两个函数用于获取用户输入,分别称为input
和raw_input
。它们之间的区别在于,raw_input
不评估数据,而是以字符串形式原封不动地返回。但是,input
会评估您输入的任何内容,并返回评估结果。例如,
>>> import sys
>>> sys.version
'2.7.6 (default, Mar 22 2014, 22:59:56)
[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'>)
注意:在 Python 2.x 中使用时应小心谨慎。我在此答案input
中解释了为什么在使用它时应小心谨慎。
但是,raw_input
不会评估输入并将其原样作为字符串返回。
>>> import sys
>>> sys.version
'2.7.6 (default, Mar 22 2014, 22:59:56)
[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.xinput
与 Python 2.xraw_input
类似,并且raw_input
在 Python 3.x 中不可用。
>>> import sys
>>> sys.version
'3.4.0 (default, Apr 11 2014, 13:05:11)
[GCC 4.8.2]'
>>> data = input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
('5 + 17', <class 'str'>)
解决方案 2:
在 Python 3.x 中,raw_input
被重命名为input
并且 Python 2.xinput
被删除。
这意味着,就像raw_input
,input
在 Python 3.x 中总是返回一个字符串对象。
为了解决这个问题,您需要将这些输入明确地转换为整数int
:
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
解决方案 3:
对于一行中的多个整数,map
可能会更好。
arr = map(int, raw_input().split())
如果数字已知(例如 2 个整数),则可以使用
num1, num2 = map(int, raw_input().split())
解决方案 4:
input()
(Python 3) 和raw_input()
(Python 2)始终返回字符串。使用 将结果显式转换为整数int()
。
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
解决方案 5:
多道题要求在一行中输入多个整数。最好的方法是逐行输入整个数字串,然后将它们拆分成整数。以下是 Python 3 版本:
a = []
p = input()
p = p.split()
for i in p:
a.append(int(i))
您还可以使用列表推导:
p = input().split("whatever the seperator is")
要将所有输入从字符串转换为 int,我们执行以下操作:
x = [int(i) for i in p]
print(x, end=' ')
列表元素应该以直线打印。
解决方案 6:
转换为整数:
my_number = int(input("enter the number"))
对于浮点数类似:
my_decimalnumber = float(input("enter the number"))
解决方案 7:
n=int(input())
for i in range(n):
n=input()
n=int(n)
arr1=list(map(int,input().split()))
for 循环将运行“n”次。第二个“n”是数组的长度。最后一条语句将整数映射到列表并以空格分隔的形式输入。您还可以在 for 循环结束时返回数组。
解决方案 8:
我在解决CodeChef上的一个问题时遇到了输入整数的问题,其中应该从一行读取两个整数(以空格分隔)。
虽然int(input())
对于单个整数来说已经足够了,但我没有找到直接输入两个整数的方法。我试过这个:
num = input()
num1 = 0
num2 = 0
for i in range(len(num)):
if num[i] == ' ':
break
num1 = int(num[:i])
num2 = int(num[i+1:])
现在我使用num1
和num2
作为整数。
解决方案 9:
def dbz():
try:
r = raw_input("Enter number:")
if r.isdigit():
i = int(raw_input("Enter divident:"))
d = int(r)/i
print "O/p is -:",d
else:
print "Not a number"
except Exception ,e:
print "Program halted incorrect data entered",type(e)
dbz()
Or
num = input("Enter Number:")#"input" will accept only numbers
解决方案 10:
虽然在您的示例中,int(input(...))
在任何情况下都可以达到目的,python-future
但builtins.input
值得考虑,因为这可以确保您的代码适用于 Python 2 和 3 ,并禁用 Python2input
尝试对输入数据类型“聪明”的默认行为(builtins.input
基本上只是表现得像raw_input
)。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理必备:盘点2024年13款好用的项目管理软件