Gelişmiş Python Geliştirme Kursu
Bölüm
>
Seviye
Üreteçler
Bir Üreteç'e Veri Gönderme
Amaç
Verileri bir jeneratöre göndererek yünleri tezgahlarda ipliğe dönüştürmek için yün toplayın.
Bazı koyunlar biraz fazla yünlenmeye başladı, onları tıraş etmek ve yünlerini toplamak en iyisi olacaktır. Ardından, iplik üretmek için yünü tezgahın içine sokabilirsiniz. Bunu başarmak için işlenen iplik ve yün miktarlarının büyük oranda değişiklik gösterebilmesi nedeniyle bir jeneratör kullanmamız gerekecek.
Öncelikle, iplik örebilen bir jeneratör tanımlayın ve adını spin() olarak belirleyin. Bu jeneratörün çalışması için dış girdiyi kullanacak şekilde ayarlanması gerekmektedir. yield üzerinden veri okur ve veriyi bir değişkene atar, ardından her döngüde uzunluğunu artırarak içeriği değiştirir, son olarak bir sonuç üretir.
def spin():
cycle = 1
while True:
cycle += 1
yarn = yield
yarn = yarn * cycle
yield player.speak("You've spun %d ft of yarn" % (yarn))
Jeneratör olduğundan, içindeki while() ifadesi duraklatılabilir ve istenilen çıktıyı üretmek üzere değiştirilebilir; bu kontrol seviyesi, jeneratörün ne olduğunu ve verileri işlerken nasıl faydalı olabileceğini özetlemektedir. Jeneratöre veri eklemek için onu tanımlayın ve istediğiniz veriyi beslemek adına send() fonksiyonunu kullanın, örneğin:
spindle = spin() # Jeneratörün bir örneğini oluşturun next(spindle) # Jeneratörü tek adım çalıştırın spindle.send(6) # Jeneratöre veri gönderin # Bu durumda 6 sayısını gönderiyorsunuz
Renkli halıların yanındaki ışıklı X işaretlerine doğru yürüyün ve koyunlarla karşılaşın. Her koyundan tıraş edilebilecek yün miktarını tutan sheep adında bir sözlük sabiti bulunmaktadır. Üzerinde durduğunuz halının rengi ile birlikte, koyunların yününü tıraş etmek ve ne kadar yün topladığınızı kontrol etmek için speak() fonksiyonunu kullanın. Örneğin: player.speak(sheep["green"]).
Toplamda dört (4) renkli halı vardır: "green", "red", "blue" ve "orange". Koyunları tıraş ettikten sonra, tezgahların bulunduğu her renkli halının yanındaki koyu X işaretlerine yürüyün. Jeneratöre, her koyundan tıraş edilen yün miktarını, ilgili halının rengine göre send() kullanarak gönderin.
Örneğin, eğer "green" halısında koyunları tıraş ederken 4 pound yün elde ettiyseniz, tezgahın yanındaki "green" halısına gidin ve jeneratöre veriyi şu şekilde gönderin:
next(spindle) spindle.send( 4)
Düzeyi tamamlamak için renkli halılardaki tüm dört (4) koyu X işaretinde bunu yapın.