在for循环

时间:2017-12-10 18:06:07

标签: python python-3.x

我有10个函数必须在循环中调用...

但是如果用户给出输入5,则应该调用前5个函数。

如果用户给出11,则在调用10个函数后,它应该从Beginning

开始调用其余的1

我写了所有10个函数,但我不知道如何实现这个。

def function_one():
    print("This is the first function")


def function_second():
    print("This is the second function")

.....

2 个答案:

答案 0 :(得分:15)

将您的功能放入列表中:

functions = [function_one, function_two, function_three, ...]

然后循环遍历:

n = int(input('Number: '))
for i in range(n):
    functions[i]()

现在你的要求是什么:

  

如果用户给出11,则在调用10个函数后,它应该从Beginning

开始调用其余的1

有很多方法可以做到这一点,但是如果我们想要坚持上面的代码,我们可以使用模运算符(%)来允许"过去"结束:

n = int(input('Number: '))
for i in range(n):
    functions[i % len(functions)]()

您还可以完全更改方法并使用itertools.cycle()而不是循环遍历列表的索引,并使用内置的next()来获取函数:

import itertools

functions = [function_one, function_two, function_three, ...]
functions_it = itertools.cycle(functions)

n = int(input('Number: '))
for i in range(n):
    next(functions_it)()

答案 1 :(得分:-1)

将你的函数放在一个列表中,然后使用模数运算符循环遍历列表,其中N是你应该调用的函数数:

functions = [function_one, function_two, function_three, ..., function_ten]
num_of_funcs = len(functions)

for i in range(N):
    functions[i % num_of_funcs]()

i % num_of_funcs将确保您从第一个函数开始,并在您点击列表中的最后一个函数后再次回绕第一个函数。