首页 > 解决方案 > 多选菜单 Python

问题描述

我试着做一个选择菜单,每个菜单做不同的事情,例如如果你选择数字1,会很好,但是如果你尝试选择2或其他数字,首先会尝试运行1,我没有想要这个。有没有办法让每个选项变得“独立”?

示例(这将起作用):

choice = input ("""
    1. Make thing 1
    2. Make thing 2
    3. Make thing 3
    4. Exit

    Please select your choice:""")

if choice == "1":
    print("thing 1")
if choice == "2":
    print("thing 2")
if choice == "3":
    print("thing 3")
if choice == "4":
    print("thing 4")

但是,如果 1 以后有更多的编码,并且您想使用选项 2,python 也将运行 1...

标签: pythonpython-3.x

解决方案


Python 缺少一个 switch/case 语句(如 C/C++),你可以让它执行多个(相邻的)case 条件,然后break在处理进一步的 case 之前拥有它。在 Python 中,您需要使用 if-elif-else 语句进行模拟,可能相应地在条件中使用比较运算符(如==, <)和/或布尔运算符(如and, or)。

这是python中的 C 语言 switch/case switch/case 的示例:

switch(n) {
  case 0:
    printf("You typed zero.\n");
    break;
  case 1:
  case 9:
    printf("n is a perfect square\n");
    break;
  case 2:
    printf("n is an even number\n");
  case 3:
  case 5:
  case 7:
    printf("n is a prime number\n");
    break;
  case 4:
    printf("n is a perfect square\n");
  case 6:
  case 8:
    printf("n is an even number\n");
    break;
  default:
    printf("Only single-digit numbers are allowed\n");
  break;
}

以下是您如何在 Python 中模拟 switch/case 中的第一个技巧switch/case in python

if n == 0:
    print "You typed zero.\n"
elif n == 1 or n == 9 or n == 4:
    print "n is a perfect square\n"
elif n == 2 or n == 6 or n == 8:
    print "n is an even number\n"
elif n == 3 or n == 5 or n == 7:
    print "n is a prime number\n"
elif n > 9:
    print "Only single-digit numbers are allowed\n"

这是一种更好的“Pythonic”方式在 python 中切换/大小写

options = {0 : zero,
           1 : sqr,
           4 : sqr,
           9 : sqr,
           2 : even,
           3 : prime,
           5 : prime,
           7 : prime,
}

def zero():
    print "You typed zero.\n"

def sqr():
    print "n is a perfect square\n"

def even():
    print "n is an even number\n"

def prime():
    print "n is a prime number\n"

options[num]()

推荐阅读