我是一名编程初学者,这是我的第一个问题,所以如果我有任何错误,请原谅我,但这是我的问题:
我的任务是用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”
答案 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”