我使用的是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分隔的值并将命中输入,将触发f1,然后触发f3。
我怎样才能做到这一点?
多个值不一定用逗号分隔,但用户应该能够一次性给出所有值,然后所有函数都应该以相同的顺序运行。
答案 0 :(得分:1)
在列表中选择,查看以下代码是否适合您。
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
答案 1 :(得分:0)
您可以使用data.split函数执行此操作,然后运行循环
data = input.split(",") #split string into a list
for temp in data:
mydict[temp]();
让我知道这有帮助