如果等于对字典的陈述?

时间:2017-07-24 01:08:25

标签: python

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

谢谢!

4 个答案:

答案 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