更好的方式,写一个Long"if"语句?

And*_*dre 5 python if-statement

你好,这可能是一个非常基本的问题,但因为我是编程和python的新手,我真的想学习,我问.

我正在制作一个程序,从用户那里获取他所拥有的"扑克牌"套装的输入.该计划只接受正确的诉讼.

例如;

钻石,心形,俱乐部,黑桃

如果用户输入任何其他内容,例如"三角形",程序将返回"输入错误".

这是我到目前为止所得到的:

if suit == "Diamonds":
    return "Accepted"
if suit == "Hearts":
    return "Accepted"
if suit == "Clubs":
    return "Accepted"
if suit == "Spades":
    return "Accepted"
else:
    return "Wrong input"
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有更好的方式来写这个,而不是通过这个繁琐的过程为每个套装制作一个全新的"if"声明.

hlt*_*hlt 8

您可以使用in以检查是否suit在列表,元组或一组接受的套装中:

if suit in {"Diamonds", "Hearts", "Clubs", "Spades"}:
    return "Accepted"
else:
    return "Wrong input"
Run Code Online (Sandbox Code Playgroud)

您也可以使用tuple(with (...)),list([...])或frozenset代替set({...}).


Pad*_*ham 7

if suit in ("Diamonds","Hearts","Clubs","Spades"):
    return "Accepted"
else:
    return "Wrong input"
Run Code Online (Sandbox Code Playgroud)

只是in用来检查成员身份,如果suit不在元组中,你的else子句将被执行.

会员运营商

您还可以使用not in以下方式反转逻辑:

if suit not in ("Diamonds","Hearts","Clubs","Spades"):
    return "Wrong input"
else:
    return "Accepted"
Run Code Online (Sandbox Code Playgroud)

如果您还要检查值:

if suit  in ("Diamonds","Hearts","Clubs","Spades") and value in ("Ace","king","Queen"....):
    return "Accepted"
else:
    return "Wrong input"
Run Code Online (Sandbox Code Playgroud)

使用集合 {"Diamonds","Hearts","Clubs","Spades"}是检查成员资格的更有效方法