繁体   English   中英

根据用户选择在Python中调用多个函数

[英]Calling Multiple Functions based on user selection in Python

我正在使用Python版本3。我想根据用户输入调用函数,下面的代码可以正常工作。

def askUser():
    while True:
        try:
            choice = int(input("Do you want to: \n(1) Run f1 \n(2) Run f2 \n(3) Run f3 \n(4) Run f4 \n"))
        except ValueError:
            print("Please input a number")
            continue
        if 0 < choice < 5:
            break
        else:
            print("That is not between 1 and 4! Try again:")
    print ("You entered: {} ".format(choice))

    def f1():
        print("f1 was called")
    def f2():
        print("f2 was called")
    def f3():
        print("f3 was called")
    def f4():
        print("f4 was called")
    mydict = {1:f1, 2:f2, 3:f3, 4:f4}
    mydict[choice]()

askUser()

现在的问题是我想从用户那里获取多个值。例如,用户要运行功能1和3(即先运行功能1然后运行3),那么他将输入以1,3分隔的值,然后按Enter,将触发f1,然后触发f3。

我该如何实现?

多个值不必一定要用逗号分隔,但是用户应该能够一次给出所有值,然后所有功能应以相同的顺序运行。

在列表中进行选择,看看下面的代码是否适合您。

def askUser():
    def f1():
        print("f1 was called")
    def f2():
        print("f2 was called")
    def f3():
        print("f3 was called")
    def f4():
        print("f4 was called")
    mydict = {1:f1, 2:f2, 3:f3, 4:f4}

    while True:
        try:
            choices = list(map(int,input("Do you want to: \n(1) Run f1 \n(2) Run f2 \n(3) Run f3 \n(4) Run f4 \n").split()))
        except ValueError:
            print("Please input number")
            continue
        for choice in choices:
            if 0 < choice and choice < 5:
                mydict[choice]()
            else:
                print("That is not between 1 and 4! Try again:")




askUser()

以下是输出

sawant@sawant:~$ python sol.py 
Do you want to: 
(1) Run f1 
(2) Run f2 
(3) Run f3 
(4) Run f4 
1 2 3
f1 was called
f2 was called
f3 was called
Do you want to: 
(1) Run f1 
(2) Run f2 
(3) Run f3 
(4) Run f4 
4 3 2
f4 was called
f3 was called
f2 was called
Do you want to: 
(1) Run f1 
(2) Run f2 
(3) Run f3 
(4) Run f4 
1 5
f1 was called
That is not between 1 and 4! Try again:
Do you want to: 
(1) Run f1 
(2) Run f2 
(3) Run f3 
(4) Run f4 
1 9 2 
f1 was called
That is not between 1 and 4! Try again:
f2 was called
Do you want to: 
(1) Run f1 
(2) Run f2 
(3) Run f3 
(4) Run f4 
1 .
Please input number
Do you want to: 
(1) Run f1 
(2) Run f2 
(3) Run f3 
(4) Run f4 

您可以使用data.split函数执行此操作,然后在周围运行一个循环

data = input.split(",") #split string into a list
for temp in data:
   mydict[temp]();

让我知道有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM