打印字符串列表中的随机元素总是给出相同的字符串

2024-09-28 01:30:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个基于文本的游戏,我试图打印出一个随机的敌人,它每次都在输出变量中打印相同的敌人

import random

monsters = [("Goblin", 1), ("Troll", 3), ("Bear", 2), ("Giant Spider", 1), ("Bandit", 1), ("Wolf", 1), ("Homeless Man", 1), ("Goblin Chief", 3)]

def spawnMonster():
    enemy, DMG = random.choice(monsters)
    print(enemy)
    output = "A " + enemy + " comes out of the bushes."

spawnMonster()
print(output)

Tags: 文本import游戏outputrandomspiderbearprint
1条回答
网友
1楼 · 发布于 2024-09-28 01:30:44

看起来你的程序的问题与随机性无关。这是因为您没有将函数中的output值返回到顶层,所以您之前在output中拥有的任何内容(可能是您在同一交互会话中运行的旧程序的前一次运行)都不会更改。你知道吗

旧版本使用global output。这很管用,虽然有点笨重。你知道吗

更好的解决方案是返回值。像这样:

def spawnMonster():
    enemy, DMG = random.choice(monsters)
    print(enemy)
    output = "A " + enemy + " comes out of the bushes."
    return output

print(spawnMonster())

但如果你出于某种原因想让它成为一个全球性的公司,你可以回到过去。你知道吗

相关问题 更多 >

    热门问题