【发布时间】:2015-04-01 04:03:22
【问题描述】:
有人可以帮我弄清楚我遇到的问题吗?
def marbles():
marbles = 0
while True:
try:
x = eval(input("How many marbles? "))
except ValueError:
print("You can't enter", x , "marbles! How many marbles do you have?")
continue
else:
break
for i in range(x):
x = eval(input("Please enter how many marbles between 0 and 100: "))
if 0 <= x and x <= 100:
marble = marble + x
else:
print("Your number is out of range!")
y = int(input("Please enter how many marbles between 0 and 100: "))
main()
我似乎无法弄清楚为什么当我编写 5.4 弹珠时它不会发出 You are not in range 的警告。在 0 到 100 之间,应该允许我给出小数,但是对于“有多少弹珠”,我希望收到该警告以重试。
【问题讨论】:
-
你为什么在某些地方使用
eval(input(...))(不好!)而在其他地方使用int(input(..))?请注意,如果您想评估 literals,您应该真正使用ast模块的literal_eval。此函数类似于eval,但不解释 任意 代码,而只解释 python 文字,使其可以安全地用于不受信任的输入。
标签: python floating-point integer typeerror