【问题标题】:Need help fixing random number需要帮助修复随机数
【发布时间】:2019-03-26 23:50:35
【问题描述】:

我正在学习 Python,并且正在研究随机掷骰子。当我运行它时,它会重复在询问您是否要再次播放后首次显示的相同数字。我需要帮助找出哪里出错了。

我尝试过移动代码并放置不同种类的代码。我只是难过。

import sys
import random
import time


greeting = "Welcome to my Dice Game!"
roll = "Lets roll this die!"
die = random.randint(0, 6)

print(greeting)
time.sleep(2)

answer = input("Want to play?")

while answer == "yes" or answer == "y":
    print(roll)
    time.sleep(2)
    print(die)
    answer = input("Want to play again?")
print("Thanks for playing!")

这是我得到的:

Welcome to my Dice Game!
Want to play?yes
Lets roll this die!
5
Want to play again?yes
Lets roll this die!
5
Want to play again?y
Lets roll this die!
5

【问题讨论】:

  • die = random.randint(0, 6) 需要在您的循环内,否则该值仅在开始时设置一次。
  • 你调用了randint一次,生成了一个随机数。每次要生成另一个时,都需要再次调用它。
  • 只需将die = random.randint(0, 6) 移动到print(die) 的正上方
  • 另外,它应该是die = random.randint(1, 6),除非你有一个七面骰子。
  • 欣赏它,伙计们!

标签: python random while-loop dice


【解决方案1】:

您需要在循环中每次重新计算骰子的值,例如:

import sys
import random
import time


greeting = "Welcome to my Dice Game!"
roll = "Lets roll this die!"


print(greeting)
time.sleep(2)

answer = input("Want to play?")

while answer == "yes" or answer == "y":
    print(roll)
    time.sleep(2)
    die = random.randint(0, 6) # recompute it here instead
    print(die)
    answer = input("Want to play again?")
print("Thanks for playing!")

【讨论】:

  • 谢谢,非常感谢!
  • @Shinnnobuuu 没问题!如果这解决了您的问题,其标准做法是单击帖子旁边的复选标记以将其标记为已接受的答案。这表明其他用户在遇到相同错误时阅读该帖子。当您达到 15 个代表时,您也可以对有用的问题/答案进行投票!
【解决方案2】:

当你运行命令die = random.randint(0, 6) 时,你告诉 Python 的是“使用random.randint() 函数选择一个介于 1 和 6 之间的随机整数,然后将名为 die 的变量设置为等于被选中”。完成后,其余代码不会更新die 的值。这意味着循环中的print(die) 将继续打印它最初给出的任何值。换句话说,命令die = random.randint(0, 6) 意味着“每次我引用die 时,重新运行命令random.randint(0, 6) 并获得另一个随机数”。相反,die 只是一些具有特定常量值的变量。

由于random.randint() 是实际生成数字的原因,因此不断更新die 的一种方法是将循环外的命令移动到循环内:

while answer == "yes" or answer == "y":
    print(roll)
    die = random.randint(0, 6) # Generate a new random number, then assign it to 'die'
    time.sleep(2)
    print(die)
    answer = input("Want to play again?")

事实上,如果您除了打印数字之外并没有真正对数字做任何事情,您可能会完全忘记使用变量,只需将 random.randint() 命令粘贴到您的 print 命令中即可:

while answer == "yes" or answer == "y":
    print(roll)
    time.sleep(2)
    print(random.randint(0, 6))
    answer = input("Want to play again?")

【讨论】:

  • 感谢对理解我的混乱有很大帮助。真的很感激!
猜你喜欢
  • 2015-01-25
  • 2014-07-19
  • 1970-01-01
  • 2014-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-03
  • 1970-01-01
相关资源
最近更新 更多