【问题标题】:While loop making initial line of code unreachable in python虽然循环使python中的初始代码行无法访问
【发布时间】:2017-07-28 22:16:10
【问题描述】:

所以我一直在尝试用python制作一个基本的文本游戏,我正在使用这段代码不断生成随机数,用于某些函数来决定玩家是否受到损坏、玩家是否受到攻击等。 :

    rng = random.randint(0,100)
    while True:
            rng = random.randint(0,100)

当我在程序开始时放置循环以生成随机数时,我实际显示给用户的第一行代码不会运行,它询问玩家是否想玩。 PyCharm 说代码无法访问。我该如何解决?这是那行,供参考:

    game = raw_input("Would you like to play? Y/N\n")

当我运行程序时,屏幕上没有任何显示,除非我取出循环。对不起,如果答案很明显,我只在很短的时间内研究 python。

【问题讨论】:

  • 据我所知,您的循环是无限的。 True 始终为 True,因此程序将进入循环并且永远不会中断。
  • '当我运行程序时,屏幕上没有任何显示,除非我取出循环。'然后取出循环。
  • “我正在使用这段代码不断生成随机数” - 你是否认为 Python 会在后台运行这个循环,不断替换 rng 的值而其他代码继续运行做其他事情?事情不是这样工作的,即使你通过工作实际让这个循环与其他代码同时运行,它也是一种管理随机数的糟糕方法。
  • @Tamas Hegedus 如果我取出循环,那么它只会生成一个我不想要的数字。我希望始终生成随机数,以便用户不会每次都得到不好的结果或好的结果。我希望用户在每种情况下有时都会得到好的结果,有时会得到坏的结果。
  • 在您真正需要时生成随机数。

标签: python while-loop unreachable-code


【解决方案1】:

正如已经提到的,您的while 循环将永远运行,并且没有任何机制可以打破while 循环。

while True:
    # do something

这永远不会停止,因为while 循环正在有效地执行此测试:

while True == True:
    # do something

如前所述,您最好这样做:

game = raw_input("Would you like to play? Y/N\n")

# do stuff
# AND NOW, simulating some of the items you mentioned...

if random.randint(0, 100) > 70:
    # enemy attacks

if random.randint(0, 100) > 50:
    # player experiences damage 

【讨论】:

    猜你喜欢
    • 2012-04-26
    • 2014-01-22
    • 1970-01-01
    • 2016-06-14
    • 2022-09-30
    • 2019-08-26
    • 2020-03-17
    • 2019-03-19
    • 1970-01-01
    相关资源
    最近更新 更多