[英]Python Program, while loop not executing?
Names=[0,1,2,3,4]
Names[1]=='Ben'
Names[2]=='Thor'
Names[3]=='Zoe'
Names[4]=='Katie'
Max=4
Current=1
Found=False
PlayerName=input('What player are you looking for?')
while Found==False and Current==Max:
if Names[Current]==PlayerName:
Found=True
else:
Current+=1
if Found==True:
print('Yes, they have a top score')
else:
print('No, they do not have a top score')
這是程序。 輸入頂部的4個名稱中的任何一個時,程序應打印“是,它們具有最高分”,但是輸入其他名稱時,則應打印“否,它們沒有最高分”。
但是,無論輸入什么名稱,它都會返回“否,他們沒有最高分”消息。 我認為這可能與循環有關,但不確定是什么。
您的第二個條件倒轉了。 你要
while Found==False and Current!=Max:
也就是說,在Python中,您可以更簡單地使用in
運算符來完成此操作:
names = ['Ben', 'Thor', 'Zoe', 'Katie']
player_name = input('What player are you looking for?')
if player_name in names:
print('Yes, they have a top score')
else:
print('No, they do not have a top score')
這樣,您根本不需要while
循環。
Names[1]=='Ben'
...
不是賦值,它是相等性檢查(它返回False
,盡管這無關緊要)
因此,您的列表不會被修改,並且名稱會根據列表[0,1,2,3,4]
進行檢查,並且它們永遠不會匹配,這不足為奇。
此外,您的循環條件不正確,並且那里的代碼永遠不會運行。
但是,您應該考慮按照上面的建議使用in
運算符,或者至少使用for
循環來遍歷列表,這是更Python化的方式。
在while
循環中,您正在進行以下比較:
Found==False and Current==Max
條件的第二部分永遠不會評估為True
因為在循環之前Current
始終設置為1
,即!=
Max
因此,循環中的代碼永遠不會評估。
看這里:
Names=[0,1,2,3,4] Names[1]=='Ben' Names[2]=='Thor' Names[3]=='Zoe' Names[4]=='Katie'
這並沒有按照您的想法做。 之后, Names
等於[0, 1, 2, 3, 4]
。 接下來的幾行沒有指定名稱Names
,但只檢查一個元素是否等於一個名字。 例如, Names[1]=='Ben'
檢查Names
的第二個元素是否等於Ben
(因此其結果為True
或False
),但結果不做任何事情。
您的代碼永遠不會進入while循環內部,因為最初的Current = 1和Max = 4,所以它們不相等。
您嘗試用Python編程BASIC嗎? :-)
其他人已經回答了為什么它不起作用。 即使進行了這些更改,您的程序看起來也更像是BASIC,而不是Python。
您應該執行以下操作:
for item in listobject:
遍歷列表for item in listobject:
而不是while循環。 if Found==True:
則不執行,僅if Found:
使用if Found:
found
,而不是Found
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.