首页 文章

Python def函数在定义时打印提示消息

提问于
浏览
2

我正在使用Python 3.41 .

如果我理解了以下线程,Why is this def function not being executed in Python?正确,在Python中定义一个函数将存储该函数,除非被调用,否则不会执行它 . 我对吗?

我想搜索一个数字的除数列表,将其存储在一个元组中并将其打印出来 .

首先我写道,

if x < 0:
    print ('not positive')
else:
    div = ()
    for i in range(1, x):
        if x%i == 0:
            div = div + (i,)
    print (div)

这很有效 .

现在我想将它作为更大代码的函数 . 这是我试过的代码 .

def find_dt(x = int(input('enter a positive number '))):
    if x < 0:
        print ('not positive')
    else:
        div = ()
        for i in range(1, x):
            if x%i == 0:
                div = div + (i,)
        print (div)

当我执行它时,在程序窗口中打印函数的提示消息而不调用它 . 此外,如果我输入一个数字,它什么都不返回 . 我期待在程序窗口中没有任何明显的事情发生 .

你会详细说明发生了什么,并教我如何正确地编写它以达到我想要的目的吗?我希望我的问题很清楚 .

谢谢,

1 回答

  • 6

    你're seeing the prompt because you'在函数定义的参数中重新调用 input() - 具体来说,作为默认值,在定义时计算 .

    听起来你真正想要的是一个不带任何参数的函数,并且仅在运行时调用 input()

    def find_dt():
        x = int(input('enter a positive number: '))
    
        if x < 0:
            print ('not positive')
        ...
    

相关问题