问题:
计算机随机生成一个数字。用户输入一个数字,计算机会告诉你是否太高或太低。然后你将继续猜测,直到猜出数字为止。
我的解决方案:
import random
computer = random.randint(1, 500)
def guessNumber():
user = raw_input('> ')
while user != computer:
if user > computer:
print "Your number is too big"
user = raw_input('> ')
else:
print "Naa! too small. Try a bit higher number"
user = raw_input('> ')
print "Now the numbers are equal"
不幸的是,我的代码从未运行过 if 语句,即使这样,即使我为用户输入“1”,它也总是打印“您的数字太大”。
raw_input()
返回一个string价值。先把它变成一个整数:
user = int(raw_input('> '))
由于 Python 2 将数字排序在字符串之前,因此,您的user > computer
无论输入什么内容,test 都将始终返回 True:
>>> '' > 0
True
Python 3 纠正了这个问题:
>>> '' > 0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: str() > int()
请注意,如果用户未输入有效号码,int()
会抛出一个ValueError
:
>>> int('42')
42
>>> int('fortytwo')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'fortytwo'
您可能想要明确处理该问题:
def askForNumber():
while True:
try:
return int(raw_input('> '))
except ValueError:
print "Not a number, please try again"
def guessNumber():
user = askForNumber()
while user != computer:
if user > computer:
print "Your number is too big"
user = askForNumber()
else:
print "Naa! too small. Try a bit higher number"
user = askForNumber()
print "Now the numbers are equal"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)