Gelişmiş Python Geliştirme Kursu
Bölüm
>
Seviye
Matematik Modülleri
Operatör Modülü
Amaç
Operatör modülünü kullanarak yeni tarım arazisi inşaat malzemeleri siparişlerini doğrulayın ve tahsis edin.
Ek yapının üst katında, yeni arazi gelişimi için gereken inşaat malzemelerine ait envanter kayıtları ve siparişleri tutan bazı ofisler bulunmaktadır. İnşaat için kullanılabilecek malzemelerin doğrulanması ve hesaplanması amacıyla kullanılabilecek çeşitli araçlar bulunmaktadır; matematik ve istatistik modülünün yanı sıra operatör modülünü de kullanabiliriz.
Bu modül, import operator, operatör hesaplamalarını basitleştirmek ve bunları fonksiyonlara uygun şekilde paketlemek için kullanılabilir. Bu fonksiyonları, hesaplamalar için değerleri depolamak üzere bir nesne oluşturmadan hem optimizasyon yapma hem de değer üretmek için kullanabilirsiniz.
operators.eq(): İki argüman alır, argümanların birbirine eşit olup olmadığını kontrol eder.operators.lt(): İki argüman alır, ilk argümanın ikinci argümandan küçük olup olmadığını kontrol eder.operators.gt(): İki argüman alır, ilk argümanın ikinci argümandan büyük olup olmadığını kontrol eder.operators.floordiv(): İki argüman alır, ilk argümanı ikinci argümana böler ve sonucu aşağı yuvarlayarakmath.floor()fonksiyonunun eşdeğerini uygular.operators.mod(): İki argüman alır, iki argüman arasındaki bölümün kalanını döndürür.operators.contains(): Fonksiyon bir liste ile kullanılır, iki argüman alır; ilk argüman bir liste, ikincisi ise listenin içinde olup olmadığını kontrol etmek istediğiniz bir değerdir. Değer bulunduğundatrueveya bulunmadığındafalsedöndürür.operators.concat(): İki liste argümanı alır, iki listeyi tek bir temiz fonksiyon kullanarak birleştirir, diğer yöntemlerden daha hızlı olabilir.operators.countOf(): İki argüman alır; bir liste ve o değerin listede kaç kez bulunduğunu kontrol etmek için bir değer. Değerin bulunduğu örneklerin sayısını döndürür.
Başlamak için, kırmızı, mavi ve yeşil renkli halılar üzerindeki koyu X işaretlerine doğru yürüyün. Malzemeler için sipariş olan ve inşaat için gereken gerekli miktarları belirten altı (6) sabit bulunmaktadır: red_order, blue_order, green_order ve: red_req, blue_req, green_req.
Kırmızı halı üzerindeki koyu X işareti noktasında, malzemelerin gerekli miktarını kontrol etmek için read() fonksiyonunu kullanın. red_verification adında bir değişken oluşturun ve red_order ile red_req sabitlerini kullanarak operator.eq() fonksiyonunu şu şekilde kullanın: red_verification = operator.eq(red_order,red_req). Önceden yazılmış write() fonksiyonunu kullanarak sonucu göstermek için red_verification değişkenini kullanın.
Mavi ve yeşil X işaretlerinde aynı işlemi tekrarlayın, read() fonksiyonunu kullanın ve blue_verification ve green_verification değişkenlerini oluşturun. Mavi değişken için, siparişin gerekli olandan az olup olmadığını kontrol etmek adına blue_order ve blue_req sabitlerini kullanarak operator.lt() fonksiyonunun değerini saklayın. Yeşil değişken için ise, siparişin gerekli malzemelerden fazla olup olmadığını kontrol etmek amacıyla green_order ve green_req sabitlerini kullanarak operator.gt() fonksiyonunun değerini saklayın. İlgili renkli halılara karşılık gelen doğrulama fonksiyonlarıyla önceden yazılmış write() fonksiyonlarını kullanın.
Ardından, açık X işaretine doğru yürüyün ve masanın üzerindeki read() fonksiyonunu kullanarak, daha önce verilmiş ve yolda olan siparişleri kontrol edin. Sipariş defterinde, iki değişken sabit olan main_order ve sub_order değerlerini ve malzemelerin kaç bölüme ayrılması gerektiğini bulacaksınız. Sipariş defterini okuduktan sonra, allocations adında bir değişken oluşturun ve kitapta belirtilen bölüm sayısına bölmek için main_order değerini kullanarak operator.floordiv() değerini şu şekilde saklayın: allocations = operator.floordiv(main_order, -add sections-). Bu, siparişi böler ve sonucu aşağı yuvarlar. Sonucu tabloya kaydetmek için önceden yazılmış write() fonksiyonunu allocations değişkeni ile kullanın.
Altın X işaretine doğru yürüyün ve remainder adında bir değişken oluşturun, operator.mod() fonksiyonunun sonucunu saklayın ve iki siparişin kalanı elde etmek için her iki main_order ve sub_order sabitlerini ekleyin. Masanın üzerinde, önceden yazılmış write() fonksiyonunu kullanarak sonucu kaydetmek için remainder değişkenini ekleyin.
Mor halı üzerindeki koyu X işaretine doğru ilerleyin, burada inşaat için gereken araçların teslim edilip edilmediğini doğrulayacağız. İki liste sabitimiz var: delivery_1 ve delivery_2; araçların ilk teslimatta teslim edilip edilmediğini kontrol edeceğiz. tools adında bir değişken oluşturun ve operator.contains() fonksiyonunun sonucunu saklayın, ilk argüman olarak delivery_1 listesini ve ikinci argüman olarak “tools” dizesini ekleyin. Bu, araçların teslimatta bulunup bulunmadığını kontrol eder, şöyle: tools = operator.contains(delivery_1,"tools"). İşlem tamamlandıktan sonra, masada, araçların başarıyla teslim edilip edilmediğini kaydetmek için önceden yazılmış write() fonksiyonunu tools değişkeni ile kullanın.
Sırada tüm teslimatları kontrol etmek var, beyaz halı üzerindeki koyu X işaretine doğru ilerleyin ve materials adında bir liste oluşturun. Bu listeyi, operator.concat() fonksiyonunun değerini saklamak amacıyla kullanın; argüman olarak delivery_1 ve delivery_2 listelerini kullanın. Bu, iki listeyi hızla tek bir listeye birleştirir. Masada, inşaat için daha önce teslim edilen tüm malzemeleri not etmek için önceden yazılmış write() fonksiyonunu materials değişkeni ile kullanın.
Son olarak, turuncu halı üzerindeki koyu X işaretine doğru yürüyün, burada inşaata başlamak için bazı önkoşullar yazılmış durumda, ana notasyonlardan biri başlangıçta ne kadar odun gerektiğidir (tonaj olarak). Tüm teslimatta ne kadar odun teslim edildiğini kontrol edin ve duyurun, operator.countOf() fonksiyonu ile speak() fonksiyonunu kullanın. İlk argüman olarak oluşturduğunuz materials listesini ve ardından “wood” dizesini ekleyin; bu, materials listesinde kaç adet odun örneği bulunduğunu döndürecektir. Bu, operatör fonksiyonlarının nasıl bir nesne oluşturmadan bağımsız olarak kullanılabileceğini göstermektedir, şöyle: player.speak(operator.countOf(materials,"wood")). Bu, seviyeyi tamamlayacaktır.