将Python代码转换为函数

时间:2017-12-15 19:17:40

标签: python function

我是Python新手,我只是在练习。我写了一些基本代码,要求用户输入数字9次,然后根据>输出True或False; 100或者< 100.

此代码可以正常工作:

list_1 = []
count = 0
while count < 10:
    text = int(input('list a number:'))
    if text < 100:
        list_1.append(True)
    else:
        list_1.append(False)

    count = count + 1
print(list_1)

现在我想将其转换为函数(使用For循环代替不同的东西)。我尝试了几个版本并且无法获得它,当我运行它时没有任何反应:

def foo():
    list_1 = []
    text = int(input('list a number:'))
    for x in range(10):
        if text > 100:
            list_1.append(True)
        else:
            list_1.append(False)
            return()

2个问题:

  1. 如何编写该函数以使其实际有用并返回True或False?

  2. 有人能告诉我一个基本的例子,说明在这个例子中使用函数是否值得?我怎么能将它与第一段代码分开,以便它以不同的方式实际有用呢?

  3. 我想从编写代码片段开始,以更有效的方式组织代码

    由于

2 个答案:

答案 0 :(得分:1)

您可以使用几乎无限的方式来使用功能。您决定的主要驱动因素是您是否可以重用功能或是否简化了代码。所以从本质上讲,我可以将它构建成一个构建块是你应该问自己的问题。

因此,在您的示例中,假设您必须在几种不同的场景中进行输入,或者您必须评估多个列表并提供打印输出。

您可以根据以下内容分开:

def take_input(list):
    count = 0
    while count < 5:
        inputlist.append(int(input('list a number:')))
        count += 1

def print_output(list):
    outputlist = []
    for input in list:
        if input < 100:
            outputlist.append(True)
        else:
            outputlist.append(False)
    print(outputlist)

inputlist = []
take_input(inputlist)
print_output(inputlist)

答案 1 :(得分:1)

您的foo()返回值似乎有误。 确保从功能中返回列表。例如:

def foo():
    list_1 = []
    for x in range(10):
        text = int(input('list a number:'))#this should be inside the loop
        if text > 100:
            list_1.append(True)
        else:
            list_1.append(False)
    return(list_1) #you are passing list_1 after your for loop

bool_list = foo() #will pass return value in function
#print(list_1) this will throw an error!
print(bool_list) #bool_list was list_1 in foo()

阅读命名空间,这对理解功能至关重要。当你启动foo()时,它会运行自己的代码,但是如果你没有传递带有返回值的对象,你就不能在其他地方使用它。

对于维护良好的代码,函数是绝对必要的。无论何时重复执行操作,功能都会减少不必要的代码行。当相同的操作需要多次运行但方式略有不同时,它们还提供多功能性。例如,您可以通过foo()指定要通过for循环运行的次数来传递参数。