[英]Making random number guessing game as a small python project and I'm wondering why this isn't working
[英]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。
另一件事是while
和elif
語句矛盾,當您運行帶有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.