【问题标题】:My python random number generate the same result我的 python 随机数生成相同的结果
【发布时间】:2021-01-02 03:00:55
【问题描述】:

所以我在 python 中做这个小游戏并遇到了一个问题。我想随机化 randomNumber 变量。每次我运行它都会改变,但是当我打印数字时,它会一直显示相同的数字。例如,我选择玩游戏 3 次,我的游戏会让我输入 3 个值,但随机数对所有 3 个都是相同的。

代码:

import random
def guessingNumber():
    userPlayTimes = int(input('How many times you wanna play : '))
    randomNumber = random.randrange(1,10)
    userScore = 0
    for x in range(1,userPlayTimes+1):
        userGuess = int(input('Please enter your random Guess : '))
        print(userScore , randomNumber)
        if userGuess == randomNumber:
            userScore += 1
            return userScore
    print(userScore)

结果:

Q : How many times you wanna play : 5
Please enter your random Guess : 1
0 3 (score , randomNumber)
Q : Please enter your random Guess : 2
0 3 (score , randomNumber)
Q : Please enter your random Guess : 3
0 3 (score , randomNumber)
1 (overall score)

请不要介意我写得不好,因为这是我第一次使用 stackoverflow 来提问。

【问题讨论】:

  • 您随机化一次并打印多次。结果是多次相同的数字。究竟是什么让你感到惊讶?
  • 随机值在randomNumber = random.randrange(1,10)中生成,并且只执行一次,所以tehre只是一个随机值。
  • 您在 for 循环之前生成随机数,因此随机数保持不变。将randomNumber = random.randrange(1,10)放在for循环中每次都会生成一个随机数。
  • 如果数字正确,您可能不想返回。这意味着只有当你永远做对时才会显示用户分数,如果你做对了,你就不会玩剩下的回合。

标签: python random


【解决方案1】:

您应该将随机数选择移到内部循环中。
目前随机数是在游戏开始之前选择的,并且对于所有游戏都是相同的。

for x in range(1,userPlayTimes+1):
    userGuess = int(input('Please enter your random Guess : '))
    randomNumber = random.randrange(1,10) # <-- here
    print(userScore , randomNumber)
    if userGuess == randomNumber:
        ...

【讨论】:

    猜你喜欢
    • 2017-07-30
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 2021-12-31
    相关资源
    最近更新 更多