继续得到同样的错误&引用;无效语法";对Python编程非常陌生

继续得到同样的错误&引用;无效语法";对Python编程非常陌生,python,syntax,menu,Python,Syntax,Menu,以下是出现问题的代码: elif answer == 2: students = ["Jonny Butler", "Harry Tennent", "Rashid Talha"] if raw_input("Which student are you looking for?") == students[0]: print "Jonny Butler," " Age: 15,"" Medical Condition: Asthma"

以下是出现问题的代码:

elif answer == 2:
        students = ["Jonny Butler", "Harry Tennent", "Rashid Talha"]
        if raw_input("Which student are you looking for?") == students[0]:
            print "Jonny Butler," " Age: 15,"" Medical Condition: Asthma"
            elif raw_input("Which student are you looking for?") == students[1]:
                print "Harry Tennent, " "Age: 14, " "Medical Condition: None"
            elif raw_input("Which student are you looking for?") == students[2]:
                print "Rashid Talha, " "Age: 16, " "Medical Condition: None"
            else:
                print "Sorry, we don\'t appear to have that student on out database!"
错误总是说“第30行”的语法无效:

File "<stdin>", line 30 elif answer == 2: ^ SyntaxError: invalid syntax Unknown error
文件“”,第30行elif answer==2:^SyntaxError:无效语法未知错误

任何帮助都会很好,我对Python非常陌生。

如果
之后的
elif
语句没有正确缩进。您可能只需要请求用户输入一次:

elif answer == 2:
        students = ["Jonny Butler", "Harry Tennent", "Rashid Talha"]
        inp = raw_input("Which student are you looking for?")
        if inp == students[0]:
            print "Jonny Butler," " Age: 15,"" Medical Condition: Asthma"
        elif inp == students[1]:
            print "Harry Tennent, " "Age: 14, " "Medical Condition: None"
        elif inp == students[2]:
            print "Rashid Talha, " "Age: 16, " "Medical Condition: None"
        else:
            print "Sorry, we don\'t appear to have that student on out database!"

如果您使用字典,这将变得更加有效:

elif answer == 2:
    students = {"Jonny Butler": {"Age": 15, "Condition": "Asthma"}, 
                "Harry Tennent": {"Age": 14, "Condition": None},
                "Rashid Talha": {"Age": 16, "Condition": None}}
    name = raw_input("Which student are you looking for?")
    if name in students:
        details = students[name]
        print "{0}, Age: {1[Age]}, Medical Condition: {1[Condition]}".format(name, details)
    else:
        print "Sorry, we don't appear to have that student on our database!"

重复代码的减少使您犯错误的可能性大大降低(就像前面在每个
elif
上请求输入一样)。将数据(
students
)与显示器(
print
)分离也意味着您可以更轻松地在其他地方重复使用数据。

这是错误:文件“”,第30行elif ANSULT==2:^SyntaxError:无效语法未知错误。您的代码将询问用户的次数超过它应该询问的次数。“你在找谁?不是第一个男人。你在找谁?不是第二个男人。你在找谁?……”一直到找到匹配的人。这非常需要一本字典
患者={“Jonny Butler”:{“年龄”:15,“医疗状况”:“哮喘”},…
,然后,您可以通过姓名轻松获取患者的详细信息:
如果患者中的姓名:details=patients[name]
@jornsharpe,您应该对此做出回答。看到另一种方法总是让人耳目一新:)@kray89好的,完成了!仔细想想,你仍然会查找一个值两次。也许通过一个
try
/
除了KeyError
语句,可以进一步减少操作的数量?如果我错了,请纠正我。虽然这可能超出范围,因为OP对python来说是非常新的,可能还没有准备好进行异常处理。它可能效率稍低,但这不是一个大问题,正如您所说,异常处理可能太多、太快。我用来测试这一点的在线解释器总是失败,即使名称在字典中。如果我修改为将typecast转换为string,它会工作;如果我不这样做,但让它在检查之前打印名称,它也会工作。不确定是在线翻译出了问题,还是需要稍加改进?我现在无法在一个像样的IDE中测试它。()---没关系,我刚和另一个在线解释器核对过,它运行得很好。我发现,有些在线解释器有时无法执行简单的代码,而另一些解释器运行得很好。喜怒无常的。。。