0

私はPythonとプログラミング全般に不慣れです。プログラムで多くの構文エラーを受け取りました。ほとんどがインデックス エラーです。今実行すると、次のようになります。

"Traceback (most recent call last):
  File "C:\Python33\HW3 playing around.py", line 133, in <module>
    Main()
  File "C:\Python33\HW3 playing around.py", line 32, in Main
    EmployeeNumbers()
  File "C:\Python33\HW3 playing around.py", line 69, in EmployeeNumbers
    Sal[Index] = float(input("Enter Employee salary here: "))
IndexError: list assignment index out of range"

このエラーと、このプログラムにある他の多くのエラーの両方を解決する方法がわかりません。助けていただければ幸いです。

-ジェイコブ

# Description: This program will Calculate the Average, Maximum, and Minimum Salaries of employees

#Declare Variables
EmpNum = 0
SalAVG = 0
Index = 0
SalTot = 0

# Start Main
def Main():

# Get Number of employees
    EmpNum = int(input("Enter the number of employee's here: "))
    if EmpNum <=0:
            print("Please enter positive number")

    while Index < EmpNum:

        # Call EmployeeNames
        global Name
        global Index
        global SalTot
        Name = [Index]
        EmployeeNames()

        # Call EmployeeNumbers
        global Sal
        Sal = [Index]
        EmployeeNumbers()

        # Calculate SalTot
        SalTot = SalTot + Sal[Index]

        # Increase Index
        Index = Index + 1

    # Calculate and output AVG
    SalAVG = SalTot / Index
    print("The average salary is $", SalAVG)

    # Call and output Maximum
    Maximum()
    print("The highest paid employee is ", EmpName, " With a salary of $")

    # Call and output Minimum
    global Temp
    global Switch
    Minimum
    print("The Lowest paid employee is ", EmpName, " With a salary of $")

# Arrays

# EmployeeNames array
def EmployeeNames():
    # Bind global parts
    global Name
    global Index
    # Run EmployeeNames
    Name[EmpNum] = str(input("Enter employee name here: "))

# EmployeeNumbers Array
def EmployeeNumbers():
    #Bind Global parts
    global Sal
    #Run EmployeeNumbers
    Sal[Index] = float(input("Enter Employee salary here: "))
    if Sal[EmpNum] > 200000:
        print("Please enter lower salary")
        Sal[EmpNum] = float(input("Enter Employee salary here: "))
    if Sal[EmpNum] < 0:
        print("Please enter positive number")
        Sal[EmpNum] = float(input("Enter Employee salary here: "))

# Maximum array
def Maximum():
    # Bind global parts
    global Temp
    global Switch
    global Name
    Index = 1
    Temp = 0
    Switch = 1
    while Switch > 0:
        Index = 1
        if Sal[Index] > Sal[Index + 1]:
            # Call NameSwitch
            global TempName
            global Name
            NameSwitch()
            Temp = Sal[Index]
            Sal[Index] = Sal[Index + 1]
            Sal[Index + 1] = Temp
            Switch = Switch + 1
            Index = Index + 1
        Switch = 1

# Minimum array
def Minimum():
    # Bind global parts
    global Temp
    global Switch
    global Name
    Index = 1
    Temp = 0
    Switch = 1
    while Switch > 0:
        Index = 1
        if Sal[Index] < Sal[Index + 1]:
            # Call NameSwitch
            global TempName
            global Name
            NameSwitch()
            Temp = Sal[Index]
            Sal[Index] = Sal[Index + 1]
            Sal[Index + 1] = Temp
            Switch = Switch + 1
            Index = Index + 1
        Switch = 1

# NameSwitch array
def NameSwitch():
    #Bind global parts
    global TempName
    global Name
    TempName = ""
    TempName = Name[Index]
    Name[Index] = Name[Index + 1]
    Name[Index + 1] = TempName

Main()
4

2 に答える 2

1

コードを修正するつもりはありませんが、問題は次のように単純化できます。

>>> some_list = []
>>> some_list[0] = "Hello World"
IndexError: list assignment index out of range

これを修正するには、初期サイズでリストを開始する必要があります。

>>> some_list = [None]
>>> some_list[0] = "Hello World"

または、空のリストに追加します。

>>> some_list = []
>>> some_list.append("Hello World")
于 2013-04-27T22:16:16.607 に答える
0

あなたの主な問題は、グローバル変数の使用に起因します。グローバル変数を作成する代わりに、次のように変数を引数として関数を定義します。

def Maximum(Temp,Switch,Name):

次に、このように関数を呼び出します

Maximum(Temp,Switch,Name)

そうすれば、関数を定義するときに関数が必要とするすべてを追跡できます。

エラーに戻りますが、問題は Index が関数で定義されていないことです。次のように関数ヘッダーを再作成します。

def EmployeeNumbers(sal,index):

主に、次のように呼び出します。

EmployeeNumbers(sal, index)

最後に、すべての変数を main 内で定義して、呼び出し時に main に渡す必要がないようにします。

于 2013-04-27T22:16:21.817 に答える