如何在我的for循环中修复此AttributeError问题

时间:2019-08-02 02:44:14

标签: python list loops pycharm

我是一名编程初学者,这是我的第一个问题,所以如果我有任何错误,请原谅我,但这是我的问题:

我的任务是用Python做“某种”员工管理系统,作为学校的“ OOP”作业。说明是:

1。它必须具有添加员工功能,该功能需要用户输入姓名,职位,部门以及最终员工的工资。

2。第二个选项需要计算小时数,这基本上是乘以速率*每小时

3。第三个选项要求您打印您输入的所有员工(所有内容都是循环的,因此可以有多个员工而不仅仅是一个。)

4。最后退出,它只是终止控制台。

在我在第三个选项上遇到“ AttributeError”之前,一切似乎都运行良好。而且我似乎无法弄清楚

错误是:追溯(最近一次呼叫过去):   在第58行的“ C:/Users/admin/PycharmProjects/activities/OOP.py”文件中     打印(employees.index(x),x.n,x.d,x.p,x.r) AttributeError:“ str”对象没有属性“ n”

我尝试了此循环,但正如我所说的,它给出了相同的错误:

elif ans == 3:

    for x in employees:
        print(employees.index(x), x.n, x.d, x.p, x.r)
        continue

代码相当简短,但是我遇到的麻烦是选项3。

employees = []
running = True

班级雇员:

def __init__(self, n, d, p, r):
    self.n = n
    self.d = d
    self.p = p
    self.r = r

def compute(self, h):
    return h * self.r


while running:
    print("Choose your option: ")
    print("[1] Add new employee")
    print("[2] Enter hourly of employee")
    print("[3] Show employee information")
    print("[4] Exit")

print("Enter option: ", end="")
ans = int(input())

if ans == 1:
    print("Enter employee name: ", end="")
    n = input()
    employees.append(n)
    print("Enter department: ", end="")
    d = input()
    employees.append(d)
    print("Enter position: ", end="")
    p = input()
    employees.append(p)
    print("Enter rate: ", end="")
    r = int(input())
    employees.append(r)

    employees.append(Employees(n, d, p, r))

    continue

elif ans == 2:
    e1 = Employees(n, d, p, r)
    print("Enter the index of the employee")

    y = int(input())
    print(employees[y] + " is selected")
    print("Enter the hourly of employee: ")
    z = int(input())
    print(e1.compute(r))

elif ans == 3: #Option 3

    for x in employees: #This loop seems to be the problem
        print(employees.index(x), x.n, x.d, x.p, x.r)
        continue

elif ans == 4:
    running = False

else:
    print("Invalid input, please try again: ")
    continue
break

我期望的结果是这样的:

Name: Greg
Department: IT
Position: Technician
Rate: 450

Name: Isaac
Department: HR
Position: Manager
Rate: 700

但我却收到此错误:

回溯(最近通话最近):   在第59行中的文件“ C:/Users/admin/PycharmProjects/activities/OOP.py”     打印(employees.index(x),x.n,x.d,x.p,x.r) AttributeError:“ str”对象没有属性“ n”

1 个答案:

答案 0 :(得分:0)

在代码的这一部分中,您将字符串追加到员工列表中

if ans == 1:
print("Enter employee name: ", end="")
n = input()
employees.append(n)
print("Enter department: ", end="")
d = input()
employees.append(d)
print("Enter position: ", end="")
p = input()
employees.append(p)
print("Enter rate: ", end="")
r = int(input())
employees.append(r)

employees.append(Employees(n, d, p, r))

continue

请参阅employees.append(n),它可能是一个名称(字符串)

所以当你打电话

for x in employees:

您尝试执行x.n,但附加的字符串没有属性“ n”