Merhaba sözlükleri kullanarak basit bir uçak bileti programı yaptım ama en son while döngüsünü kırıp girilen tüm yolculara tek bilet basmaya kalktığımda yolcu isimlerinin tamamını alt alta alıp tutarlarını toplatamıyorum. Sadece if blogunun bitişine print koyarsam her yolcu kaydının altında tek tek alabiliyorum. İstediğim bilet gosterım şekli
name destınatıon fee
yolcu adı 1 ıstanbul 200
yolcu adı 2 ıstanbul 300
yolcu adı 3 ıstanbul 400
toplam 900 tl şeklinde bir print almayı beceremedım. Bunu nasıl yapabilirim. Teşekkürler.
destinations_fee = {'baby':
{'istanbul': 300, 'roma': 1000, 'boston': 2500, 'tokyo': 4000},
'child':
{'istanbul': 400, 'roma': 1500, 'boston': 7500, 'tokyo': 9000},
'adult':
{'istanbul': 600, 'roma': 4500, 'boston': 9500, 'tokyo': 12000}}
baby = False
child = False
adult = False
while True:
passenger_name = input("Enter Passenger's Name : ")
if passenger_name == "q":
print('Exit by user')
print("Flight Ticket printing")
break
passenger_age = int(input("Enter Passenger's age : "))
destination = input("Enter Destination : ")
if passenger_age <= 2:
baby = True
print(f"Mr/Mrs {passenger_name},"
f" Your flight's fee for {destination} is {destinations_fee['baby'][destination]} TL. ")
elif passenger_age <= 15:
child = True
print(f"Mr/Mrs {passenger_name},"
f" Your flight's fee for {destination} is {destinations_fee['child'][destination]} TL. ")
elif passenger_age > 15:
adult = True
print(f"Mr/Mrs {passenger_name},"
f" Your flight's fee for {destination} is {destinations_fee['adult'][destination]} TL. ")
else:
print('wrong age')
print(f'{"Fligt Ticket":-^100}')
print(f"{passenger_name}\t\t\t\t\t{destination}\t\t\t\t\t{destinations_fee['adult'][destination]}")
print('-'*100)
Merhaba,
-
baby
, child
ve adult
değişkenlerine ihtiyacınız yok. Onları silebilirsiniz. Hiç bir işlemde kullanmıyorsunuz bu değişkenleri.
-
while
döngüsüne girmeden bir tane liste oluşturun.
Örneğin:
passengers = []
-
if passenger_name == "q"
blokunun en altındaki break
sözcüğünden önceki satıra print("name destınatıon fee")
satırını yazın. Bu satır ile break
'in yazılı olduğu satır arasına da bir tane for
döngüsü yerleştirin. for
döngüsü while
döngüsünün dışında tanımlamış olduğunuz liste üzerinde etkili olsun.
Örneğin:
print("name destınatıon fee")
for p in passengers:
print(*p)
break
- Yolcunun yaşını sorgulayıp, girilen değerleri ekrana yazdırdığınız koşullardaki
baby
, child
ve adult
değişkenlerini kaldırın, çünkü hiç bir etkisi yok bu değişkenlerin. Bu koşullar altında ister print
ifadesinden önce, ister sonra kullanıcılardan aldığınız bilgileri listenize ekleyin.
Örneğin:
passengers.append([passenger_name, destination, destinations_fee['adult'][destination]])
1 Beğeni
Sn@dildeolupbiten ilginiz için teşekkür ederim. Benim kod dogru sonuclari veriyor ama Soylediklerinizi anlayabildigim kadariyla uyguladigimda kod bu sekli aldi.
destinations_fee = {'baby':
{'istanbul': 300, 'roma': 1000, 'boston': 2500, 'tokyo': 4000},
'child':
{'istanbul': 400, 'roma': 1500, 'boston': 7500, 'tokyo': 9000},
'adult':
{'istanbul': 600, 'roma': 4500, 'boston': 9500, 'tokyo': 12000}}
passengers = []
while True:
passenger_name = input("Enter Passenger's Name : ")
if passenger_name == "q":
print('Exit by user')
print("Flight Ticket printing")
print("name destınatıon fee")
for p in passengers:
print(*p)
break
passenger_age = int(input("Enter Passenger's age : "))
destination = input("Enter Destination : ")
if passenger_age <= 2:
print(f"Mr/Mrs {passenger_name},"
f" Your flight's fee for {destination} is {destinations_fee['baby'][destination]} TL. ")
elif passenger_age <= 15:
print(f"Mr/Mrs {passenger_name},"
f" Your flight's fee for {destination} is {destinations_fee['child'][destination]} TL. ")
elif passenger_age > 15:
print(f"Mr/Mrs {passenger_name},"
f" Your flight's fee for {destination} is {destinations_fee['adult'][destination]} TL. ")
else:
print('wrong age')
passengers.append([passenger_name, destination, destinations_fee['baby'][destination]])
passengers.append([passenger_name, destination, destinations_fee['child'][destination]])
passengers.append([passenger_name, destination, destinations_fee['adult'][destination]])
printide bu sekilde Nerede hata var acaba? sonuc 4500 1500 1000 olmali
Aşağıdaki ifadeleri ilgili if
ve elif
koşullarının altına dağıtmanız gerekiyor.
passengers.append([passenger_name, destination, destinations_fee['baby'][destination]])
passengers.append([passenger_name, destination, destinations_fee['child'][destination]])
passengers.append([passenger_name, destination, destinations_fee['adult'][destination]])
Mesela:
if passenger_age <= 2:
passengers.append([passenger_name, destination, destinations_fee['baby'][destination]])
print(f"Mr/Mrs {passenger_name},"
f" Your flight's fee for {destination} is {destinations_fee['baby'][destination]} TL. ")
Tek bilet halinde yine gosteremedim ama daha fazla ugrasmaya gerek yok sayenizde gozumden kacan degisken detayi sayesinde kodu daha kisa yazmayi ogrendim.
yazdiginiz
print(*p) seklindeki koduda ilk defa gordum yanilmiyorsam dongu ne kadar donduyse degiskeni o kadar print et demenin kestirme yolu
destinations_fee = {'baby':
{'istanbul': 300, 'roma': 1000, 'boston': 2500, 'tokyo': 4000},
'child':
{'istanbul': 400, 'roma': 1500, 'boston': 7500, 'tokyo': 9000},
'adult':
{'istanbul': 600, 'roma': 4500, 'boston': 9500, 'tokyo': 12000}}
passengers = []
while True:
passenger_name = input("Enter Passenger's Name : ")
if passenger_name == "q":
print('Exit by user')
break
elif passenger_name == "t":
print("Flight Ticket printing")
print(f"name\t\t\t\t\t destınatıon\t\t\t\t\t fee")
for p in passengers:
print(f'{"Fligt Ticket":-^100}')
print(*p)
print('-'*100)
break
passenger_age = int(input("Enter Passenger's age : "))
destination = input("Enter Destination : ")
if passenger_age <= 2:
print(f"Mr/Mrs {passenger_name},"
f" Your flight's fee for {destination} is {destinations_fee['baby'][destination]} TL. ")
passengers.append([passenger_name, destination, destinations_fee['baby'][destination]])
elif passenger_age <= 15:
print(f"Mr/Mrs {passenger_name},"
f" Your flight's fee for {destination} is {destinations_fee['child'][destination]} TL. ")
passengers.append([passenger_name, destination, destinations_fee['child'][destination]])
elif passenger_age > 15:
print(f"Mr/Mrs {passenger_name},"
f" Your flight's fee for {destination} is {destinations_fee['adult'][destination]} TL. ")
passengers.append([passenger_name, destination, destinations_fee['adult'][destination]])
else:
print('wrong age')
yanlışsam düzeltin print(*holder)
holder değişkeninin başındaki yıldız bu değişkenin iterable olduğunu ve print içinde unpack yani tüm değerlerinin listelenmesini sağlıyor sözlüklerde unpack içinde **holder
kullanabiliyoruz sozluk olmasi şart değil çift sekanslı listelerde de işe yariyor. *args **kwargs olarak araştırırsan güzel örnekler bulabilirsin.
2 Beğeni
Açıklamanız için teşekkür ederim. Araştırmamı istedikleriniz izlediğim yada okuduğum Yazbel Python dökümanlarında henüz karşıma çıkmadı en kısa zamanda araştırırım. Tekrar teşekkürler.
@dildeolupbiten sum() metodu ile donguden gelen p’nin value degerlerini nasil toplatabilirim .
listeden toplam aldirdim ama kod arap sacina dondu
destinations_fee = {'baby':
{'istanbul': 300, 'roma': 1000, 'boston': 2500, 'tokyo': 4000},
'child':
{'istanbul': 400, 'roma': 1500, 'boston': 7500, 'tokyo': 9000},
'adult':
{'istanbul': 600, 'roma': 4500, 'boston': 9500, 'tokyo': 12000}}
passengers = []
total_fee = 0
while True:
passenger_name = input("Enter Passenger's Name : ")
if passenger_name == 'quit':
print('Exit by user')
break
elif passenger_name == "t":
print("Flight Ticket printing")
print(f"name\t\t\t\t\t destınatıon\t\t\t\t\t fee")
for p in passengers:
print(f'{"Fligt Ticket":-^100}')
print(*p)
print('-'*100)
total_fee += p[2]
print(f"ticket's total fee : {total_fee}")
break
passenger_age = int(input("Enter Passenger's age : "))
destination = input("Enter Destination : ")
if passenger_age <= 2:
print(f"Mr/Mrs {passenger_name},"
f" Your flight's fee for {destination} is {destinations_fee['baby'][destination]} TL. ")
passengers.append([passenger_name, destination, destinations_fee['baby'][destination]])
elif passenger_age <= 15:
print(f"Mr/Mrs {passenger_name},"
f" Your flight's fee for {destination} is {destinations_fee['child'][destination]} TL. ")
passengers.append([passenger_name, destination, destinations_fee['child'][destination]])
elif passenger_age > 15:
print(f"Mr/Mrs {passenger_name},"
f" Your flight's fee for {destination} is {destinations_fee['adult'][destination]} TL. ")
passengers.append([passenger_name, destination, destinations_fee['adult'][destination]])
Şöyle yapabilirsiniz:
elif passenger_name == "t":
print("Flight Ticket printing")
print(f"name\t\t\t\t\t destınatıon\t\t\t\t\t fee")
for p in passengers:
print(f'{"Fligt Ticket":-^100}')
print(*p)
print('-'*100)
print(f"ticket's total fee : {sum(i[2] for i in passengers)}")
break