簡體   English   中英

我在使用 IF 語句將變量設置為 True 和 False 時遇到問題

[英]I am having trouble with an IF statement setting a variable to True and False

所以,我正在嘗試創建一個簡單的彩票機,它會一直選擇號碼直到你中獎。 我 select 我的彩票號碼( my_number ),然后將其與我使用 function “ pick_winning_numbers ”選擇的 4 個可能的中獎號碼列表( winning_numbers )進行比較。

我已經設置了一個 while 循環,它一直運行到標志等於 True。 這是由 function“比較數字”設置的,只是它從不更改標志。 不管什么,while 循環總是保持運行。

我嘗試從 function 中取出 if 語句,我嘗試取出 while 循環,我嘗試重寫代碼 5 次。 這些都沒有幫助。 請幫助我,因為我已經為此花費了我生命中的許多小時。 代碼如下。

from random import choice

def pick_winning_numbers():
#puts 4 numbers into a list and makes sure that they arent duplicates
    while len(winning_numbers) <4:
        chosen_number = choice(possible_numbers)
        if chosen_number not in winning_numbers:
            winning_numbers.append(chosen_number)

def compare_numbers():
    #Compares the number that I picked to the list of winning numbers and sets the flag to true or false
    if my_number in winning_numbers:
        print(f"Congratulations, you have won")
        flag = False
    else:
        flag = True

possible_numbers = [1,2,3,4,5,6,7,8,9]
my_number = 7
winning_numbers = []
counter = 0
flag = True

while flag == True:
    pick_winning_numbers()
    print(winning_numbers)
    compare_numbers()
    print(flag)

問題是數組winning_numbers總是存儲相同的元素。 因此,如果數組winning_numbers不包含中獎號碼7 ,程序將循環。

每次循環工作時,您都必須清除winning_numbers數組。

你應該這樣做:

def pick_winning_numbers():

    global winning_numbers
    winning_numbers = []

    while len(winning_numbers) <4:
        chosen_number = choice(possible_numbers)
        if chosen_number not in winning_numbers:
            winning_numbers.append(chosen_number)

有必要在方法中使用全局winning_numbers ,如果你不這樣做,數組wining_numbers將是方法的一部分(作為局部變量)而不是整個代碼。

同樣在compare_numbers()方法中,您必須將flag變量添加為全局:

def compare_numbers():
    global flag
    if my_number in winning_numbers:
        print(f"Congratulations, you have won")
        flag = False
    else:
        flag = True

暫無
暫無

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

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