Kodum:Python hatası: "Küresel adı 'sayacı1' tanımlı değil"
class Persistence:
num = 0
counter1 = 0
counter2 = 0
def __init__(self, num):
self.num = num
#num = input("Enter a non-negative number:: ")
if num < 0:
raise NameError("Negative")
#test else:
#print "ok!"
num_list = []
def digitize(self, num):
num_list = []
n = str(num)
for digit in n:
num_list.append(int(digit))
return num_list
def sum_digits(self, num):
the_list = self.digitize(num)
the_sum = 0
for digit in the_list:
the_sum = the_sum + digit
return the_sum
def times_digits(self, num):
the_list = self.digitize(num)
the_product = 0
for digit in the_list:
the_product = the_product * digit
return the_product
def additive(self, num):
global counter1
sum1 = self.sum_digits(num)
list1 = []
list1 = self.digitize(sum1)
if list1.__len__() > 1:
global counter1
counter1 = counter1 + 1
self.additive(sum1)
return sum1, counter1
def multiplicative(self, num):
global counter2
prod1 = self.times_digits(num)
list1 = []
list1 = self.digitize(prod1)
if list1.__len__() > 1:
global counter1
counter2 = counter2 + 1
self.multiplicative(prod1)
return prod1, counter2
c = Persistence(5)
print c.additive(5)
print c.multiplicative(5)
emin neden bu hatayı alıyorum değil mi? Bana global değişken counter1'i tanımladım. Ben de bu hatayı karşıdan2 için alıyorum ve hatayı çözmeyi başarabilmemin tek yolu add1 = 0 (veya başka bir sayı) additive() yönteminin döndürme ifadesinin üzerindeki tek bir satırın eklenmesidir. Yardım çok takdir edilecektir! çözümlerin
Lütfen sorunuzdaki tüm geri izlemeyi sağlayın. – zondo
Global yapmak yerine, buna erişmek için 'Persistence.counter1' komutunu kullanın veya bir örnek niteliği oluşturun. – L3viathan
Genel bir değişken yerine bir sınıf niteliği oluşturdunuz. L3viathan'ın yorumuna göre 'Persistence.counter1' veya' self.counter1' işlevini kullanın. Genel olarak, yine de genel değişkenlerden kaçının. – Evert