Python短语'if-else'的陈述

时间:2011-12-14 06:34:44

标签: python if-statement

C ++中是否存在以下if - else语句的Python版本或类似语句:

  int t = 0;
  int m = t==0?100:5;

6 个答案:

答案 0 :(得分:47)

m = 100 if t == 0 else 5 # Requires Python version >= 2.5
m = (5, 100)[t == 0]     # Or [5, 7][t == 0]

以上两行都会产生相同的结果。

第一行使用Python版本的“三元运算符”,自2.5版开始提供,但Python文档将其称为Conditional Expressions

第二行是一个小小的黑客,以许多(所有重要的)方式提供内联功能,相当于许多其他语言中的?:(例如CC++


Python - 5.11. Conditional Expressions

的文档

答案 1 :(得分:14)

您指的构造称为ternary operator。 Python有一个版本(从版本2.5开始),如下所示:

x if a > b else y

答案 2 :(得分:7)

t = 0
if t == 0:
  m = 100
else:
  m = 5
  

美丽胜过丑陋   明确比隐含更好   简单比复杂更好。

来自PEP 20

或者,如果你真的,真的必须(在Python中工作> = 2.5):

t = 0
m = 100 if t == 0 else 5

答案 3 :(得分:3)

还有:

m = t==0 and 100 or 5

由于0是假值,我们可以写:

m = t and 5 or 100

这相当于第一个。

答案 4 :(得分:0)

我找到了关键字pass-in中的第一个简写形式。下面的示例显示了它在tkinter网格几何管理器中的使用。

class Application(Frame):
    def rcExpansion(self, rows, cols, r_sticky, c_sticky):
        for r in range(rows):
            self.rowconfigure(r, weight=r)
            b = Button(self, text = f"Row {r}", bg=next(self.colors))
            b.grid(row=r, column= 0, sticky = N+S+E+W if r_sticky == True else None)
        for c in range(cols):
            self.columnconfigure(c, weight=c)
            b = Button(self, text = f"Column {c}", bg=next(self.colors))
            b.grid(row=rows, column = c, sticky = N+S+E+W if c_sticky == True else None)

app = Application(root=Tk())
app.rcExpansion(3, 4, True, False)

答案 5 :(得分:0)

用于打印语句

a = input()

b = input()

print(a) if a > b else print(b)