我在使用 IF 语句将变量设置为 True 和 False 时遇到问题

所以,我正在尝试创建一个简单的彩票机,它可以一直选择号码直到您中奖。我选择我的彩票号码 (my_number),然后将其与我使用“pick_driving_numbers”功能挑选的 4 个可能的中奖号码列表 (wining_numbers) 进行比较强>”。

我已经设置了一个 while 循环,它会一直运行直到标志等于 True。这是由函数“比较数字”设置的,除了它从不改变标志。无论什么while循环总是保持运行。

我试过把 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)
lvjiesjtu 回答:我在使用 IF 语句将变量设置为 True 和 False 时遇到问题

问题是数组 wining_numbers 总是存储相同的元素。因此,如果数组 wining_numbers 不包含中奖号码 7,程序将循环。

每次循环运行时,您都必须清除 wining_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)

有必要在方法内部使用 global win_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
本文链接:https://www.f2er.com/980005.html

大家都在问