2

間隔の問題を修正し、他のエラーを長い間修正しました。今は私がやりたいことをやっていますが、選択肢2を選択すると、従業員の記録が4回印刷されます。また、別の従業員を入力すると、最初の従業員ではなく、2番目の従業員が印刷されます。

class EmployeeClass:
def Employee(name, lastName, age, salary):
    name = name
    lastName = lastName
    age = age
    salary = salary
def displayEmployee(x):
    print("Name: " + name + ", " + lastName)
    print("Age: " + age)
    print("Salary: " + salary)

EmployeeArray = []

Continue = True
print ("Employee Information V2.0")

while Continue == True:
print ("Welcome to Employee Information")
print ("1: Add New Record")
print ("2: List Records")
print ("3: Quit")

choice = input()

if choice == "1":
    name = input ("Enter First Name: ")
    EmployeeArray.append(name)
    if name == "":
        Continue = False
        print ("Goodbye!")
        break
    lastName = input ("Enter Last Name: ")
    EmployeeArray.append(lastName)
    age = input ("Enter Age: ")
    EmployeeArray.append(age)
    salary = input ("Enter Salary: ")
    EmployeeArray.append(salary)
elif choice == "2":
    for Employee in EmployeeArray:
        EmployeeClass.displayEmployee(Employee)
        Continue = False
elif choice == "3":
    print ("Bye!")
    break
else:
    print ("Please choose a valid option")
    print ("\n")
4

4 に答える 4

5

エラーメッセージには、この問題が発生している行番号が示されます。基本的に、タブと空白スペースを混在させているため、インデントにはそのうちの1つだけを一貫して使用する必要があります。

PEP8-Pythonのスタイルガイドでは、スペースの使用と注意事項 を推奨しています。

-tオプションを指定してPythonコマンドラインインタープリターを呼び出すと、タブとスペースが不正に混在するコードに関する警告が発行されます。-ttを使用すると、これらの警告はエラーになります。これらのオプションを強くお勧めします!

ソースを簡単に調べると、printステートメントの前にタブがあるようです-それらを空白に置き換えてください(これは、上記の投稿で正しくレンダリングされない理由でもあります)

while Continue == True:
    print ("Welcome to Employee Information")
    print ("1: Add New Record")
    print ("2: List Records")
    print ("3: Quit")

他の場所があるかもしれません、あなたは注意深くチェックしなければならないでしょう。実際、投稿内でコードが正しくインデントされていない場合は、一見の価値があると思います。

このような問題を回避するには、同じ文字で一貫してインデントするエディターまたはIDEを使用するのが最善です。

于 2012-08-14T14:36:41.223 に答える
1

最初の行の後にすべてをインデントする必要があるようです。

IE

class Employee:
    empCount = 0
    def _init_(self, name, lastName, age, salary):
    ...
于 2012-08-14T14:37:29.533 に答える
0

Pythonでタブを使用しないでください。使用できますが、従来型ではありません。PEP8の規則では、4つのスペースを使用します。

于 2012-08-14T14:53:43.010 に答える
0

問題は、タブ文字('\ t')を使用して一部の行をインデントし、4つのスペース('')を使用して他の行をインデントしていることです。

タブは必ずしも特定の数のスペースを意味するわけではないため、これは問題になる可能性があります。さまざまな編集者が、タブを2、4、または8スペース(または実際には好きな数のスペース)に相当すると解釈する場合がありますが、これらは最も一般的な選択肢)。スペースのみ、またはタブのみを使用してインデントする場合、それは明確であり、Pythonは満足しています。混合物を使用する場合、タブ文字が等しいスペースの数によってコードの意味が異なります。そのため、推測する代わりに、奇妙なエラーが発生する可能性があり、Pythonは表示される警告メッセージで停止します。

当面の解決策は、検索と置換を使用して、すべてのタブ文字を4つのスペースに置き換えることです。長期的な解決策は、Tabキーを押すたびに自動的に4つのスペースを挿入するテキストエディタを使用することです。(Windowsでは、私はNotepad ++が好きですが、他にもたくさんの良いものがあります)。

于 2012-08-14T15:07:56.197 に答える