创建一个简单的Python菜单
问题描述:
我试图创建一个显示你一组选项做更改列表清单。 但它不工作谁能告诉我什么是错的吧。创建一个简单的Python菜单
menulist=("1. Print the list",
"2. Add a name to the list",
"3. Remove a name from the list",
"4. Change an item in the list",
"9. Quit")
list=("johny","tom","kim","tim","jim")
target=input("Pick an item from the menu:")
while (target in list):
if target="1"
print list
elif target="2"
Addname=input("Type in a name to add:")
list=list.insert(Addname)
print menulist()
elif target="3"
Removename=input("What name would you like to remove:")
list=list.remove(Removename)
print menulist()
elif target="4"
Changename=input(What name would you like to change:")
changetoname=input("What is the new name:")
list=list.replace('Changename','changetoname')
print menulist()
elif target="9"
print"good bye"
答
几件事情
- 你的变量命名为列表,而不是一个错误究竟这是不好的形式
- 列表确实是一个元组,元组不能改变
- list.insert是无效的python
-
input
在python 2.x中是危险的,请尝试raw_input
而不是 - 目标将永远不会在“清单”为此你将永远不会进入while循环
- 几个语法错误
输入将评估任何它被赋予甚至像import os;os.deltree("C:");
DONT试试这个!这将允许恶意用户运行软件
+0
代码u能解释4号请@Joran Basley – user2312139 2013-04-23 17:20:57
答
在系统上执行任何他们想这是我在Python简单的菜单的例子。它是来自这个网站的旧版本的改进版本。
import os
import msvcrt as m
# Function for waiting for key press
def wait():
m.getch()
# Clear screen before to show menu, cls is MS Windows command
os.system('cls')
ans=True
while ans:
print("""
Simple menu:
------------
1.Add a Student
2.Delete a Student
3.Look Up Student Record
4.Exit/Quit
""")
ans=input("What would you like to do? ")
if ans=="1":
print("\nStudent Added")
print("\nPress Enter...")
wait()
os.system('cls')
elif ans=="2":
print("\nStudent Deleted")
print("\nPress Enter...")
wait()
os.system('cls')
elif ans=="3":
print("\nStudent Record Found")
print("\nPress Enter...")
wait()
os.system('cls')
elif ans=="4":
print("\nGoodbye")
ans = None
else:
print("\nNot Valid Choice Try again")
print("\nPress Enter...")
wait()
os.system('cls')
ans = True
答
修复和评论,他们主要是语法错误。
menulist= '''1. Print the list,
2. Add a name to the list,
3. Remove a name from the list,
4. Change an item in the list,
9. Quit''' #assuming you want to display menulist, having it as a tuple is useless
lst=("johny","tom","kim","tim","jim") #don't use reserved names for variables, may mess up things
target=raw_input("Pick an item from the menu:")
if target=="1": #this is an equality operator, whereas = is used to assign a variable (This checks the equality basically)
print lst
elif target=="2":
Addname=raw_input("Type in a name to add:")
list=list.append(Addname) #use append instead of insert, insert is for a specific position in list
print menulist #no parentheses, menulist is not a function; also this doesn't have to be indented
elif target=="3":
Removename=raw_input("What name would you like to remove:")
list=list.remove(Removename)
print menulist #again, I took the parentheses away
elif target=="4":
Changename=raw_input("What name would you like to change:") #you'd missed the " at the beginning
changetoname=raw_input("What is the new name:")
list=list.replace(Changename, changetoname) #removed the '. They're the variables, not the strings 'Changename' etc that you want to replace.
print menulist
elif target=="9":
print"good bye" #excessive indenting
else: #this replaces the initial while
#do nothing if the initial input is not 1,2,3,4 or 9
print menulist
你有没有开放“在'elif的目标=” 4" '分支 – akluth 2013-04-23 16:59:49
你有各种各样的语法错误,比如没有':'条件语句后,您使用的赋值运算符('= ')当你想比较(''==),等等。你或许应该入门书到Python – 2013-04-23 17:00:16
开始在Python? – 2013-04-23 17:02:19