我应该在开始我的问题之前说我是Python的新手(3天),没有编程经验,因此,如果我不立即理解答案,请耐心等待。 我正在使用Python 3.5.3,并尝试做以下练习(https://www.practicepython.org):
生成1到9(包括1到9)之间的随机数。让用户猜测数字,然后告诉他们猜测的数字是否太低,太高或完全正确。 继续进行游戏,直到用户键入“退出”
到目前为止,我知道了:
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或'退出'的数字。谢谢。” 我注释掉了有关字符串的代码,但仍然得到了这个答案,然后注释掉了字符串代码和“ else”代码,这使它在输入数字后退出程序。
目前,我的结论是程序将所有输入解释为字符串。以前在“ y”变量中,我将其编写为:
int(input("I thought of a number between 0 and 100. Try to guess what it was! "))
我将其更改为当前形式的handlig字符串和整数。因为我在写“退出”时收到此错误消息:
ValueError: invalid literal for int() with base 10: 'exit'
任何帮助将不胜感激。
答案 0 :(得分:2)
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之间的数字
答案 1 :(得分:2)
input()始终返回str。 您不能这样做:
int(input("I thought of a number between 0 and 100. Try to guess what it was! "))
由于用户输入的字符串(即非数字)不能被转换为整数,因此会引发错误。
不过,您可以使用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.")