python中的switch-case程序
我正在努力获得python中的switch case程序,当我运行脚本时,我想显示三个选项 输入您的选择: 1.插入记录 2.更新记录 3.显示记录 在看到这些之后,用户应该能够输入他的选择。因为我是python新手,所以我在谷歌上搜索发现python中没有开关大小写python中的switch-case程序,python,mysql,Python,Mysql,我正在努力获得python中的switch case程序,当我运行脚本时,我想显示三个选项 输入您的选择: 1.插入记录 2.更新记录 3.显示记录 在看到这些之后,用户应该能够输入他的选择。因为我是python新手,所以我在谷歌上搜索发现python中没有开关大小写 def main(): print("Enter your choice : ") print("1.Insert Records \n2.Update Records \n3.Display Records")
def main():
print("Enter your choice : ")
print("1.Insert Records \n2.Update Records \n3.Display Records")
choice = sys.argv[1]
if(choice == 1):
print 1
if(choice == 2):
print 2
if(choice == 3):
print 3
else:
print("You entered a wrong choice")
if __name__ == "__main__":
main()
这是我尝试过的,但没有用,因为它需要在运行scripteg时输入choice。python abc.py 1sys.argv是字符串列表。您正在尝试将其中一个与整数进行比较,如果不进行转换,这将不起作用
在这种情况下,您不需要转换,只需与字符串进行比较即可:
if choice == '1':
print 1
elif choice == '2':
print 2
elif choice == '3':
print 3
else:
print("You entered a wrong choice")
您仍然可以先将字符串转换为整数,以便执行更复杂的检查:
try:
choice = int(sys.argv[1])
except ValueError:
print("You entered a wrong choice")
else:
if not 1 <= choice <= 3:
print("You entered a wrong choice")
else:
print(choice)
如果您正在构建一个交互式菜单,那么命令行选项可能不是这里的最佳选择。改为使用,以便打印提示并使用一系列交换。请参阅。查看的描述。它不用于运行时的输入。相反,它用于在调用脚本时将参数传递给脚本。所以这个脚本:
import sys
print sys.argv
使用python script.py调用时,1233将打印['1'、'2'、'3']
如果您想在程序的executiopn上获得用户输入,您应该使用。仔细查看返回值等细节
Martijn提出的下一个问题是python没有开关大小写。您应该使用if-elif-else构造。听起来您想提示用户输入。在Python2.x中,使用原始输入。用户输入字符串,所以我更改了您要查找的内容。并在找到匹配项后使用elif结束比较
def main():
print("Enter your choice : ")
choice = raw_input("1.Insert Records \n2.Update Records \n3.Display Records")
if(choice == '1'):
print 1
elif(choice == '2'):
print 2
elif(choice == '3'):
print 3
else:
print("You entered a wrong choice")
if __name__ == "__main__":
main()
您可以使用dict而不是switch/case,如下所示:
from sys import argv
def insertRecord(args):
...
def updateRecord(args):
...
def displayRecords(args):
...
{
1 : insertRecords,
2 : updateRecords,
3 : displayRecords
}[argv[1]](argv[2])
如果要捕获默认情况,可以添加如下内容:
from sys import argv
def insertRecord(args):
...
def updateRecord(args):
...
def displayRecords(args):
...
def printHelp():
...
try:
{
1 : insertRecords,
2 : updateRecords,
3 : displayRecords
}[argv[1]](argv[2])
except KeyError:
printHelp()
希望这有帮助 您可以将选择作为参数传递,否则它将询问。 我更喜欢切换情况下的lambda版本,以确保它仅在访问时执行。 通过这种方式,您可以将print1等替换为高性能任务,并且不会针对dict中的每个条目运行 Python 3示例: 导入系统 def get_输入: 打印输入您的选择: 返回输入1.插入记录\n2.更新记录\n3.显示记录 def主: 如果lensys.argv>1,则choice=sys.argv[1]否则获取_输入 { “1”:lambda:print1, “2”:lambda:print2, “3”:lambda:print3, “4”:lambda:print4, }.getchoice,lambda:Print您输入了错误的选项 如果uuuu name uuuuu==\uuuuuuuu main\uuuuuuuu: 主要的 在python2中相同: 导入系统 def get_输入: 打印输入您的选择: 返回原始输入1.插入记录\n2.更新记录\n3.显示记录 def打印阀: 打印val def主: 如果lensys.argv>1,则choice=sys.argv[1]否则获取_输入 { “1”:lambda:print_val1, “2”:lambda:print_val2, “3”:lambda:print_val3, “4”:lambda:print_val4, }.getchoice,lambda:print_Vale您输入了错误的选项 如果uuuu name uuuuu==\uuuuuuuu main\uuuuuuuu: 主要的
sys.argv值始终都是字符串。不清楚这是关于切换还是获取用户输入。你看过内置的输入功能了吗?用户只有在看了选项后才能输入他的选择,我如何实现这一点?这个问题与mysql无关,你能改变它吗?嗨,tintin,你能解决你的问题吗?