Python函数问题

时间:2015-12-04 09:50:18

标签: python function

我写了两个函数。第一个,当被叫时检查数字是否是三位数,第二个是检查数字是偶数还是奇数:

def even(n):
    if n%2==0:
        print('number {} is even'.format(n))
    else:
        print('number {} is not even'.format(n))
        return

def main(n):
    kraj=True
    while(kraj):
        a=int(input('three-digit number pls: '))
        if (a>99 and a<1000):
            kraj=False
            return True
        else:
            print('I said three-digit number!! ::')
            return False
main(0)

我的问题是,当我调用even之类的even(a)函数时,它会给我一个错误,指出a未定义。

2 个答案:

答案 0 :(得分:1)

  1. 您必须返回a的值,以便在其他地方使用它
  2. 你还有一个while并在if和else中返回。
    因此,您不需要while循环。或者您希望用户重新输入错误,然后您必须摆脱其他地方的return
  3. 您应该为您的函数提供更有意义的名称,例如read_threedigit_number
  4. 您通常不会在ifwhile
  5. 周围放置禁忌症

    改进代码

    def read_threedigit_number(n):
        while True:
            a=int(input('three-digit number pls: '))
            if a>99 and a<1000:
                return a
            else:
                print('I said three-digit number!')
    
    
    a = read_threedigit_number(0)
    even(a)
    

答案 1 :(得分:1)

您必须在a函数中返回main()并将其传递给even函数。

def main(n):
    kraj=True
    while(kraj):
        a=int(input('three-digit number pls: '))
        if (a>99 and a<1000):
            kraj=False
            return a
        else:
            print('I said three-digit number!! ::')
            return False

a = main(0)
even(a)