This question already has an answer here:
Global variable is not defined - Python
                                
                                    (1个答案)
                                
                        
                                4个月前关闭。
            
                    
!/ bin / python3


import math
import os
import random
import re
import sys


# Complete the plusMinus function below.
def plusMinus(arr):
    for i in range(0,n):
        if arr[i] > 0:
            global contorPozitiv
            contorPozitiv += 1
        elif arr[i] == 0:
            global contorZero
            contorZero += 1
        else:
            global contorNegativ
            contorNegativ += 1

    print (contorPozitiv / n)
    print (contorNegativ / n)
    print (contorZero / n)

if __name__ == '__main__':
    n = int(input())

    arr = list(map(int, input().rstrip().split()))

    plusMinus(arr)



我收到此错误:

Compiler Message
Runtime Error
Error (stderr)
Traceback (most recent call last):
  File "Solution.py", line 31, in <module>
    plusMinus(arr)
  File "Solution.py", line 20, in plusMinus
    contorNegativ += 1
NameError: name 'contorNegativ' is not defined



如果我在for之前声明变量并对其进行初始化,则可以正常工作。

为什么在函数内部的全局声明中不起作用?

最佳答案

您需要定义contorPositiv。我相信对全球的呼吁可能会在这里引起麻烦。想象一下,那些变量是全局变量,那么您调用contorPozitiv += 1等效于contorPozitiv = contorPozitiv + 1。该程序不知道contorPozitiv的值是什么,因此会崩溃。

在所有导入之后使用简单的contorPozitiv = 0初始化值可能会解决此问题。所有其他变量都相同。

07-26 03:50