为什么我会得到这个python语法索引器

为什么我会得到这个python语法索引器,python,indexing,syntax-error,Python,Indexing,Syntax Error,一般来说,我对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 Empl

一般来说,我对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"
“回溯(最近一次呼叫最后一次):
文件“C:\Python33\HW3 playing around.py”,第133行,在
Main()
文件“C:\Python33\HW3 playing-around.py”,第32行,在Main中
雇员人数()
文件“C:\Python33\HW3 playing around.py”,第69行,以EmployeeNumber表示
Sal[Index]=浮动(输入(“在此处输入员工工资:”)
索引器:列表分配索引超出范围“
我不知道如何解决这两个错误和许多其他,这一计划,任何帮助将不胜感激

-雅各布

# 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()
#说明:此程序将计算员工的平均工资、最高工资和最低工资
#声明变量
EmpNum=0
SalAVG=0
索引=0
萨尔托=0
#起动总管
def Main():
#获取员工数量
EmpNum=int(输入(“在此输入员工人数:”)
如果EmpNum 200000:
打印(“请输入较低工资”)
Sal[EmpNum]=浮动(输入(“在此处输入员工工资:”)
如果Sal[EmpNum]<0:
打印(“请输入正数”)
Sal[EmpNum]=浮动(输入(“在此处输入员工工资:”)
#最大数组
def最大值():
#绑定全局部件
全球温度
全局开关
全局名称
索引=1
温度=0
开关=1
当开关>0时:
索引=1
如果Sal[Index]>Sal[Index+1]:
#呼叫名称开关
全局临时名称
全局名称
名称开关()
温度=Sal[指数]
Sal[Index]=Sal[Index+1]
Sal[指数+1]=温度
开关=开关+1
索引=索引+1
开关=1
#最小数组
def最小值():
#绑定全局部件
全球温度
全局开关
全局名称
索引=1
温度=0
开关=1
当开关>0时:
索引=1
如果Sal[Index]
我不会修复您的代码,但您的问题可以简化为:

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

您的主要问题源于全局变量的使用。不要创建全局变量,而是使用变量作为参数定义函数,如下所示:

def Maximum(Temp,Switch,Name):
EmployeeNumbers(sal, index)
然后像这样调用函数

Maximum(Temp,Switch,Name)
这样,您可以在定义函数时跟踪函数所需的所有内容

回到您的错误,问题是函数中没有定义索引。重新创建函数头,如下所示:

def EmployeeNumbers(sal,index):
总的来说,可以这样称呼它:

def Maximum(Temp,Switch,Name):
EmployeeNumbers(sal, index)

最后,在main中定义所有变量,这样在调用main时就不需要将它们传递到main中。

老实说,您的程序有很多错误,需要很长时间才能修复,但也就是说:1)缩进在几个部分是错误的(python对此非常敏感)2)在整个过程中使用全局变量(big no no)3)变量命名不是python风格的