【问题标题】:Python 3.6 If Statement with CriteriaPython 3.6 带有条件的 If 语句
【发布时间】:2017-12-15 03:02:55
【问题描述】:

我正在尝试在 Python 3 中创建一个带有条件的经典 if 语句。我可以从这段代码中输入一个数字,但无法弄清楚为什么代码不会打印“热”或“冷”。我能做些什么来解决这个问题?我需要在此声明中添加elif 吗?

N = float(input(("Enter Number: ")))
def is_hot (N):
    if N/2>1 and N-1>1:
        print (N, "is hot")
    else:
        N/2<1 and N-1<1
        print (N, "is cold")

【问题讨论】:

  • 你能把它格式化成一个代码块吗?以纯文本形式阅读有点痛苦。
  • 看起来您需要elif 而不是else
  • 是的,它的格式不正确,但不会让您在其中包含条件语句,它只会出错@BradSolomon 说得对
  • 当 N 为 2 时呢?是“热”、“冷”还是“恰到好处”?

标签: python python-3.x function if-statement


【解决方案1】:

因为你只定义了函数is_hot(N),但你没有调用它。

【讨论】:

  • 重读这个问题,我认为这实际上是@Danielle 所问的。在你的函数之后调用is_hot(N),或者从函数中删除if语句。
【解决方案2】:

正如@Brad Solomon 在 cmets 中提到的那样。你应该使用 elif 而不是 else。

N = float(input(("Enter Number: ")))
def is_hot (N):
    if (N/2>1 and N-1>1):
        print (N, "is hot")
    elif (N/2<1 and N-1<1) :
        print (N, "is cold")
    else :
        print(N,"neither hot nor cold")

is_hot(N)

注意:- 您还可以添加一个默认条件(else 部分),它与任何一种情况都不匹配。 更新 :- 添加了 Gary 建议的函数调用

【讨论】:

    【解决方案3】:

    您需要修复您的函数,因为它看起来需要 elif ...: 而不是 else: 并且您还需要在获得输入后实际调用该函数。所以...

    def is_hot (N):
        if N/2>1 and N-1>1:      # N > 2
            print (N, "is hot")
        elif N/2<1 and N-1<1:    # N < 2
            print (N, "is cold")
        else:                    # N is 2
            print (N, "is just right!")
    n = float(input(("Enter Number: ")))
    is_hot(n)
    

    请注意,在调用 func 和定义 func 时,我在这两个地方都没有使用 N。它会起作用,但就代码可读性而言,它并不总是最好的。

    此外,最好在代码顶部列出函数。

    此外,您可以并且可能应该在函数中使用与调用代码中不同的变量名。这不是为了功能,而是为了可读性。如果有人不注意,他们可能会看到相同的名称并认为它是一个全局变量。同样,您不必使用不同的变量名,但最好使用不同的变量名。如果不出意外,函数中的变量名通常会更通用,而调用代码中的变量名会更具体。这是一个例子:

    def merge_lists(list1, list2): # generic..
        return zip(list1, list2)
    my_merged_inventory_list = merge_lists(list_of_stock_items, list_of_item_prices)
    

    【讨论】:

    • 如果 N/2 为 1 会发生什么?真的是开还是关?也许您需要一个最后的else: 声明,上面写着“恰到好处”。如果 N 为 2,那是热、冷还是恰到好处?
    • 谢谢大家的帮助!这非常有效。为什么N不能在两个地方都使用?那里的逻辑是什么?调用函数时,可以使用不同的变量吗?
    • 是的,您可以并且可能应该使用不同的变量名。不是为了功能,而是为了可读性。如果有人不注意,他们可能看起来同名并认为这是一个全局变量。同样,您不必使用不同的变量名,但最好使用不同的变量名。如果不出意外,函数中的变量名通常会更通用,而调用代码中的变量名会更具体。
    猜你喜欢
    • 2014-04-25
    • 1970-01-01
    • 2021-06-19
    • 2022-11-05
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多