gpt4 book ai didi

python - 我如何在不生成退出代码 0 的情况下获得重复自身的功能?

转载 作者:太空宇宙 更新时间:2023-11-03 23:58:58 26 4
gpt4 key购买 nike

我用 for-in 循环 制作了一个简单的骰子滚筒,它需要 2 个 input,骰子的数量和骰子的边数。完成滚动后,结果将打印到屏幕上。

初始滚动完成后,我想让代码重新开始,使用新的输入,而不生成退出代码 0

##Original design obviously does not loop
from random import randint
import time
dice = int(input("\nHow many dice?\n "))
sides = int(input("How many sides?\n "))

def roll():
for quantity in range(dice):
time.sleep(.5)
print(randint(1, sides))

roll()

我将 input 变量从 global scope 移动到 local scope 以便它们可以随着每次重复而更新。当通过调用 function 结束 function 时,我取得了一些成功。我能够在不生成退出代码 0 的情况下无休止地 loop 该过程,但是 1 之外的任何数量的骰子似乎都没有注册。这样我一次只能掷一个骰子。

##Design 2 does not generate any exit codes and continues to loop
##endlessly but will not register more than 1 dice
from random import randint
import time

def roll():
dice = int(input("\nHow many dice?\n "))
sides = int(input("How many sides?\n "))
for quantity in range(dice):
time.sleep(.5)
print(randint(1, sides))
roll()

roll()

我已经更改了函数,这样它就不会因调用 本身而结束。相反,我创建了一个新函数,它只调用第一个函数。我在第一个函数之后放置了冗余函数,并且已经能够成功地实现我的目标,即随心所欲地滚动任意数量的单面骰子......两次。在两次迭代/循环之后,这会生成一个退出代码 0

##Current design will register all input data correctly 
##but only loops 2 times before generating an `exit code 0`
from random import randint
import time

def roll():
dice = int(input("\nHow many dice?\n "))
sides = int(input("How many sides?\n "))
for quantity in range(dice):
time.sleep(.5)
print(randint(1, sides))

def roll_again():
roll()

roll()
roll_again()

有人知道我做错了什么吗?

最佳答案

您需要将游戏逻辑放在一个 while 循环中;玩完后输入零个骰子退出。

from random import randint
import time


def roll():
for quantity in range(dice):
time.sleep(.5)
print(randint(1, sides))

while True:
dice = int(input("\nHow many dice? (zero to stop)\n "))
if dice == 0:
break
sides = int(input("How many sides?\n "))
roll()

关于python - 我如何在不生成退出代码 0 的情况下获得重复自身的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56373292/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com