【问题标题】:Function does not deliver the desired values in python函数未在 python 中提供所需的值
【发布时间】:2016-11-29 21:21:20
【问题描述】:

我正在尝试使用以下两个功能:

def func1():

    print('blahblah') 
    func2()

def func2():
    check = 0
    while check < 1:

        first = input('Integer or pass ')
        if first == 'pass':
            first = 0
            func1()
            break
        else:
            first = int(first)

        second = input('Integer or pass')
        if second == 'pass':
            second = 0
            func1()
            break
        else:
            second = int(second)

        third = input('Integer or pass' )
        if third == 'pass':
            third = 0
            func1()
            break
        else:
            third = int(third)        
        check = 1
  return first, second, third

一旦输入“pass”,func2 将返回 None 而不是输入。我做错了什么?

编辑:无论输入多少次“通过”,结果都应该是 3 个整数。 更改缩进后,我收到以下错误:UnboundLocalError: local variable 'second' referenced before assignment(以防我从 pass 开始)

为了澄清:func2 要求输入,如果输入是“通过”,则调用 func1。 在 print func1 再次调用 func2 之后。重复此过程,直到输入 3 个整数。他们的值最终会返回。

【问题讨论】:

  • 缩进错误。尝试将最后两行移出 while 循环。
  • 如果输入之一是pass,函数应该返回什么?
  • 如果你输入 pass,它会调用 func1,然后再从头开始调用 func2。最后只返回整数
  • 缩进导致另一个错误(请参阅我的评论以回答下面的@Jarvis

标签: function python-3.x


【解决方案1】:

你的缩进是错误的。您需要将最后一条语句return first, second, third 移动一个标签。

【讨论】:

  • 我这样做了,但我得到了:UnboundLocalError: local variable 'second' referenced before assignment(以防我从 pass 开始)
  • @Al_Iskander :在 while 循环之外声明变量 firstsecondthirdfirst, second, third = None, None, None
  • 这仍然不起作用。如果我输入 'pass', 4, 5, 6 则返回 (0, None, None)。我真的不明白这个问题。这一切看起来一致......
  • 请在此处找到代码:ideone.com/v8q7kD,它为我提供了正确的输出。
  • 您需要每次都返回值,因为您没有在函数中传递参数,这就是它不能更早工作的原因。如果你也赞成这个答案,我会很高兴。 :) @Al_Iskander
猜你喜欢
  • 2021-06-05
  • 1970-01-01
  • 2023-03-12
  • 2015-01-27
  • 1970-01-01
  • 1970-01-01
  • 2019-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多