[英]How to get python to go back to start of loop and not use random?
我對python有點陌生,正在給自己做一個任務,我想要一個猜數字游戲,它可以讓您猜四個數字,並且程序將不斷告訴您您猜對了多少個數字,直到您猜出完整的數字列表為止。
running = True
import random
def compareLists(a, b):
return list(set(a) & set(b))
def start():
rNums = random.sample(range(10), 4)
gNums = []
print("Get ready to guess 4 numbers!")
for i in range(0, 4):
x = int(input("Guess: "))
gNums.append(x)
print("You guessed: ", gNums)
comparison = len(compareLists(rNums, gNums))
while gNums and rNums:
if gNums != rNums:
print("You guessed " + str(comparison) + " numbers right, keep guessing!")
break
elif gNums == rNums:
print("What amazing luck!")
while running:
start()
問題是,當我使用break時,會創建一個新的4個數字列表,我希望python只返回循環的開頭而不創建一個完整的新列表!
您要使用continue
。 用一個玩具示例嘗試一下:
i = 0;
while i < 10:
i += 1
if i % 2 == 0:
continue
print i
輸出:
1
3
5
7
9
你可以把
rNums = random.sample(range(10), 4)
在循環外傳遞rNums來開始。 這樣,您將在列表中擁有相同的四個數字。 希望這可以幫助
為了最大程度地減少代碼中的循環次數,我可能首先將您的隨機數彈出到字典中。
諸如此類(可能更有效的方式...但這是我腦海中浮現的第一件事):
from collections import Counter
d = Counter(random.sample(range(10), 4))
開始while循環,並繼續要求用戶進行猜測。 每當他們做出正確的猜測時,只需執行以下操作即可:
d.pop(correctly_guessed_num)
字典為空后,就完成了,您打破了循環。
編輯添加我的快速刺在實施。 尚未完全考慮,可能是一些打破常規的極端案例……但這是整體思路。 希望能幫助到你。
from collections import Counter
import random
d = Counter(random.sample(range(1, 10), 4))
size = len(d) - 1
while True:
x = int(input("Guess: "))
if size == 0:
print("you guessed them all, way to go")
break
if x not in d:
print("keep going buddy")
continue
else:
d.pop(x)
size -= 1
print("A right guess")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.