0

かなり単純な質問だと思います...文字通りPythonをインストールしたばかりで、初心者向けチュートリアルのいくつかをテストしています。

リストにアイテムを追加できるメニューを作成し、それらが追加されているかどうかを確認したいと思いました: テスト機能とプロセス中のリスト。

#create empty list and define variables
firstlist = {'joe'}
additem = "test"
printthis = "test"

#create menu, add or check name
def menu():
    #print what options you have
    print "Add to list: type '1'"
    print "Check for name: type '2'"
    print "To exit program: type '3'"
    return input ("Choose your option: ")

def addmenu():
    additem = input("Name of list item: ")
    firstlist.append(additem)
    print additem, "has been appended"

def checkmenu():
    printthis = input ("What are you looking for?: ")
    if firstlist.has_key(printthis):
        print "is in the list"
    else:
        print "is not in the list"

# Perform action
loop = 1
choice = 0
while loop == 1:
    choice = menu()
    if choice == 1:
        addmenu()
    elif choice == 2:
        checkmenu()
    elif choice == 3:
        loop = 0
    elif choice > 3:
        print "You made an incorrect selection"

ここに私のエラーがあります:

Traceback (most recent call last):
  File "C:\Python27\testing python\tutorials\dictionaryselection", line 32, in <module>
    addmenu()
  File "C:\Python27\testing python\tutorials\dictionaryselection", line 15, in addmenu
    additem = input("Name of list item: ")
  File "<string>", line 1, in <module>
NameError: name 'TESTING' is not defined

何が起こっているのかわからない...どんな助けでも大歓迎です。

以下の作業コード: python 3.x に変換

#create empty list and define variables
firstlist = ['Joe']
additem = "test"
printthis = "test"

#create menu, add or check name
def menu():
    #print what options you have
    print ("")
    print ("Add to list: type '1'")
    print ("Check for name: type '2'")
    print ("To list the whole list '3'")
    print ("To exit program: type '4'")
    print ("-------------------------")
    return input ("Choose your option: ")

def addmenu():
    additem = input("Name of list item: ")
    firstlist.append(additem)
    print (additem, "has been appended")

def checkmenu():
    printthis = input("What are you looking for?: ")
    if printthis in firstlist:
        print ("is in the list")
    else:
        print ("is not in the list")

def listlist():
    print (firstlist[1])

# Perform action
loop = 1
choice = 0
while loop == 1:
    choice = int(menu())
    if choice == 1:
        addmenu()
    elif choice == 2:
        checkmenu()
    elif choice == 3:
        listlist()
    elif choice == 4:
        loop = 0
    elif (choice > 4):
        print ("You made an incoorect selection")
4

4 に答える 4

1
#create empty list and define variables
firstlist = {}
additem = ""
printthis = ""
removeitem = ""
#create menu, add, remove or check name
def menu():
    print "Add to list: type '1'"
    print "Remove from the list: type '2'"
    print "Check for name: type '3'"
    print "To exit program: type '4'"
    return input("Choose your option: ")
def addmenu():
    additem = raw_input("Name of list item: ")
    firstlist[additem] = additem
    print additem, "has been appended"
def removemenu():
    removeitem = raw_input("Name of list item: ")
    firstlist.pop(removeitem)
    print removeitem, " has been removed"
def checkmenu():
    printthis = raw_input("What are you looking for?: ")
    if firstlist.has_key(printthis):
        print printthis, " is in the list"
    else:
        print printthis, " is not in the list"

# Perform action
loop = 1
choice = 0
while loop == 1:
    choice = menu()
    if choice == 1:
        addmenu()
    elif choice == 2:
        removemenu()
    elif choice == 3:
        checkmenu()
    elif choice == 4:
        loop = 0
    elif choice > 4:
        print "You made an incorrect selection"
于 2012-12-07T18:12:27.047 に答える
1

firstlist では、リストのアイデアと辞書のアイデアを混ぜ合わせています。リストが欲しいだけのようです...

firstlist = ['Joe']

また、has_key を使用する代わりに、

if printthis in firstlist:
于 2012-12-07T16:30:00.080 に答える
1

例には複数のエラーがあります。それらを見ていきましょう。まず、リストが必要な場合は、次のように定義する必要があります。

l = ['joe'] # this is a list
s = {'joe'} # this is a set

現在、Python 2 を使用しているため、常にraw_inputの代わりに使用することをお勧めしますinput。後者は取得した文字列に適用evalされるため、入力を Python コードとして評価します。通常、セキュリティ上の理由から、これは望ましくありません (これは一例であることはわかっています)。では、every を に変更しましょinputraw_input。ここでの問題は、 を使用しているときに数値を表す文字列を入力するとeval、実際には文字列が数値に変換されることです。次に、同じことを行う必要がありますが、raw_input. オプションは整数値に制限されているため、解決策はint(raw_input())です。

3 番目の問題は に関連していhas_keyます。使用されるオブジェクトがsetまたは である場合、listそのようなメソッドはhas_key定義されていません。問題のオブジェクトが の場合は機能しますが、dictそうではありません。指定されたコードに含まれているかどうかを確認する適切な方法は、something in A. を使用しているときにこれを行うと、 を使用してsetいる場合よりもはるかに効率的であり、コードは同じままです ( に変更するlist必要があることを除いて)。appendadd

今すぐコードを調整できますか?

于 2012-12-07T16:27:32.840 に答える
0

@ Ricky Mason : コードを少し修正しました。ここでは、セットやリストではなく、dict オブジェクトが必要です。辞書オブジェクト #since にはキーと値のペアがあるため、チェックメニューで探している値を簡単に取得でき、同時にリストから値を削除することもできます。これが役立つことを願っています。同じことに関する質問があれば、遠慮なく投稿してください。

次の返信のコードは次のとおりです

于 2012-12-07T17:57:42.030 に答える