簡體   English   中英

我真的是Python新手,我想知道為什么我的“ Else:”不起作用

[英]I'm really new to Python, and I was wondering why my “Else:” isn't working

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)無法正常工作

它不起作用,因為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條件時while guess!=number:那么如何期望這個elif guess==number:語句在while語句中運行,所以答案將是handle這種情況在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!"

raw_input返回一個字符串。 您將需要將其轉換為int以便進行比較:

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

一個str永遠不會==一個int

關於您的randrange問​​題:

您應該改用random.randint(a,b)。 它在數字a和b之間選擇一個隨機整數(我認為是排他的)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM