Python 我如何确保这些数字在使用后不会再次打印?

Python 我如何确保这些数字在使用后不会再次打印?,python,Python,此代码必须能够识别已经使用过的号码,以便不再打印 def Bingo(): import random import time while True: try: command = input("Do you want to generate a number Y/N: ") except: print("You colossal spanner")

此代码必须能够识别已经使用过的号码,以便不再打印

def Bingo():                    
    import random
    import time

    while True:
        try:

            command = input("Do you want to generate a number Y/N: ")
        except:
            print("You colossal spanner")

        if command.lower() == "y":

            text_file = open("Cache.txt", "a")

            text_file.write("Numbers Used \n")

            print("Welcome to the Bingo number generator")

            UserNumber = str((random.randint(1,90)))

            print(UserNumber)

            text_file.write (UserNumber)

            text_file.close()

        elif command.lower == "N":
            print("Try generating another one: ")

Bingo()

text_file.close()

您需要列出使用过的数字,当您说
UserNumber=str((random.randint(1,90))
时,将其放入
while
循环中,并将其添加到数字列表中:

def Bingo():                    
    import random
    import time

    used = []
    while True:
        try:
            command = input("Do you want to generate a number Y/N: ")
        except:
            print("You colossal spanner")

        if command.lower() == "y":
            text_file = open("Cache.txt", "a")
            text_file.write("Numbers Used \n")

            print("Welcome to the Bingo number generator")

            UserNumber = None
            while UserNumber is None or UserNumber in used:
                UserNumber = str((random.randint(1,90)))

            used.append(UserNumber)
            print(UserNumber)
            text_file.write (UserNumber)
            text_file.close()

        elif command.lower == "N":
            print("Try generating another one: ")

Bingo()

text_file.close()

您需要列出使用过的数字,当您说
UserNumber=str((random.randint(1,90))
时,将其放入
while
循环中,并将其添加到数字列表中:

def Bingo():                    
    import random
    import time

    used = []
    while True:
        try:
            command = input("Do you want to generate a number Y/N: ")
        except:
            print("You colossal spanner")

        if command.lower() == "y":
            text_file = open("Cache.txt", "a")
            text_file.write("Numbers Used \n")

            print("Welcome to the Bingo number generator")

            UserNumber = None
            while UserNumber is None or UserNumber in used:
                UserNumber = str((random.randint(1,90)))

            used.append(UserNumber)
            print(UserNumber)
            text_file.write (UserNumber)
            text_file.close()

        elif command.lower == "N":
            print("Try generating another one: ")

Bingo()

text_file.close()

您可以列出所有可用号码,并从中删除已生成的号码。您将在这些数字的列表中生成索引,而不是生成数字。这将使生成具有确定性:

numbers = list(range(1, 90))

def Bingo():
    import random
    import time

    while True:
        try:
            command = input("Do you want to generate a number Y/N: ")
        except:
            print("You colossal spanner")
        if command.lower() == "y":
            text_file = open("Cache.txt", "a")
            text_file.write("Numbers Used \n")
            print("Welcome to the Bingo number generator")

            remaining_numbers = len(numbers)
            if remaining_numbers == 0:
                print('No more numbers')
                exit(-1)
            index = random.randrange(remaining_numbers)
            user_number = numbers.pop(index)
            print(user_number)
            text_file.write (str(user_number))
            text_file.close()

        elif command.lower == "N":
            print("Try generating another one: ")

Bingo()

text_file.close()

您可以列出所有可用号码,并从中删除已生成的号码。您将在这些数字的列表中生成索引,而不是生成数字。这将使生成具有确定性:

numbers = list(range(1, 90))

def Bingo():
    import random
    import time

    while True:
        try:
            command = input("Do you want to generate a number Y/N: ")
        except:
            print("You colossal spanner")
        if command.lower() == "y":
            text_file = open("Cache.txt", "a")
            text_file.write("Numbers Used \n")
            print("Welcome to the Bingo number generator")

            remaining_numbers = len(numbers)
            if remaining_numbers == 0:
                print('No more numbers')
                exit(-1)
            index = random.randrange(remaining_numbers)
            user_number = numbers.pop(index)
            print(user_number)
            text_file.write (str(user_number))
            text_file.close()

        elif command.lower == "N":
            print("Try generating another one: ")

Bingo()

text_file.close()

我建议您生成如下数字:

numbers = range(1,90)
len(numbers) > 0
然后在宾果游戏中,做这样的事情来获得下一个数字:

number = random.randrange(len(numbers))
v = numbers.pop(number)
print v
您可以检查是否可以提取其他数字检查数字的长度,如下所示:

numbers = range(1,90)
len(numbers) > 0

在函数中生成数字,以便每次调用Bingo()时,都有一个新的数字列表可在游戏中使用。

我建议您生成如下数字:

numbers = range(1,90)
len(numbers) > 0
然后在宾果游戏中,做这样的事情来获得下一个数字:

number = random.randrange(len(numbers))
v = numbers.pop(number)
print v
您可以检查是否可以提取其他数字检查数字的长度,如下所示:

numbers = range(1,90)
len(numbers) > 0

在函数中生成数字,以便每次调用Bingo()时,都有一个新的数字列表可在游戏中使用。

我敢肯定这是一个重复的列表。标准的解决方案是生成一个范围的随机随机洗牌(或一个范围的随机选择),并从洗牌列表中一次生成一个元素。我很确定这是一个重复。标准的解决方案是生成一个随机的范围无序排列(或一个范围的随机选择),并从无序排列的列表中一次生成一个元素。向上投票选择
list.pop(index)
,忘记它。向上投票选择
list.pop(index)
,忘记它。