繁体   English   中英

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

[英]error in Python: Global name not defined

我不断收到错误全局名称未定义的“ 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()

调用generate_numbers()时,您尚未分配变量。 此外,您的return陈述并没有您所想的那样。

相反,执行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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM