Python中的错误:未定义全局名称

时间:2015-07-18 17:08:27

标签: python

我不断收到错误全局名称未定义“sizeGreater”。

这是我迄今为止提出的程序:

import random

def main():
    another = 'y'

    while another == 'y' or another == 'Y':
        again = raw_input("Would you like to generate 1000 random numbers? (Enter y for yes and n for no)")

        generate_numbers()
        difference_numbers(sizeGreater, sizeLess)


def generate_numbers(): 
    numbers = []
    for value in range (1000):
       numbers.append(random.randint(1,100))
    print (numbers)

    numbers2 = [i for i in numbers if i>=50]

    sizeGreater = len(numbers2)
    print ("The numbers at or above fifty are:", sizeGreater)

    numbers3 = [i for i in numbers if i <=50]

    sizeLess = len(numbers3)
    print ("The numbers at or below fifty are:", sizeLess)

    return sizeLess
    return sizeGreater

def difference_numbers(sizeGreater, sizeLess):

    total = sizeGreater - sizeLess
    print total


main()

1 个答案:

答案 0 :(得分:3)

致电generate_numbers()时,您尚未分配变量。此外,您的退货声明并不符合您的预期。

相反,请执行sizeLess, sizeGreater = generate_numbers()并使generate_numbers()返回return (sizeLess, sizeGreater)(元组)。

因此,现在通过再次设置来解压缩从generate_number()返回的元组。然后,您可以使用新分配的变量调用difference_numbers

import random

def main():
    another = 'y'

    while another == 'y' or another == 'Y':
        again = raw_input("Would you like to generate 1000 random numbers? (Enter y for yes and n for no)")

        sizeLess, sizeGreater = generate_numbers() #unpack the tuple
        difference_numbers(sizeGreater, sizeLess)


def generate_numbers(): 
    numbers = []
    for value in range (1000):
       numbers.append(random.randint(1,100))
    print (numbers)

    numbers2 = [i for i in numbers if i>=50]

    sizeGreater = len(numbers2)
    print ("The numbers at or above fifty are:", sizeGreater)

    numbers3 = [i for i in numbers if i <=50]

    sizeLess = len(numbers3)
    print ("The numbers at or below fifty are:", sizeLess)

    return (sizeLess, sizeGreater) #return a tuple

def difference_numbers(sizeGreater, sizeLess):

    total = sizeGreater - sizeLess
    print total


main()