[英]Guessing a number, true or false? Python
我想给某个值赋一个值,然后尝试让某人猜测该值。 我已经尝试了一些类似的方法,但是似乎无法正常工作...:
foo = 1
guessfoo = input('Guess my number: ')
if foo == guessfoo:
print('Well done, You guessed it!')
if foo != guessfoo:
print('haha, fail.')
为什么不起作用? 我应该怎么做呢? 我是初学者,请帮忙!
使用python 版本3 :
input()返回一个“ str”(字符串)对象。 字符串与整数比较将返回False:
1 == '1'
False
您必须像这样投射您的输入:
guessfoo = int(input('Guess my number: '))
不要忘记尝试...除非输入的结果不能转换为int类型。
完整的示例代码:
try:
foo = 1
guessfoo = int(input('Guess my number: '))
if foo == guessfoo:
print('Well done, You guessed it!')
else:
print('haha, fail.')
except ValueError:
# cannot cast your input
pass
编辑:
使用python 版本2 :
感谢您的评论:
在以前的版本中,输入将评估字符串,因此,如果用户键入1,则输入将返回int。
Ouput或您的原始代码:
$ python2 test.py
Guess my number: 1
Well done, You guessed it!
当前,您没有条件可以停止循环。 您只是在打印东西。 猜出数字后稍作break
,或将loop
设置为不同于1的值。
因为整数(foo)不是字符串(input()的结果)。 如果您认为Python的行为类似于PHP或Perl,那么您错了
1与“ 1”完全不同。
您必须将使用int(..)的字符串转换为int或将“ foo”作为字符串进行检查。
import random
try:
inp = raw_input # Python 2.x
except NameError:
inp = input # Python 3.x
foo = random.randint(1,10)
while True:
guess = int(inp('Guess my number: '))
if guess < foo:
print('Too low!')
elif guess > foo:
print('Too high!')
else:
print('You got it!')
break
看起来第一个问题将是一个无限循环,因为使用以上代码,您要检查每个迭代的条件将始终为真。 循环时,需要确保您进行了一些更改,使循环更接近该条件。 首先,您的代码应如下所示:
loop = 1
while loop == 1:
foo = 1
guessfoo = input('Guess my number: ')
if foo == guessfoo:
print('Well done, You guessed it!')
loop = 0
if foo != guessfoo:
print('Oh no, try again')
如果实际猜出该数字,这将导致循环完成执行。
下一个问题是input
返回一个String,因此检查输入的数字是否等于期望的数字将始终失败。 在python中,使用int()
函数将字符串转换为数字,因此该行如下所示:
guessfoo = int(input('Guess my number: '))
此时,您应该有一个体面的工作循环。 但是,您可以做一些事情来简化代码。 这里是一些建议,从最简单的调整开始,然后转向更简洁的代码。
第一步可能是使用if...else
来确保仅执行一个条件,而您只需要检查一次foo
的值。 如果条件为真,则执行第一个分支;否则,执行第一个分支。 如果失败,则执行进行到else
块。
loop = 1
while loop == 1:
foo = 1
guessfoo = int(input('Guess my number: '))
if foo == guessfoo:
print('Well done, You guessed it!')
loop = 0
else:
print('Oh no, try again')
这可行,但是我们也可以在循环条件下移动检查以得到正确的结果。 这样,程序只会循环运行直到显示数字:
foo = 1
guessfoo = 0
while foo != guessfoo:
guessfoo = int( input( 'Guess my number: ' )
if guessfoo != foo:
print( 'Oh no, try again' )
print( 'Well done, You guessed it!' )
现在,仅在foo == guessfoo
时显示成功消息。 此循环更清晰,更简单。
作为初学者,您已经选择了一个寻求帮助的好地方! 欢迎来到StackOverflow!
另外,您应该使用两个不同的if吗? 不应该更像
if foo == guessfoo:
print('Well done, you guessed it!')
else:
print('haha, fail.')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.