Evening Guys,
Python的新手,想知道是否有人可以快速查看我正在开发的POS系统的开头。
我希望员工输入他们的身份证号码来操作系统。所以我将员工姓名和号码放在字典中。并尝试使用If / Else函数将输入与Employee ID进行匹配。非常感谢任何指导。
employee_IDs = {'Sam': 407427,
'Bart': 101026,
'Mike': 445002,
}
employee_number = input('Employee ID: ')
if employee_number != employee_IDs:
print("Invalid employee ID")
else:
name = input('Enter Your Name: ')
address = input('Enter Your Address: ')
phone_number = input('Enter Your Phone Number: ')
print('Hello', name,'!!! What would you like to order?')
print("{:" "^80}".format(""))
谢谢!
答案 0 :(得分:5)
您的代码中有几个基本问题需要解决。
这里要实现的第一件事是input()
函数将始终返回一个字符串。考虑到这一点,如果您实际上将字符串与整数进行比较(字典中有一个整数),您将永远不会通过相等性检查。
要注意的第二个问题是,您从未实际正确查看您要验证的数据是 您的词典中的。
执行此操作时:
employee_number != employee_IDs
您没有执行正确的收容检查,以查看您的数据是否在字典中。
如果您只想验证employee_id 有效,那么您需要检查字典的值。这可以通过针对字典调用values
方法,然后使用包含检查in
来完成:
if employee_id not in employee_IDs.values()
然而,这不会奏效!由于employee_id
是字符串,并且您的值都是整数,因此您需要在int
上调用employee_id
来实际比较正确的类型:
if int(employee_id) not in employee_IDs.values()
我建议您阅读dictionary文档,并花些时间浏览Python Tutorial的一些相关部分,这将极大地帮助您学习并解决代码中的一些问题。
答案 1 :(得分:0)
您正在将字符串与dict进行比较,该字典始终会失败。如果要测试输入是否与dict中与名称关联的数字之一匹配,则测试应该类似于if int(employee_number) in employee_IDs.values()
。
答案 2 :(得分:0)
而不是
if employee_number != employee_IDs:
你想拥有
if int(employee_number) not in employee_IDs.values():
答案 3 :(得分:0)
您可以尝试这样:
employee_IDs = {'Sam': 407427,
'Bart': 101026,
'Mike': 445002,
}
employee_number = input('Employee ID: ')
try:
if int(employee_number) not in employee_IDs.values():
print("Invalid employee ID")
else:
name = input('Enter Your Name: ')
address = input('Enter Your Address: ')
phone_number = input('Enter Your Phone Number: ')
print('Hello', name,'!!! What would you like to order?')
print("{:" "^80}".format(""))
finally:
print("Invalid employee ID")
样本日志如下:
Employee ID: 407427
Enter Your Name: 21
Enter Your Address: 13212
Enter Your Phone Number: 54564
Hello 21 !!! What would you like to order?
Process finished with exit code 0