在开始我的问题之前,我应该说我是Python的新手(3天),没有编程经验,所以如果我不能立即理解答案,请耐心等待。我正在使用Python3.5.3,并尝试执行以下练习(https://www.practicepython.org):
生成一个介于1和9(包括1和9)之间的随机数。让用户猜测数字,然后告诉他们是猜得太低、太高,还是猜对了。保持游戏运行,直到用户键入“exit”
到目前为止,我得到了这样的结论:
import random
import sys
value=random.randint(0, 10)
x=value
y=input("I thought of a number between 0 and 100. Try to guess what it was! ")
z=type(y)
if z==int:
if y<x:
print("too low!")
elif y>x:
print("too high!")
elif y==x:
print("right!")
elif y==z:
print("thank you for playing!")
sys.exit(0)
elif z==str:
if y=="exit":
print("thank you for playing!")
sys.exit(0)
elif y !="exit":
print("Please write only numbers from 1 to 10 or 'exit'. Thank you.")
else:
print("Please write only numbers from 1 to 10 or 'exit'. Thank you.")
我创建了"z“变量来存储有关输入类型的信息,以便在输入类型是整数或字符串时执行不同的操作。我觉得这是必要的,因为我收到了很多关于混合str到int的错误消息。我原以为程序会识别用户是否写了一个字符串,这将触发以下代码:
elif z==str:
if y=="exit":
print("thank you for playing!")
sys.exit(0)
elif y !="exit":
print("Please write only numbers from 1 to 10 or 'exit'. Thank you.")
或一个整数,其中它将执行以下操作:
if z==int:
if y<x:
print("too low!")
elif y>x:
print("too high!")
elif y==x:
print("right!")
elif y==z:
print("thank you for playing!")
sys.exit(0)
实际上,每当我输入一个数字或单词时,我只会得到这样的信息:“请只输入从1到10的数字或'exit‘。谢谢”。我注释掉了关于字符串的代码,仍然得到了这个答案,然后我注释掉了字符串代码和"else“代码,这使得它在输入数字后退出程序。
此时此刻,我的结论是,程序将所有输入解释为字符串。在之前的"y“变量中,我把它写成这样:
int(input("I thought of a number between 0 and 100. Try to guess what it was! "))
我将其更改为当前的手写字符串和整数形式。因为我在写“exit”的时候收到了这个错误信息:
ValueError: invalid literal for int() with base 10: 'exit'
任何帮助都将不胜感激。
发布于 2018-07-29 04:02:57
int()
获取浮点数或字符串值,并使其成为整数,例如,1.0 ->1“1”->1,依此类推。当你输入"exit“时,计算机必须取它的整数,但"exit”当然不是整数,所以它会返回那个错误。
做你想做的事,很简单。
try:
a = int(y)
if a<x:
print("too low!")
elif a>x:
print("too high!")
elif a==x:
print("right!")
elif a==z:# i dont understand what this is doing, but i will leave it
print("thank you for playing!")
sys.exit(0)
except ValueError:
if y=="exit":
sys.exit(0)
else:
print("Please write only numbers from 1 to 10 or 'exit'. Thank you.")
附注,在顶部你说
random.randint(0,10)
但是对于您的输入,假设是一个介于1和100之间的数字
发布于 2018-07-29 04:05:48
python中的input()总是返回str。你不能这样做:
int(input("I thought of a number between 0 and 100. Try to guess what it was! "))
因为如果用户输入的字符串不是数字,程序就不能将其转换为int,因此会抛出错误。
但是,您可以使用value.isdigit()来检查value(在字符串中)是否是一个有效的数字,但是您仍然需要将其强制转换为int,以便稍后在程序中使用它。
这是工作程序。
import random
import sys
value=random.randint(0, 10)
x=value
y=input("I thought of a number between 0 and 100. Try to guess what it was! ")
if y.isdigit():
y = int(y)
if y<x:
print("too low!")
elif y>x:
print("too high!")
elif y==x:
print("right!")
elif y==z:
print("thank you for playing!")
sys.exit(0)
else:
if y=="exit":
print("thank you for playing!")
sys.exit(0)
elif y !="exit":
print("Please write only numbers from 1 to 10 or 'exit'. Thank you.")
https://stackoverflow.com/questions/51574778
复制相似问题