您好,这可能是一个非常基本的问题,但因为我是编程和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"
我的问题是,有没有更好的方式来写这个,而不是通过这个繁琐的过程为每个套装制作一个全新的“if”声明。
答案 0 :(得分:8)
您可以使用in
检查suit
是否在列表,元组或一组接受的诉讼中:
if suit in {"Diamonds", "Hearts", "Clubs", "Spades"}:
return "Accepted"
else:
return "Wrong input"
您还可以使用tuple
((...)
),list
([...]
)或frozenset
代替set
({ {1}})。
答案 1 :(得分:7)
if suit in ("Diamonds","Hearts","Clubs","Spades"):
return "Accepted"
else:
return "Wrong input"
只需使用in
检查成员资格,如果元组中没有suit
,则会执行else
子句。
您还可以使用not in
if suit not in ("Diamonds","Hearts","Clubs","Spades"):
return "Wrong input"
else:
return "Accepted"
如果您还要检查值:
if suit in ("Diamonds","Hearts","Clubs","Spades") and value in ("Ace","king","Queen"....):
return "Accepted"
else:
return "Wrong input"
使用set {"Diamonds","Hearts","Clubs","Spades"}
是检查会员资格的更有效方式
答案 2 :(得分:2)
您可以使用in
运算符:
accepted = ['Diamonds', 'Hearts', 'Clubs', 'Spades']
if suit in accepted:
return "accepted"
else:
return "wrong input"
答案 3 :(得分:2)
我不知道这是否符合您的需求,但有时使用字典的替代方法可能有助于if ... elif
的长序列:
states = {"Diamonds": "accepted",
"Hearts": "accepted",
"Clubs": "accepted",
"Spades": "accepted"}
return states.get(suit,"wrong input")