![](/img/trans.png)
[英]Can I use if-else statement nested in for loop on an Array in Python
[英]Why can I not “exit” my nested if else statement (Python)?
我試圖打破 function 中的 if 語句,但它的行為不像我預期的那樣。 我正在關注上一個 SO 問題的答案, 如何退出 if 子句,特別是評分最高的答案。
這是代碼:
import random
def logic_function():
if 1 == 0:
random_number = random.randint(10, 20)
return random_number
return
def number_function(foo):
if foo == 1:
number = logic_function()
print(number)
elif foo == 2:
number = 2
print(number)
else:
print('Nothing will happen')
print(number_function(1))
我的期望:
我有一個 function, number_function
,其中輸入了一個數字作為參數。 如果參數為 1,則生成的數字使用名為logic_function
的 function 生成 10 到 20 之間的隨機數,如果1 == 0
。 1 將不等於 0,因此我希望調用logic_function
末尾的 return 並將 go 放入number_function
中的外部 if else 語句,特別是打印Nothing Will Happen
末尾的else
語句。
當前 output for print(number_function(1))
是:
None
None
我希望它是:
Nothing Will Happen
我也很好奇為什么要打印第二個None
。 讓我知道是否需要更多說明。
你的假設是錯誤的。 首先 function logic_function
將始終返回None
。 由於1 == 0
始終為False
,您可以將其簡化為:
def logic_function():
return
其次,如果你有一個if-elif-else
結構,你總是會遇到一個單一的分支,即你不會執行if
部分中的語句和else
部分中的語句。 那是不可能的。
您的程序打印None
兩次,因為您在if
分支內有一個print
,而在整個if-elif-else
構造之后有一個打印。
由於您似乎不了解基本的 python 概念,我建議您制作一些關於它的教程,例如這個
def logic_function():
return
def number_function(foo):
if foo == 1:
number = logic_function()
print(number)
else:
print('Nothing will happen')
print(number_function(1))
我刪除了一些不必要的代碼。
您的number_function
不返回任何內容。 因此,如果您打印它,它將是None
。
您為 function 提供 1。因此您的logic_function
將被執行。 那 function 返回None
。 您將其保存在變量number
中,然后打印。
因此,您的代碼打印None
兩次是合乎邏輯的。 它不會打印Nothing Will Happen
因為條件foo == 1
評估為True
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.