Python 为什么for循环的运行次数比我指定的要多?
我希望这能让我从统计字典中得到9个键,但我得到了27个。为什么会发生这种情况?我如何达到我想要的结果Python 为什么for循环的运行次数比我指定的要多?,python,python-3.x,for-loop,Python,Python 3.x,For Loop,我希望这能让我从统计字典中得到9个键,但我得到了27个。为什么会发生这种情况?我如何达到我想要的结果 import random def statsGen(): "Will generate an npc's stats" level = 3 const = random.randint(1, 20) str = random.randint(1, 20) dext = random.randint(1, 20) perc = rand
import random
def statsGen():
"Will generate an npc's stats"
level = 3
const = random.randint(1, 20)
str = random.randint(1, 20)
dext = random.randint(1, 20)
perc = random.randint(1, 20)
intel = random.randint(1, 20)
will = random.randint(1, 20)
char = random.randint(1, 20)
sp = random.randint(1, 20)
luck = random.randint(1, 20)
stats = {'Const':const,'Str':str,'Dext':dext,'Perc':perc,'Int':intel,'Will':will,'Char':char,'Sp':sp,'Luck':luck}
for level in stats:
stat1 = random.choice(list(stats))
print(stat1)
stat2 = random.choice(list(stats))
print(stat2)
stat3 = random.choice(list(stats))
print(stat3)
statsGen()
对于每个迭代,您打印3个统计信息(stat1、stat2、stat3)。
因此,如果您迭代统计词汇表(9个循环),它将为您提供27个打印的统计信息。您希望循环由
级别控制,而不是统计信息控制:
for _ in range(level):
name, value = random.choice(stats.items())
print("{} = {}".format(name, value))
但是,这并不能保证您将获得三种不同的统计信息,因为对random.choice的每次调用都是独立的。相反,请使用random.sample
:
for name, value in random.sample(stats.items(), level):
print("{} = {}".format(name, value))
在for循环中有3个Print语句,3*9=27我假设“还我”是指“Print”?为什么你希望它打印9个统计数据<代码>对于统计中的级别
将循环9次,并且在每次迭代中有3次打印。9*3==27。如果您希望每个级别循环一次,请对范围(0,级别)中的l使用:
是的,通过“返回我”我的意思是打印,很抱歉是新的。我不明白为什么它会给我27次,因为我相信for循环会运行三次,每个循环打印三次。我没有意识到从统计字典中的键数循环需要花费大量的时间。谢谢。我计划使用一个if语句来测试该键是否与循环中以前的键不同,我不知道random.sample。我感谢你的帮助,如果我的问题令人讨厌,我很抱歉