我的python程序中的逻辑似乎不起作用

时间:2018-07-07 20:53:00

标签: python python-3.x

好的,所以我是python的新手,我在python中遇到了一些逻辑问题。我想编写一段代码来从字典中读取信息,然后在输入关键字时显示键和值在用户输入中注册。 到目前为止,这是我的代码。...由于某种原因,仅关键字“ mama”似乎可以工作。.它显示键“ mama”的值和键“ tata”的值 最后的代码:

imena_i_rodjendani={'mama':'1-2-1981','lovro':'3-12-2004','tata':'1-5-1982'}
ime=str(input("ime: "))

if ime==str('mama'):
    print(imena_i_rodjendani.get('mama'))
    if ime==str('lovro'):
        print(imena_i_rodjendani.get('lovro'))
    else:
        print(imena_i_rodjendani.get('tata'))

除输入'mama'以外的所有其他输入似乎都没有废除我所写的逻辑,它们只是在没有任何错误的情况下结束了程序。 附言告诉我我使用该网站的方式有误还是以错误的方式提出问题。感谢任何提前阅读此帖子的人!

2 个答案:

答案 0 :(得分:0)

您应该使用elif将其他两个测试置于与'mama'的测试相同的级别;否则,ime必须首先'mama'才能进行'lovro'的测试,这是永远不会发生的。

imena_i_rodjendani={'mama':'1-2-1981','lovro':'3-12-2004','tata':'1-5-1982'}
ime=str(input("ime: "))

if ime==str('mama'):
    print(imena_i_rodjendani.get('mama'))
elif ime==str('lovro'):
    print(imena_i_rodjendani.get('lovro'))
else:
    print(imena_i_rodjendani.get('tata'))

答案 1 :(得分:0)

Python使用空格分隔结构。您的缩进不正确。另外,您可能希望使用关键字elif。试试这个:

imena_i_rodjendani={'mama':'1-2-1981','lovro':'3-12-2004','tata':'1-5-1982'}
ime=str(input("ime: "))

if ime==str('mama'):
    print(imena_i_rodjendani.get('mama'))
elif ime==str('lovro'):
    print(imena_i_rodjendani.get('lovro'))
else:
    print(imena_i_rodjendani.get('tata'))

编辑: 您可能会考虑采用其他更健壮的方法来解决问题。首先要注意的是,input()已经返回了一个字符串,因此无需强制转换。其次,您可能想利用字典的功能,而不是为每个选项硬编码一堆逻辑。 例如:

imena_i_rodjendani={'mama':'1-2-1981','lovro':'3-12-2004','tata':'1-5-1982'}
ime=input("ime: ")

if ime in imena_i_rodjendani:
    print(imena_i_rodjendani[ime])
else:
    print('ime not found!')

这将处理用户未输入已知值的情况,并允许您向字典中添加新值,而不必为每个条件显式编写其他条件。