Python随机变量不工作

2024-04-26 03:20:56 发布

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

我正在创建一个基于文本的游戏,我想实现一个辐射4'荒地'系统。我发现一个很好的保持随机性的方法是为每个数字生成一个random.randint(1,10)函数和一些if语句。问题是当我随机化变量时,数字保持不变。这是我的代码(这是我的程序的一个测试示例,我认为我不需要全部代码):

import random

def randomA():
    return random.randrange(1,5)

global rollA
rollA = randomA()
alive = True
while alive == True:
    p = input("Type w")
rollA

if p == "w":     
    print(rollA)

Tags: 方法代码文本true游戏if系统数字
2条回答

Python模块运行良好。你的实现是错误的。你真的应该看看这些文件。但这里有一个例子:

from random import randint

randomA = lambda x: randint(1, x)


while True:
    num = randomA(10)
    if num != 4:
        print(num)
    else:
        break

显示:

6
6
2
6
8
5

另外,您的代码并没有按照Python最佳实践约定(aka)编写,也没有接近Python最佳实践约定。政治公众人物-8。请考虑遵守公约,这会有帮助的!你知道吗

最后,我不明白为什么使用global变量来保存随机数!坏主意!你知道吗

rollA是一个简单的变量,它被赋予从randomA()函数返回的值。rollA而不是一个可调用的函数,它返回一个新的随机数,如果这是您所期望的。你知道吗

因此rollA从未被赋予另一个值,因此rollA的值不会改变。你知道吗

我认为您的意思是通过调用randomA()来重新分配到循环中的rollA

while alive == True:
    p = input("Type w")
    rollA = randomA()
    if p == "w":
        print(rollA)

还有几件事:

  • rollA不需要是全局变量,因为它从不被访问 在本地范围内。你知道吗
  • while alive == True:相比,您可以更简单地编写

    while alive:
        ...
    
  • 这里没有显示,但是有没有设置alive = False的选项 在你的循环体里?如果不是,你有一个无限循环。

相关问题 更多 >