Python代码跳过if和elif到els

2024-09-30 22:14:45 发布

您现在位置:Python中文网/ 问答频道 /正文

每次编译这段代码时,我希望它遍历每个“if,elif”直到找到匹配项。这样它就可以继续在屏幕上打印出给定的列表。在

但令我惊讶的是,即使你输入“步枪”,它所做的只是给你一个“else”语句。在

这是我在Stackoverflow上的第一篇文章,如果我犯了什么错误,请原谅我。在

非常感谢您的帮助,谢谢。在

rifles = ["Ak47", "M4A1", "Aug", "Famas", "Galil"]
pistols = ["Glock", "USP", "Deagle", "P250", "Five-7", "Tec-9"]
shotguns = ["Buckshot", "Benelli", "M1319", "Sawed-Off"]
snipers = ["AWP", "SSG", "Cheytac", "Barret", "M24"]
grenades = ["Smoke", "High-Explosive", "Flash", "Concussion", "Molotov", "Incendiary"]
knives = ["Bayonette", "Karambit", "Machete", "Butterfly", "Katana"]
equipment = ["Kevlar", "Helmet", "Tactical-Shield", "Boots", "Nightvision"]

raw_input = input("Search: ")


def search():

    if raw_input == "Rifles":
        for ri in rifles:

            print(ri)
            break
    elif raw_input is "Pistols":
        for pi in pistols:

            print(pi)
            break
    elif raw_input is "Shotguns":
        for sho in shotguns:

            print(sho)
            break
    elif raw_input is "Snipers":
        for sni in snipers:

            print(sni)
            break
    elif raw_input is "Grenades":
        for gre in grenades:

            print(gre)
            break
    elif raw_input is "Knives":
        for kni in knives:

            print(kni)

    elif raw_input is "Equipment":
        for equ in equipment:

            print(equ)
    else:

        print("Try again...")
    return
search()

Tags: inforinputrawifiselseprint
3条回答

您的代码可以用更简洁和“pythonic”的方式表达:

guns = {
    "rifles"   : ["Ak47", "M4A1", "Aug", "Famas", "Galil"],
    "pistols"  : ["Glock", "USP", "Deagle", "P250", "Five-7", "Tec-9"],
    "shotguns" : ["Buckshot", "Benelli", "M1319", "Sawed-Off"],
    "snipers"  : ["AWP", "SSG", "Cheytac", "Barret", "M24"],
    "grenades" : ["Smoke", "High-Explosive", "Flash", "Concussion", "Molotov", "Incendiary"],
    "knives"   : ["Bayonette", "Karambit", "Machete", "Butterfly", "Katana"],
    "equipment": ["Kevlar", "Helmet", "Tactical-Shield", "Boots", "Nightvision"],
}

gun = raw_input("Search: ")
gun = gun.lower()

try:
    print guns[gun]
except KeyError:
    print "No gun of type %s" % gun

But to my surprise even if you input "rifles", all it does is give you the "else" statement.

您的代码检查"Rifles",而不是{}。如果希望两者比较相等,则需要将字母大小写规范化,例如,如下所示:

if raw_input.lower() == "rifles":
    for ri in rifles:
        ...

在只打印一个元素之后,就断开了每个循环。在

if raw_input == "Rifles":
    for ri in rifles:
        print(ri)
        break

你真的不需要休息,所以当你输入“来福枪”的时候,把它去掉

相关问题 更多 >