我在用Python制作一个游戏
我想检测我编写的随机数字生成器生成的数字中是否有重复的数字,但我不知道该怎么做。现在我有的代码是这样的,我想从随机数字生成器那里获取数字,然后找出其中的重复数字,这样我就可以给玩家一个获胜的倍数。
randomnum = random.randint(100, 999)
print(randomnum)
我在网上尝试了很多方法,但找到的一些看起来有希望的方案,我却不知道如何将随机数字生成器生成的数字放入检查重复数字的代码中。这是我觉得最有希望的方案。
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for n in numbers:
if numbers.count(n) > 1:
print("Repeated number:", n)
if numbers.count(n) < 1:
print("No repeated number:", n)
我的问题是,我无法弄明白如何将随机数字生成器生成的数字传递给这段代码,这是我尝试过的。
randomnum = random.randint(100, 999)
print(randomnum)
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for n in numbers:
if numbers.count(n) > 1:
print("Repeated number:", n)
if numbers.count(n) < 1:
print("No repeated number:", n)
为了更清楚,我想要一段代码,它可以在获取到随机数字生成器生成的三位数后,检查这个数字中1到9的数字是否有重复。如果有重复的数字,我希望能用一个变量来表示是否有重复,并且如果有的话,能知道是有2个还是3个数字是相同的。这个结果不需要打印出来,只要能让我在发现有2个或更多重复数字时,给玩家返回一个倍数就可以了。我对Python很陌生,只知道一些基础知识,谢谢。
3 个回答
我不太确定你具体想要什么,但听起来你是在生成随机数字,并且想要知道生成的数字是否之前出现过。如果是这样的话,我会这样做:
cache = set()
while <some condition>:
randomnum = random.randint(100, 999)
if randomnum in cache:
print("Repeated number: ", randomnum)
else:
print("No repeated number: ", randomnum)
cache.add(randomnum)
看起来你想要在一个指定的范围内生成n个随机整数,然后检查这些数字中是否有重复的。你在网上找到的代码似乎有问题,因为它在检查 count(n) > 1
或 count(n) < 1
,而第二个条件应该是 count(n) == 1
,因为如果这个数字在列表里,它至少应该出现一次。然后,你还需要把循环的范围改成你的列表 randomnum
的范围。试试这个:
import random
NUMBER_OF_RANDOM_NUMBERS = 10
RANDOM_NUMBER_RANGE = (10, 20)
randomnum = [random.randint(*RANDOM_NUMBER_RANGE) for i in range(NUMBER_OF_RANDOM_NUMBERS)]
print(randomnum)
print()
for n in randomnum:
if randomnum.count(n) > 1:
print("Repeated number:", n)
if randomnum.count(n) == 1:
print("No repeated number:", n)
示例输出:
[18, 16, 20, 11, 16, 16, 19, 19, 19, 19]
No repeated number: 18
Repeated number: 16
No repeated number: 20
No repeated number: 11
Repeated number: 16
Repeated number: 16
Repeated number: 19
Repeated number: 19
Repeated number: 19
Repeated number: 19
我把范围缩小了一些,这样就能让一些数字重复,而不会让列表变得太长。不过你可以根据需要调整 NUMBER_OF_RANDOM_NUMBERS
和 RANDOM_NUMBER_RANGE
的值。
你是不是在找 random.sample
呢?像这样:
random.sample(range(100, 999), 10)
这个可以帮你从100到999之间随机选出10个数字,而且这些数字都是不重复的。