Python while loop没有做它应该做的事情

2024-09-29 19:19:25 发布

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

所有非局部变量都位于模块下代码的顶部。 我使用多线程来同时使用多个函数,即使将它与其他循环进行比较,我也不明白为什么它不起作用。你知道吗

def SQUIRE():
global currency
global alive
global squire
while alive == True and squire == True:
    chanceA = random.randint(1, 100)
    if chanceA <= 10:
        currency += 10
        print("You have delivered a message for 10 currency. You now own", currency, " currency.")
        time.sleep(1)

它应该检查man()alive=True,如果squire=True,则选择1到100之间的随机数。如果这个数字在1到10之间,就在货币上加10。 相反,它什么也没做。你知道吗

https://pastebin.com/twxNmeDF

这是完整的代码供参考。 这可能是一个可怕的混乱,这只是一个副作用,我正在工作,而我学习Python。只干了几天


Tags: 模块and函数代码youtruedefglobal
2条回答

似乎发生的是squireFalse,因此循环不会执行。你知道吗

在使用线程时,您应该注意到,通常不能保证线程将按特定顺序执行,它们实际上是并行运行的,并且可能发生的情况是SQUIRE线程在其他线程能够将squire变量更改为True之前就已经完成了对该变量的测试。你知道吗

当您使用多个线程时,应该等待线程池中的每个线程完成对资源的访问。因此,应该在启动线程后使用t.join()。你知道吗

相关问题 更多 >

    热门问题