我有一个程序的功能正确,但我必须添加错误检查,现在我遇到了一个问题。问题是,如果您为工人名称键入一个数字,那么在接下来键入一个名称时,一旦您遍历所有输入字段,它就会打印出“生产工人信息”两次。我该如何解决这个问题
整个计划:
class Employee(object):
def __init__(self, name, id_number):
self.id_number = id_number
self.name = name
class Worker(Employee):
def __init__(self, name, id_number, shift_number, pay_rate):
#call superclass __init__ method
Employee.__init__(self, name, id_number)
#initialize shift_number and pay_rate attributes
self.shift_number = shift_number
self.pay_rate = pay_rate
def main():
#variables
worker_name= " "
worker_id = " "
worker_shift = 0
worker_pay = 0.00
#get data attributes
while 1:
try:
worker_name = input("Enter the worker name: ")
print()
if not worker_name.isalpha():
print("Only letters are allowed!")
print()
main()
break
worker_id = int(input("Enter the ID number: "))
print()
worker_shift = int(input("Enter the shift number: "))
print()
worker_pay = float(input("Enter the hourly pay rate: "))
print()
break
except Exception as e:
print("Invalid choice! try again! " + str(e))
print()
#create an instance of Worker
Employee.worker = worker_name, worker_id, worker_shift, worker_pay
if not worker_name.isalpha():
pass
#display information
print ("Production worker information ")
print("---------------------------------")
print()
print ("Name: ", worker_name)
print()
print ("ID number: ", worker_id)
print()
print ("Shift: ", worker_shift)
print()
print ("Hourly Pay Rate: $ " + format(worker_pay, ",.2f"))
main()
您正在递归调用
main()
,而不是允许while 1:
循环工作我想你的意思是:
continue
将跳回while 1:
如果输入失败,使用循环重试输入(而不是递归调用)。您还可以利用
try/catch
将代码缩短一点,只需try
完成创建worker
所需的全部工作,然后您就不需要每次单独声明和检查每个变量您不应该再次调用自身内部的
main()
,请使用try/except
系统相关问题 更多 >
编程相关推荐