簡體   English   中英

為什么我不能“退出”我的嵌套 if else 語句(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.

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