Gelişmiş Python Geliştirme Kursu
Bölüm
>
Seviye
Matematik Modülleri
Matematik Modül Girişi
Amaç
Çiftlikteki tapu belgelerini ve mülk hatlarını kontrol edin, Math Modül fonksiyonlarını kullanarak sayıları doğrulayın ve hesaplayın.
Ana binanın tam kenarındaki ofiste, bina için eski planların ve tapu belgelerinin bir arşivi bulunmaktadır. Çiftliği doğuya doğru genişletme planları var, ancak herhangi bir inşaat planını incelemeye karar vermeden önce evrakların düzenli olduğundan emin olmak önemlidir. Bu, python’un math modülü kullanılarak yapılacaktır.
import math
Önceki istatistik modülü gibi, math modülü de python’un yerleşik kütüphanesini genişletmemiz için kullanabileceğimiz bir dizi matematik fonksiyonuna sahiptir:
-
math.isnan(): Girilen değerin sayı olup olmadığını kontrol eder -
math.isinf(): Girilen değerin sonsuz sayı olup olmadığını kontrol eder -
math.isfinite(): Girilen değerin sonlu olup olmadığını kontrol eder -
math.prod(): Eklenen tüm argümanları çarpar -
math.pow(): İki argüman alır ve ilk argümanın ikinci argüman kuvveti kadar olan değerini döndürür. -
math.trunc(): Verilen argümanı keser; bu, ondalıklı bir sayıdan ondalık kısmı kaldırarak tam sayı yapar. (Yuvarlama yapmaz, sadece ondalık kısmı çıkarır) -
math.copysign(): İki argüman alır, ikinci argümmandaki işareti (-,+) birinci argümana kopyalar. -
math.factorial(): Bir argüman alır ve bu sayıyı 1'e kadar ardışık olarak çarpar. Örneğin, değer5ise:5x4x3x2x1şeklinde çarpım yaparak bir sonuç üretir.
Bu fonksiyonları, geliştirme projelerine hazırlık amacıyla bazı verileri gözden geçirmek ve kaydetmek için kullanacağız. Çiftliğin şematiklerini içeren üç liste sabiti vardır: red_schematics, green_schematics, blue_schematics. Bu şematiklerde sayısal olmayan ve kullanılamaz değerler yazılmıştır; math fonksiyonlarını kullanarak bu elemanları belirleyin, kullanılabilir veriyi bulun ve kaydedin.
Önce kırmızı halının üzerindeki koyu X işaretine gidin ve kullanılabilir elemanları belirlemek için red_schematics liste sabitinin elemanları arasında döngü kullanın.
for x in red_schematics: y = math.isnan (float(x)) if y == True: player.speak("Not a Number") else: y = math.isinf(float(x)) if y == True: player.speak("Is infinite") else: player.speak(x)
Döngü, listenin tüm elemanları arasında dönecek; math.isnan() fonksiyonu sayısal olmayan girdileri belirleyecek, math.isinf() ise veri toplama amacıyla kullanılamayan sonsuz değerleri tanımlayacaktır. red_values adında yeni bir liste oluşturun ve istenmeyen elemanları math.isfinite() kullanarak filtrelemek için liste kavraması kullanın, şöyle: red_values = [x for x in red_schematics if math.isfinite(float(x))].
Sonrasında, listedeki tüm elemanları birleştirmek için math.prod() fonksiyonunu kullanarak sayıları toplayın, şöyle: red_values = math.prod(red_values).
Aynı filtreleme işlemini yeşil ve mavi halılar üzerindeki koyu X işaretlerinde de uygulayın; green_schematics ve blue_schematics liste sabitlerini kullanarak elemanları green_values ve blue_values adlı listelerde toplayın.
Altın X işaretine gidin, masanın karşısına geçin ve editörde önceden yazılmış write() fonksiyonunu kullanarak kullanılabilir şematik verileri kaydedin. Her şeyi topladıktan sonra, açık X işaretine gidin ve bir sonraki odaya erişmek için open() fonksiyonunu kullanın.
Bir sonraki odada, arazi tapuları ve koordinatlar içeren birkaç masa bulunmaktadır. Köprünün diğer tarafındaki çiftliğe eklenen yeni bölümleri kontrol etmeye geçmeden önce bazı verileri kaydetmek iyi bir fikirdir. İlk masanın yanındaki haritalı sandığın önündeki açık X işaretine gidin, toprak tapuları için indeks verilerini almak amacıyla read() fonksiyonunu kullanın.
Mor halı üzerindeki koyu X işaretine gidin, purple_data adında bir değişken oluşturun ve aldığınız verileri çarpmak için math.pow() fonksiyonunu kullanarak koordinat bilgisi elde edin. Okunmuş indeks verisinin 3. kuvvetini alın, şöyle: purple_data = math.pow( -index data- , 3 ); daha önce okuduğunuz indeks verisini eklediğinizden emin olun. Değişkendeki ondalık veriyi kaldırmak için math.trunc() kullanın, şöyle: purple_data = math.trunc(purple_data). İşlem tamamlandığında, X işaretinde, editörde önceden yazılmış write() fonksiyonunu purple_data ile kullanarak değişkende saklanan veriyi kaydedin.
Tamamlamak için, üst masanın yanındaki dosya dolabının önündeki açık X işaretine gidin. Tekrar indeks verilerini almak için read() fonksiyonunu kullanın; bu veri, arazinin daha fazla koordinat bilgisini ortaya çıkarmak için açığa çıkarılmalıdır. Dosyada bulunan veri değerini saklamak için white_data adında bir değişken ve dosyada bulunan işaret numarasını saklamak için sign adında bir değişken oluşturun.
Beyaz halı üzerindeki koyu X işaretine gidin ve oluşturduğunuz iki değişkeni argüman olarak kullanarak math.copysign() fonksiyonunu kullanın, ve değeri white_data'ya atayın; şöyle: white_data = math.copysign(white_data,sign).
İşlem tamamlandığında, white_data ile math.factorial() fonksiyonunu kullanarak indeksi çarpmak için, white_data'yı tam sayıya dönüştürün ve fonksiyonda kullanın; şöyle: white_data = math.factorial(int(white_data)). Seviye tamamlanması için white_data verisini kaydetmek üzere, önceden yazılmış write() fonksiyonunu kullanın.