簡體   English   中英

簡短的“if-else”的 Python 語句

[英]Python statement of short 'if-else'

C++ 中是否有以下if - else語句或類似語句的 Python 版本:

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

以上兩行都會導致相同的結果。

第一行使用了自 2.5 版以來可用的 Python 版本的“三元運算符”,盡管 Python 文檔將其稱為Conditional Expressions

第二行是一個小技巧,以許多(所有重要的)方式提供內聯功能,相當於在許多其他語言(例如CC++ )中找到的?:


Python文檔- 5.11。 條件表達式

您所指的構造稱為三元運算符 Python 有一個版本(從 2.5 版開始),如下所示:

x if a > b else y
t = 0
if t == 0:
  m = 100
else:
  m = 5

美麗總比丑陋好。
顯式優於隱式。
簡單勝於復雜。

來自PEP 20

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

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

還有:

m = t==0 and 100 or 5

由於 0 是一個假值,我們可以這樣寫:

m = t and 5 or 100

這相當於第一個。

我發現關鍵字傳入中的第一個速記很方便。 下面的示例顯示它在 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)

用於打印語句

a = input()

b = input()

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM