簡體   English   中英

Python程序,而循環未執行?

[英]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 (因此其結果為TrueFalse ),但結果不做任何事情。

您的代碼永遠不會進入while循環內部,因為最初的Current = 1和Max = 4,所以它們不相等。

您嘗試用Python編程BASIC嗎? :-)

其他人已經回答了為什么它不起作用。 即使進行了這些更改,您的程序看起來也更像是BASIC,而不是Python。

您應該執行以下操作:

  1. 也使用索引0。 您分配0..4並使用1..4。 只需使用0..3。
  2. 使用for item in listobject:遍歷列表for item in listobject:而不是while循環。
  3. if Found==True:則不執行,僅if Found:使用if Found:
  4. 不要以大寫開頭來命名變量-這些名稱是針對類的。 使用found ,而不是Found

暫無
暫無

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

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