Yazar kasa yapımı

Merhaba arkadaslar. python dilini yeni ogreniyorum. kücük bir seyler yazarak, kendimi geliştirmeye çalışıyorum. acaba aşağidaki yazdıgım kodlarda her hangi bir problem var mı? yoksa daha baska bir pratik yolu var mı?

gofret = int(input("Gofret:"))
sakiz = int(input("Sakiz:"))
bisküvi = int(input("Bisküvi:"))
toplam = gofret + sakiz + bisküvi
print("\nToplam:{} TL".format(toplam))
nakit = 100
print("\nNakit:100 TL")
print("\nParaüstü:{} TL".format(nakit - toplam))

Çıktısı:

Gofret:5
Sakiz:10
Bisküvi:20

Toplam:35 TL
Nakit:100 TL

Paraüstü:65 TL

Hiçbir sıkıntı görmüyorum. Belki kodu birkaç satır daha azaltmak adına gereksiz bazı değişkenleri çıkarabilirsin. Mesela toplam değişkenini eklemek yerine

print("\nToplam:{} TL".format(gofret + sakiz + bisküvi))

ve nakit değişkeni eklemek yerine

print("\nParaüstü:{} TL".format(100 - (gofret + sakiz + bisküvi))

yapabilirsin. Bana daha mantıklı geliyor (çünkü değişkenler ram de yer kaplar boşuna yer kaplamasına gerek yok) o yüzden önerdim ama kodda hata olduğu anlamına gelmiyor.

Ayrıca kodlarını paylaşırken </> tuşuna basıp ``` işaretlerinin arasına kodunu yapıştırırsan daha iyi olur.

Merhabalar elinize sağlık,

Python’a 3.6 sürümü ile gelen f-string’lere göz atmak isteyebilirsiniz. String’leri formatlarken .format metodundan daha okunabilir olabilirler. Örneğin:

print("\nToplam:{} TL".format(toplam))

yerine

print(f"Toplam: {toplam} TL")

(print’e gönderdiğimiz string’in başındaki f harfi sayesinde.) Ne dersiniz?


Değişkenler olmadan kodu daha az okunabilir yapmış oldunuz (100’ün anlamını kestirmek güçleşti, yani magic number’a dönüştü…). Bir de kendimizi tekrar ediyoruz: gofret + sakiz + bisküvi iki kez değerlendiriliyor; DRY’a aykırıdır.

Yukarıdaki nedenlerin yanında bir de premature optimization’ın pek iyi bir şey olmaması var… Diye düşünüyorum.

3 Beğeni

Doğru kod daha karmaşık oldu.

premature optimization ı biraz daha araştırdım ama galiba eğer program yavaş çalışmış olsa ve hızlandırılmak istense yine aynı noktaya varacaktık.

hepinize cok tsk ederim. Kodlariniz renkli cikti. Ben beceremedim. Ornek olarak verirmisiniz, bende ogrenmis olayim.

Burada birkaç yoldan bahsediliyor, üşenenler için şurası da var :ğ

Mesela

```python
metin = "merhaba "
print(metin * len(metin))
```

yazıyoruz,

metin = "merhaba "
print(metin * len(metin))

şeklinde gözüküyor.

Premature optimization’in manasi program yavas/kotu calismadan optimizasyon yapmak. Dogru bir karar oldugu durumlar cikiyor elbet, fakat yanlis bir karar oldugu cogunlukta en iyi ihtimalle vakit kaybettiriyor. Amaclanan etkinin tersine yol actigini da cok gordum.

Yol parasindan tasarruf etmek icin palto giymemek gibi bir sey. Daha arabayla gidecegimizden bile emin degiliz. Ayrica isitici da benzin yakiyor.

2 Beğeni