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之前声明变量并对其进行初始化,则可以正常工作。
为什么它不能与函数内部的全局声明一起使用?
答案 0 :(得分:1)
您需要定义contorPositiv
。我认为,呼吁全球人士在这里可能会是一个红鲱鱼。假设这些变量是全局变量,那么您调用contorPozitiv += 1
等效于contorPozitiv = contorPozitiv + 1
。该程序不知道contorPozitiv
的值是什么,因此会崩溃。
在所有导入之后用简单的contorPozitiv = 0
初始化值可能会解决此问题。所有其他变量都一样。
答案 1 :(得分:1)
必须定义一个变量才能使用。
将此添加到您的for循环上方。
contorPozitiv = 0
contorNegativ = 0
contorZero = 0