Python Alıştırma Soruları vol_2

Bir mağazadaki ürünlerin kodları ilk üç karakteri küçük harf ve kalan beş karakteri rakam olacak şekilde
sekiz karakterden oluşmaktadır. Kodlarında
• üçüncü karakteri “m”, “a” veya “t” olan ürünlerde, dördüncü karakter “2” ise %50,
• üçüncü karakteri “m”, “a” veya “t” olan ürünlerde, dördüncü karakter “7” ise %40,
• üçüncü karakteri “m”, “a” veya “t” olan ürünlerde, dördüncü karakter “0” ise %30
• ve bunların dışındaki tüm ürünlerde %10
indirim yapılacaktır.
Ayrıca, kodlardaki ilk üç karakter ile son beş karakter, kendi içlerinde sıralamayı koruyarak, yer
değiştirilip yeni bir kod oluşturulacaktır.

Aslında tam çalışır bir şekilde programı yazdım. Ancak çıktılar düzensiz geldi ve fuzuli çok kod kullanmışım gibi hissettim. O yüzden geliştirici veya eleştirel fikirlerinizi duymak istiyorum. Bu arada isteye bile def. fonksiyonunu kullanmadan yapmaya çalıştım.

kod = [i for i in input("İndirim Kodlarınızı Giriniz: ").split()]
bos = []
elli = []
kirk = []
otuz = []
on = []

indirimler = {'50': elli,
          '40': kirk,
          '30': otuz,
          '10': on}

for i in kod:
    for harf in i:
        bos += harf
        a = ""
    if (bos[2] == "m" or bos[2] == "a" or bos[2] == "t") and bos[3] == "2":
        a += bos[3] + bos[4] + bos[5] + bos[6] + bos[7] + bos[0] + bos[1] + bos[2]
        elli.append(a)
        bos.clear()
        continue
    if (bos[2] == "m" or bos[2] == "a" or bos[2] == "t") and bos[3] == "7":
        a += bos[3] + bos[4] + bos[5] + bos[6] + bos[7] + bos[0] + bos[1] + bos[2]
        kirk.append(a)
        bos.clear()
        continue
    if (bos[2] == "m" or bos[2] == "a" or bos[2] == "t") and bos[3] == "0":
        a += bos[3] + bos[4] + bos[5] + bos[6] + bos[7] + bos[0] + bos[1] + bos[2]
        otuz.append(a)
        bos.clear()
        continue
    else:
        a += bos[3] + bos[4] + bos[5] + bos[6] + bos[7] + bos[0] + bos[1] + bos[2]
       on.append(a)
       bos.clear()
       continue
print("indirimler:",indirimler, sep = "\n")

def bir fonksiyon degil, fonksiyon tanimlamaya yarayan anahtar kelime ve kullanmalisin cunku yazdigin butun kodlar en az bir fonksiyon altinda toplanmali. Ne kadar cok fonksiyona bolebiliyorsan, o kadar iyi.

i o an islenmekte olan kod icin kotu bir isim.
bos'un ne yaptigini anlayamadim.
a neden harf sayisi kadar bosaltiliyor ve sonra eklenerek uretiliyor?
a kotu bir isim.
bos neden clear ediliyor?
Kodda cok tekrar var. continue kullanmadan yazmaya calisirsan daha temiz olacakmis gibi duruyor.
indirimler kullanilmiyor.
Daha cok dikey bosluk (enter) kullanman lazim. for'u if bloklarindan ayirsaydin, a'nin for'a ait olmamasi gerektigini gormek daha kolay olurdu mesela.

Tavsiyeleriniz doğrultusunda

  • i —> eleman

  • a —> yeni_kod
    olarak değiştirdim.

bos listesi ve yeni_kod = “” değişkenlerini,

Ayrıca, kodlardaki ilk üç karakter ile son beş karakter, kendi içlerinde sıralamayı koruyarak, yer
değiştirilip yeni bir kod oluşturulacaktır.

soruda böyle bir istek olduğu için oluşturdum. Yani kod içerisindeki harfleri önce liste elemanı olarak bos listesine ekliyorum. Daha sonra yeni_kod değişkeninin içine istediğim sırada koyuyorum. Bunu her indirim kodu için uygulayıp daha sonra bos listesini ve yeni_kod değişkeninin temizliyorum.

Yazım düzenine alışmaya çalışıyorum. İyi ki uyarmışsınız teşekkür ederim.

“indirimler”'i sadece sözlük kullanmayı denemek için oluşturdum. Bir de çıktı olarak görmek istediğim için. Bu kadar karışmasının sebebini def kullanmamış olmamdan kaynaklandığını tahmin ediyorum. Ama daha evvel hiç def kullanmayı denemedim. O yüzden buraya uygun bir fonksiyon öneriniz varsa çok sevinirim.
Yorumunuz için tekrar teşekkür ederim.

bos yerine eleman dogrudan kullanilamaz mi?

eski kodu alip yeni kodu donduren bir fonksiyon olabilir

kodun tamami bir main fonksiyonu altinda olabilir

1 Beğeni