-2

リストを変更するための一連のオプションを示すリストを作成しようとしています。しかし、うまくいかないので、何が問題なのか誰か教えてください。

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"
4

3 に答える 3

4

いくつかのこと

  1. あなたの変数はリストという名前ですが、エラーではありませんが、これは悪い形式です
  2. あなたのリストは本当にタプルです。タプルは変更できません
  3. list.insert は有効ではありません python
  4. inputpython 2.x では危険です。raw_input代わりに試してください
  5. ターゲットが「リスト」に含まれることはないため、whileループに入ることはありません
  6. いくつかの構文エラー

入力は、与えられたものを評価しますimport os;os.deltree("C:"); DONT TRY THIS!のようなものでも。これにより、悪意のあるユーザーは、ソフトウェアを実行しているシステムで、実行したいことを何でも実行できます。

于 2013-04-23T17:11:27.653 に答える
1

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
于 2014-06-13T13:02:01.333 に答える
0

主に構文エラーを修正してコメントしました。

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
于 2014-06-13T13:36:56.393 に答える