Python Daha az "or" kullanma

Katılım
22 Haziran 2023
Mesajlar
253
Çözümler
2
Daha fazla  
Cinsiyet
Erkek
Selam sosyal üyeleri, direkt konuya giriş yapmak istiyorum. Python'da kod yazarken kullanıcıdan bir veri aldığımızda ve bunu bir değişkene atadığımızda, atanılan değişkenin spesifik bir cevaba bağlı olmasını yapabiliyorum ancak bu spesifik cevapta çok fazla "or" operatörünü kullanmak zorunda kalıyorum. Çünkü kullanıcı bir boşluk bıraktığında, gireceği verideki bir harfi büyük, bir harfi küçük yazınca gibi gibi yani kullanıcı değişik bir cevap yazarsa kodda normalde başka koşulun çalışması gerekirken başka bir koşul çalışıyor. Biraz karışık olmuş olabilir, bir kod örneği yazayım.

Python:
siparis = str(input("Siparişiniz nedir, küçük boy, orta boy, büyük boy?"))
if siparis == "küçük" or "küçük boy" or "Küçük Boy" or "Küçük boy":
 print ("Sipariş tutarı, 25 TL'dir.)
elif siparis == "orta" or "orta boy" or "Orta Boy" or "Orta boy":
 print ("Sipariş tutarı, 30 TL'dir.")
else:
 print ("Sipariş tutarı, 35 TL'dir.")

Mesela bu kodda kullanıcının siparişinde en ufak bir harf değişiminde koşulun değişmemesi için sürekli "or" kullandım. Bunun yerine daha pratik yol var mıdır? Cevaplayan herkese teşekkür ediyorum.
 
Selam sosyal üyeleri, direkt konuya giriş yapmak istiyorum. Python'da kod yazarken kullanıcıdan bir veri aldığımızda ve bunu bir değişkene atadığımızda, atanılan değişkenin spesifik bir cevaba bağlı olmasını yapabiliyorum ancak bu spesifik cevapta çok fazla "or" operatörünü kullanmak zorunda kalıyorum. Çünkü kullanıcı bir boşluk bıraktığında, gireceği verideki bir harfi büyük, bir harfi küçük yazınca gibi gibi yani kullanıcı değişik bir cevap yazarsa kodda normalde başka koşulun çalışması gerekirken başka bir koşul çalışıyor. Biraz karışık olmuş olabilir, bir kod örneği yazayım.

Python:
siparis = str(input("Siparişiniz nedir, küçük boy, orta boy, büyük boy?"))
if siparis == "küçük" or "küçük boy" or "Küçük Boy" or "Küçük boy":
 print ("Sipariş tutarı, 25 TL'dir.)
elif siparis == "orta" or "orta boy" or "Orta Boy" or "Orta boy":
 print ("Sipariş tutarı, 30 TL'dir.")
else:
 print ("Sipariş tutarı, 35 TL'dir.")

Mesela bu kodda kullanıcının siparişinde en ufak bir harf değişiminde koşulun değişmemesi için sürekli "or" kullandım. Bunun yerine daha pratik yol var mıdır? Cevaplayan herkese teşekkür ediyorum.
Python:
siparis = input("Siparişiniz nedir, küçük boy, orta boy, büyük boy? ").lower()

if "küçük" in siparis:
    print("Sipariş tutarı, 25 TL'dir.")
elif "orta" in siparis:
    print("Sipariş tutarı, 30 TL'dir.")
else:
    print("Sipariş tutarı, 35 TL'dir.")


Elbette yapabiliriz hocam kullanıcıdan aldıgımız inputları lower fonksiyonu icine atıyoruz ve hemen ardından bunları sadece anahtar kelimelere göre kosullara sokuyoruz. Bu sayede daha sade bir kod elde etmis oluyoruz.

Ayrıca replace methodunu kullanarak Türkçe karakterleri İngilizce karakterlere döndürebilirsiniz. Örnek içinde "ç "olan stringde "ç" yerine "c" koyulsun gibi.
 
Birbirinin alternatifi olan işlemler için bu yapıları kullanmak yanlış olur hocam. Onun yerine OOP ile ilerlerseniz daha basit olacak.
 
Hocam kusura bakmayın daha başlangıç seviyesindeyim, (döngüleri bilmiyorum yani o kadar.) OOP nedir?
OOP icin ayri bi kaynaktan izlemeniz daha sağlıklı olur simdiden paper okumaya alisin derim.
OOP ile su sekilde bir şey yapabiliriz ama düzeyiniz için komplike gelebilir elimden geldiğince açıklamaya calistim.
Python:
class Order:
    def __init__(self, size):
        # sipariş boyutunu küçük harfe çevirerek saklayalım
        self.size = size.lower()

    def calculate_price(self):
        # sipariş boyutuna göre fiyatı hesaplayalım
        if "small" in self.size:
            return 25
        elif "medium" in self.size:
            return 30
        else:
            return 35

class OrderSystem:
    def __init__(self):
        # siparişleri depolamak için boş bir list yaratalım
        self.orders = []

    def take_order(self):
        # Kullanıcıdan sipariş alalım listeye ekleyelim
        order_type = input("Siparişiniz nedir, küçük boy, orta boy, büyük boy? ")
        self.orders.append(Order(order_type))

    def display_total_price(self):
        # tüm siparişlerin toplam fiyatını hesaplayalım ve print edelim
        total_price = sum(order.calculate_price() for order in self.orders)
        print(f"Toplam sipariş tutarı {total_price} TL.")

order_system = OrderSystem()

while True:
    order_system.take_order()
    more_orders = input("Başka sipariş eklemek ister misiniz? (evet/hayır) ").lower()
    if more_orders != "evet":
        break

order_system.display_total_price()
 
Selam sosyal üyeleri, direkt konuya giriş yapmak istiyorum. Python'da kod yazarken kullanıcıdan bir veri aldığımızda ve bunu bir değişkene atadığımızda, atanılan değişkenin spesifik bir cevaba bağlı olmasını yapabiliyorum ancak bu spesifik cevapta çok fazla "or" operatörünü kullanmak zorunda kalıyorum. Çünkü kullanıcı bir boşluk bıraktığında, gireceği verideki bir harfi büyük, bir harfi küçük yazınca gibi gibi yani kullanıcı değişik bir cevap yazarsa kodda normalde başka koşulun çalışması gerekirken başka bir koşul çalışıyor. Biraz karışık olmuş olabilir, bir kod örneği yazayım.

Python:
siparis = str(input("Siparişiniz nedir, küçük boy, orta boy, büyük boy?"))
if siparis == "küçük" or "küçük boy" or "Küçük Boy" or "Küçük boy":
 print ("Sipariş tutarı, 25 TL'dir.)
elif siparis == "orta" or "orta boy" or "Orta Boy" or "Orta boy":
 print ("Sipariş tutarı, 30 TL'dir.")
else:
 print ("Sipariş tutarı, 35 TL'dir.")

Mesela bu kodda kullanıcının siparişinde en ufak bir harf değişiminde koşulun değişmemesi için sürekli "or" kullandım. Bunun yerine daha pratik yol var mıdır? Cevaplayan herkese teşekkür ediyorum.
Python:
print(f"Sipariş tutarı, {({'küçük': 25, 'orta': 30, 'büyük': 35}.get(input('Siparişiniz nedir, küçük boy, orta boy, büyük boy? ').lower(), 35))} TL'dir.")
en kısa böyle yazabilirsin.

Python:
print(f"Sipariş tutarı, {({'küçük': 25, 'orta': 30, 'büyük': 35}.get(input('Siparişiniz nedir, küçük boy, orta boy, büyük boy? ').lower(), 35))} TL'dir.")
en kısa böyle yazabilirsin.
Python:
siparis = input("Siparişiniz nedir, küçük boy, orta boy, büyük boy? ").lower()


fiyatlar = {"küçük": 25, "orta": 30, "büyük": 35}


print(f"Sipariş tutarı, {fiyatlar.get(siparis, 35)} TL'dir.")
en mantıklı yazım böyle olur ama ve oop ile.
 

Technopat Haberler

Geri
Yukarı