Python中的另一个猜谜游戏,略有不同

时间:2016-11-01 12:18:22

标签: python python-3.4

在写这个问题之前,我在论坛中找了类似的东西,但没找到。所以这是我的猜谜游戏版本。我希望用户猜出计算机有一个从0到10的数字"想到"。但我想计算数字的差异,并显示用户是否接近以确定正确的数字。 我的代码如下:

import math
import random

intnum  = random.randrange(0,11)
print(intnum)

print ("The computer generated a random number from 0 to 10! Can you guess it?")
guess = 0
while guess != intnum:
    guess = int(input ("Pick a number!!: "))
    num = abs(guess-intnum)
    print (num)
    if (num==0):
        print ("Congrats! The answer is %s" % (guess))
        break
    elif (num>0 or num<=2):
        print ("You are less than 2 away. Keep going!")
    elif (num>2 or num<=5):
        print ("You are more than 2 away. Try again!")
    elif (num>5):
        print ("You are more than 5 away!! Try again.")

我打印计算机编号和差异,轻松找到我的错误。有一个我无法解决的逻辑错误。如果计算机生成数字9,我猜数字1,则差值为9-1 = 8。但程序,打印&#34;你距离不到2&#34;,这是不正确的。我究竟做错了什么?我想在更大的版本中使用这个更多的数字但是对于初学者我缩小了一点以找到正确的逻辑和语法。

3 个答案:

答案 0 :(得分:2)

此块需要从

重写
if (num==0):
    print ("Congrats! The answer is %s" % (guess))
    break
elif (num>0 or num<=2):
    print ("You are less than 2 away. Keep going!")
elif (num>2 or num<=5):
    print ("You are more than 2 away. Try again!")
elif (num>5):
    print ("You are more than 5 away!! Try again.")

if (num==0):
    print ("Congrats! The answer is %s" % (guess))
    break
elif (num>0 and num<=2):
    print ("You are less than 2 away. Keep going!")
elif (num>2 and num<=5):
    print ("You are more than 2 away. Try again!")
elif (num>5):
    print ("You are more than 5 away!! Try again.")

我理解您在初始代码块中尝试使用“或”,但计算机会有不同的想法,在这种情况下,“和”是您的朋友。

答案 1 :(得分:1)

正确的陈述是:

elif (num<=2):
    print ("You are less than 2 away. Keep going!")

答案 2 :(得分:-1)

您使用的条件不符合您的要求。

您需要检查一个数字是否在一个区间内。为此,您需要确保数字大于下限低于上限

您需要在条件中将or更改为and