python - 多选菜单 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...
解决方案
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]()
推荐阅读
- python - 如何在具有总和限制的组内密集排名?
- angularjs - 我想检测浏览器语言并将该浏览器语言用作 angularjs 应用程序语言
- python - 如何生成具有随机值的布尔数组?
- python - PyInstaller:UnicodeDecodeError:“gbk”编解码器无法解码位置 180 中的字节 0xae:非法多字节序列
- javascript - 无法使用 mongodb 读取未定义的 MVC 模型 Web 服务的属性
- ios - Apple 地图图块的 URL
- https - 如何使用 JMeter 加载测试 https
- python - Python(flask)——如何在没有“for循环”的情况下从数据中获取值
- javascript - Puppeteer 不关闭浏览器
- bison - yyparse 如何 *repeatedly* 调用 yylex?