From: Tonguc Yumruk (tongucyumruk@interaktif.gen.tr)
Date: Wed 16 Mar 2005 - 10:01:35 EET
gimmeOneMorePrime() fonksiyonunda diğer satırlardan önce şunu eklersen
sorun çözülür:
global primeCount
Python'da mevcut fonksiyonun scope'u dışındaki değişkenlere doğrudan
eriştiğinde sadece read-only olarak erişebilirsin. Eğer local scope
dışındaki bir değişkene değer atamak istiyorsan bunu o değişkeni
kullanmadan önce global <değişken> olarak tanımlaman gerekir. Aksi halde
python local scope içindeki o isimde bir değişken bulup onunla oynamaya
çalışacaktır. daha önceden o değişkene bir değer atanmadığı için de hata
verecektir.
Not: E-postalarını daha sık kontrol etmelisin
Tue, Mar 15, 2005 at 09:08:27PM +0200 Tarihinde Volkan YAZICI Demişki :
> Merhaba,
>
> Saatlerdir çok basit bir sorun üzerinde takıldım kaldım. IRC'de sorduğum
> insanların biri bile soruma cevap vermek yerine, yok onun yerine şöyle
> yapsam da olurmuş şeklinde önerilerde bulundular. Artık takıntı haline
> geldi, aşağıdaki betik neden UnboundLocalError hatası verir.
>
> """ {{{ kahrolasıBetik """
> #!/usr/bin/python
>
> primeList = [2, 3]
> primeCount = len(primeList)
>
> def gimmiOneMorePrime():
> indice, lastPrimeIndice = 1, (primeCount - 1)
> tempPrime = primeList[lastPrimeIndice] + 2
>
> while indice <= lastPrimeIndice:
> if tempPrime % primeList[indice] == 0:
> indice = 1
> tempPrime += 2
> else: indice += 1
>
> primeList.append(tempPrime)
> primeCount += 1
>
> def checkIfPrime(givenPrime):
> indice = 0
>
> while givenPrime != primeList[indice]:
> if (indice + 1) == primeCount: gimmiOneMorePrime()
> elif givenPrime % primeList[indice] == 0: return False
> indice += 1
>
> return True
>
> def main():
> if checkIfPrime(31): print "ok"
> else: print "sie"
>
> if __name__ == "__main__": main()
> """ }}} """
>
> Not: Şu yöntemi kullanırsan daha iyi olur şeklinde gelecek cevaplar
> için de teşekkür ederim. Fakat tekrar hatırlatmak istiyorum, "Yukarıdaki
> program neden UnboundLocalError hatası veriyor ve nasıl kurtulunabilir
> bu hatadan?". İşte sorum tam olarak bu.
>
> İyi çalışmalar.
> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama@liste.linux.org.tr
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
-- Sevgi Saygı GNU/Linux ######################################################################## QOTD: "If I could walk that way, I wouldn't need the cologne, now would I?" ######################################################################## Tonguç Yumruk
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama