簡體   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