3 aylık yazılımcı kodu :)

yaklaşık 3 aydır kendi halimde python öğrenmeye çalışıyorum. bu zamana kadar öğrendiğim konuların içerdiği (fonksiyonlar, while döngüsü v.b.) bir proje yapıp yazmayı ve geliştirmeyi denedim. elbette bu kod daha doğru daha temiz yazılabilir ama öğrendiğim kadarı ile yazdım ve her karşılaştığım hatayı araştırarak gidermeye çalıştım. gidermeye uğraştığım bir kaç hata olsa da siz değerli arkadaşların yorumuna açmak istedim. gazla çalışan biriyim ve gaza ihtiyacım var arkadaşlar :slight_smile:

print("Pizza Sipariş Sistemine Hoşgeldiniz")

s=30
m=40
l=50
p=10
hesap=0
sa2=0
ma2=0
la2=0
iceceka=0
icecek=20
icecek2=int(icecek)
peynira=0

def S():
  while True:
    sa=input("Kaç Adet S Boyut Pizza İstersiniz:")
    try:
      global sa2
      sa2=int(sa)
      print("{} Adet S Boyut Pizzanız Hazırlanıyor...".format(sa))
      global hesap
      global s
      hesap+=sa2*s
      print("Mevcut Borcunuz {} TLdir".format(hesap))
      break
    except ValueError:
      print("Geçersiz Sayı...")
      continue
def M():
  while True:
    ma=input("Kaç Adet M Boyut Pizza İstersiniz:")
    try:
      global ma2
      ma2=int(ma)
      print("{} Adet S Boyut Pizzanız Hazırlanıyor...".format(ma))
      global hesap
      global m
      hesap+=ma2*s
      print("Mevcut Borcunuz {} TLdir".format(hesap))
      break
    except ValueError:
      print("Geçersiz Sayı...")
      continue
def L():
  while True:
    la=input("Kaç Adet L Boyut Pizza İstersiniz:")
    try:
      global la2
      la2=int(la)
      print("{} Adet S Boyut Pizzanız Hazırlanıyor...".format(la))
      global hesap
      global l
      hesap+=la2*l
      print("Mevcut Borcunuz {} TLdir".format(hesap))
      break
    except ValueError:
      print("Geçersiz Sayı...")
      continue
    
def P():
  while True:
    peynira=input("Kaç Pizzaya Extra Peynir İstersiniz:")
    try:
      peynira2=int(peynira)
      if peynira2>(sa2+ma2+la2):
        print("Pizza Toplam Adetinden Fazla Extra Peynir Sipariş edilemez")
        continue
      else:
        print("{} Adet Pizzanıza Extra Peynir Ekleniyor...".format(peynira2))
        global hesap
        global p
        hesap+=peynira2*p
        print("Mevcut Borcunuz {} TLdir".format(hesap))
        break
    except ValueError:
      print("Geçersiz Sayı...")
      continue
      
def icecek():
  while True:
    iceceka=input("Kaç İçecek İstersiniz:")
    try:
      iceceka2=int(iceceka)
      print("{} Adet İçecek Hesaba Ekleniyor...".format(iceceka2))
      global hesap
      global icecek
      hesap+=iceceka2*icecek2
      print("Mevcut Borcunuz {} TLdir".format(hesap))
      print("Bizi Tercih Ettiğiniz için Teşekkür Ederiz...")
      break
    except ValueError:
      print("Geçersiz Sayı...")
      continue
    
    
    
    
    
while True:
  boyut=input("Lütfen Tercih Ettiğiniz Pizza Boyutunu Seçiniz S M veya L")
  if boyut=="S":
    S()
    tercih=input("Başka boyutta Pizza ister misiniz Evet Ya da Hayır:")
    if tercih=="Evet":
      boyut=input("Lütfen Tercih Ettiğiniz Pizza Boyutunu Seçiniz S M veya L")
      continue
    elif tercih=="Hayır":
      print("Pizza Tercihiniz Alındı...")
      peynir=input("Extra Peynir İster misiniz:")
      if peynir=="Evet":
        P()
        tercihi=input("İcecek İster misiniz:")
        if tercihi=="Evet":
          icecek()
          break
        elif tercihi=="Hayır":
          print("İcecek Eklenmedi")
          break
        else:
          print("Geçerli İşlem Giriniz...")
          continue
      elif peynir=="Hayır":
        print("Extra Peynir Eklenmiyor")
        tercihi=input("İcecek İster misiniz:")
        if tercihi=="Evet":
          icecek()
          break
        elif tercihi=="Hayır":
          print("İcecek Eklenmedi")
          print("Mevcut Borcunuz {} TLdir".format(hesap))
          print("Bizi Tercih Ettiğiniz için Teşekkür Ederiz...")
          break
        else:
          print("Geçerli İşlem Giriniz...")
          continue
      else:
        print("lütfen Geçerli Giriş Yapınız:")
        peynir=input("Extra Peynir İster misiniz:")
        continue
    else:
      print("Geçerli Giriş Yapınız...")
      tercih=input("Başka boyutta Pizza ister misiniz Evet Ya da Hayır:")
      continue
  elif boyut=="M":
    M()
    tercih=input("Başka boyutta Pizza ister misiniz Evet Ya da Hayır:")
    if tercih=="Evet":
      boyut=input("Lütfen Tercih Ettiğiniz Pizza Boyutunu Seçiniz S M veya L")
      continue
    elif tercih=="Hayır":
      print("Pizza Tercihiniz Alındı...")
      peynir=input("Extra Peynir İster misiniz:")
      if peynir=="Evet":
        P()
        tercihi=input("İcecek İster misiniz:")
        if tercihi=="Evet":
          icecek()
          break
        elif tercihi=="Hayır":
          print("İcecek Eklenmedi")
          break
        else:
          print("Geçerli İşlem Giriniz...")
          continue
      elif peynir=="Hayır":
        print("Extra Peynir Eklenmiyor")
        tercihi=input("İcecek İster misiniz:")
        if tercihi=="Evet":
          icecek()
          break
        elif tercihi=="Hayır":
          print("İcecek Eklenmedi")
          print("Mevcut Borcunuz {} TLdir".format(hesap))
          print("Bizi Tercih Ettiğiniz için Teşekkür Ederiz...")
          break
        else:
          print("Geçerli İşlem Giriniz...")
          continue
      else:
        print("lütfen Geçerli Giriş Yapınız:")
        peynir=input("Extra Peynir İster misiniz:")
        continue
    else:
      print("Geçerli Giriş Yapınız...")
      tercih=input("Başka boyutta Pizza ister misiniz Evet Ya da Hayır:")
      continue
  elif boyut=="L":
    L()
    tercih=input("Başka boyutta Pizza ister misiniz Evet Ya da Hayır:")
    if tercih=="Evet":
      boyut=input("Lütfen Tercih Ettiğiniz Pizza Boyutunu Seçiniz S M veya L")
      continue
    elif tercih=="Hayır":
      print("Pizza Tercihiniz Alındı...")
      peynir=input("Extra Peynir İster misiniz:")
      if peynir=="Evet":
        P()
        tercihi=input("İcecek İster misiniz:")
        if tercihi=="Evet":
          icecek()
          break
        elif tercihi=="Hayır":
          print("İcecek Eklenmedi")
          break
        else:
          print("Geçerli İşlem Giriniz...")
          continue
      elif peynir=="Hayır":
        print("Extra Peynir Eklenmiyor")
        tercihi=input("İcecek İster misiniz:")
        if tercihi=="Evet":
          icecek()
          break
        elif tercihi=="Hayır":
          print("İcecek Eklenmedi")
          print("Mevcut Borcunuz {} TLdir".format(hesap))
          print("Bizi Tercih Ettiğiniz için Teşekkür Ederiz...")
          break
        else:
          print("Geçerli İşlem Giriniz...")
          continue
      else:
        print("lütfen Geçerli Giriş Yapınız:")
        peynir=input("Extra Peynir İster misiniz:")
        continue
    else:
      print("Geçerli Giriş Yapınız...")
      tercih=input("Başka boyutta Pizza ister misiniz Evet Ya da Hayır:")
      continue
  else:
    print("Geçerli Giriş Yapınız")
    continue



    

İlk eleştiri benden gelsin. Kod bloğuna doğru bir şekilde almaya çalış, kod kısmını.

Düzeltmeye çalışıyorum

```
print(
```

print ifadesini backtick lerin altına kaydırırsan düzelir.
renklenmesi içinde şöyle yapabilirsin.

```python
print(
```

1 Beğeni

düzelttim hocam her türlü eleştiriyi dinlemeye hazırım ve bundan sonraki yol haritam hakkında fikirlerinizi beklerim

Eleştirilebilecek çok fazla şey var ama ben sadece isimlendirmelerden bahsedeceğim. Kodun tamamını okuyup detaylı bir analiz anlatmak biraz zaman alacak çünkü.

Kod yazarak makinenize ifade ettikleriniz sadece sizin ve makineniz tarafından değil, kodu okuyabilecek başka yazılımcılar tarafından da anlaşılabilir olmalı. Kodu okumak epey zorlayıcı açıkçası. Buna sebep olan şeylerden biri de kesinlikle değişken isimleri.

Değişkenlere isimler verirken özellikle aynı kelimeyi bir harf ya da sayı kullanarak bu şekilde çeşitlendirmeniz tavsiye edilmez çünkü hiçbir şey ifade etmiyor. icecek ile iceceka ne ola ki mesela? Bir de icecek2 diye bir değişken tanımlanmış.

Yorum yok, yine benzer şekilde kafa karıştırıcı.

Yine benzer şekilde. Ayrıca fonksiyonlarda büyük harf kullanılmaz genellikle. Bunun gibi pep-8 cheatsheet’lerine ufak bir göz atmak isteyebilirsiniz.


Ben olsaydım PizzaAutomation (daha iyi ifade edebilecek isimler bulunabilir, spontane aklıma geleni yazdım) gibi bir class oluşturup OOP yaklaşımıyla böyle bir program yazardım. Ya da çeşitli modüllerle işimi parçalara ayırabilirdim. Python değil ama belki de burada yaptığım öğrenme amaçlı ufak bir otomasyon çalışması bir seviye ilişkilendirilebilir bununla.
PizzaAutomation şunun gibi bir şeye benzerdi diye tahmin ediyorum:

class PizzaAutomation:
    small_pizza_price = 0
    medium_pizza_price = 0
    large_pizza_price = 0
    ...

    def __init__(self):
        ...
        pass

    def calculate_payment():
        pass

    def calculate_someting_useful():
        pass 
    
    def find_sth_useful():
        pass 
    
if __name__ == '__main__':
    while True:
        size = input("Lütfen Tercih Ettiğiniz Pizza Boyutunu Seçiniz S M veya L")
        ...

Bir yandan bir ton döngüden, fazlaca koşuldan vb. imperatif koddan uzaklaşmaya çalışırdım. Sürekli yapılan benzer input sorguları vb. şeyler için shortcut yöntemler arardım. Ama asla sizin yaptığınız şekilde yazmazdım, özellikle değişken scope’larını vs. kontrol etme (global…) gerekliliklerine bakınca şu şekilde yazmak kesinlikle bir işkence olsa gerek.
Kurduğunuz sistemi çeşitli modüllere bölerek çalışmak da kesinlikle düşünülebilir.


Son bir de şunu söyleyeyim,

bu tür try-except blokları yazmamaya çalışın. Sırf peynira2’de hata çıkma olasılığı yüzünden alakasız pek çok kod da try-except bloğuna alınıyor.

1 Beğeni

Uyarılarınız için çok teşekkürler ama ben sadece bildiğim konulardan bir program yazmaya çalıştım, yani Bahsettiğiniz class ile başlayan sistemi henüz öğrenmedim. Try except konusu sadece nasıl kullanıldığına bakmak öğrenmek için kullandım. Fonksiyonlar konusunu uygulamalı kullanmak için yazdığım kodlar. Bu safhaya gelene kadar çok fazla hata çıktı ve birçok kaynaktan hatanın sebebini araştırarark gidermeye çalıştım

Değişken isimlerine dikkat edeceğim uyarınız için teşekkürler.

Olumlu bir eleştiriydi

Belki parametre alan fonksiyonları inceleyip hesabı tek fonksiyonda hesaplasan daha kısa ve kullanışlı olur.

Araştırıp kullanacağım teşekkürler

Pizza boyutlarını seçerken büyük harf kullanılması isteniyor.Burada kullanıcı girişini upper,lower gibi fonksiyonlarla düzenleyip ona göre if else bloğunda değerlendirmek daha mantıklı olabilir.
tercihi = input(“İcecek İster misiniz:”).lower()
if tercihi==“hayır”
Çünkü hayır,evet ve pizza boyutlarındaki harflerin küçük yazılması sorun oluşturuyor.
İyi çalışmalar.