我对Python真的很陌生,我想知道为什么我的“Else:”不起作用

2024-04-24 15:42:31 发布

您现在位置:Python中文网/ 问答频道 /正文

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...")

我是新来的,我想知道为什么当我输入的数字小于这个数字时它不会显示“Higher”,另外,既然randrange(1100)不起作用,我怎么能让这个数字随机出现呢


Tags: toimportnumberinputrawifmy数字
3条回答

它不起作用,因为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"

首先,当您使用raw_input("Try to guess my number...")时,ir返回一个字符串,并且str!=int在任何情况下,因此您运行的是一个无限while guess!=number:循环,因为对于字符串和整数的比较,条件始终为true。你知道吗

另一件事是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!"

原始输入返回一个字符串。您需要将其转换为int进行比较:

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

一个str永远不会==一个int

相关问题 更多 >