我对Python很陌生,我想知道为什么我的" Else:"不工作

时间:2015-05-20 22:07:31

标签: python if-statement

import random

number = 50
guess = raw_input("Try to guess my number...")

while guess!=number:
if guess>number:
    print "Lower"
elif guess==number:
    print "Correct, you win!"
else:
    print "Higher"
guess = raw_input("Try again...")

我真的很新,我想知道为什么它不会显示"更高"当我输入的数字小于数字时,加上,我怎样才能使数字随机,因为randrange(1,100)无法工作

4 个答案:

答案 0 :(得分:2)

它无效,因为raw_input会返回一个字符串。

"50" == 50 # False!

您需要确保检查相同类型的相等性。首先尝试转换为int:

int(raw_input("Try to guess my number..."))

当然,如果您尝试将非数字字符串转换为int,这将引发异常,因此您还需要一些错误处理:

valid_num = False

while not valid_num:
    guess = raw_input()
    try:
        guess_num = int(guess)
        valid_num = True
    except ValueError:
        print "Please enter a valid number"


while guess!=number:
    if guess>number:
        print "Lower"
    elif guess==number:
        print "Correct, you win!"
    else:
        print "Higher"

答案 1 :(得分:1)

首先,当您使用raw_input("Try to guess my number...")时,ir会返回一个字符串str!=int,因此您运行无限 while guess!=number:循环作为条件对于字符串和整数的比较,它总是成立。

另一件事与whileelif的陈述相矛盾,当你使用while guess!=number:运行while条件时,你怎么能期望这个elif guess==number:语句在while语句,所以答案是在while循环之外处理这种情况。

import random

number = 50
guess = int(raw_input("Try to guess my number..."))

while guess!=number:
    if guess>number:
        print "Lower"
    else:
        print "Higher"
    guess = int(raw_input("Try again..."))

print "Correct, you win!"

答案 2 :(得分:0)

raw_input返回一个字符串。您需要将其转换为int以进行比较:

guess = int(raw_input("Try to guess my number..."))

str永远不会== int

答案 3 :(得分:0)

关于你的randrange问​​题:

您应该使用random.randint(a,b)代替。它选择数字a和b之间的随机整数(我认为是独占的。)