Çözüldü Pyhton İle Yazdığım Kodu Çalıştırdığımda Program Kapanıyor

J700

Adanmış Üye
20 Ocak 2011
6,905
11
alanya
enflasyon hesaplama yerine geldiğim anda program kapanıyor nerde hata var Python dili ile yazıldı

yapay zekaya yazdırdım programlama bilmiyorum

urunler = {} while True: urun_adi = input("Ürün adını girin (çıkmak için 'q' basın): ") if urun_adi == 'q': break urun_fiyati = float(input("Enflasyon oncesi fiyati girin: ")) urunler[urun_adi] = urun_fiyati while True: zam_orani = input("enflasyon oranını girin (örneğin %10 için 10): ") try: zam_orani = float(zam_orani) / 100 break except ValueError: print("Geçersiz bir değer girdiniz. Lütfen tekrar deneyin.") print("enflasyon sonrası fiyatlar: ") for urun in urunler: zamlı_fiyat = urunler[urun] * (1 + zam_orani) print(urun + ": " + str(zamlı_fiyat))
 
Moderatör tarafında düzenlendi:
Çözüm
Merhaba Değerli Üyemiz, kodun son satırı, bir parantez eksikliği nedeniyle SyntaxError hatası veriyor. Kodun son satırındaki print fonksiyonunun yarım kalan parantezini tamamlamak hatayı giderecektir.

Birde böyle deneyin
Kod:
urunler = {}



while True:

    urun_adi = input("Ürün adını girin (çıkmak için 'q' basın): ")

    if urun_adi == 'q':

        break



    urun_fiyati = float(input("Enflasyon oncesi fiyati girin: "))

    urunler[urun_adi] = urun_fiyati



while True:

    zam_orani = input("enflasyon oranını girin (örneğin %10 için 10): ")

    try:

        zam_orani = float(zam_orani) / 100

        break

    except ValueError:

        print("Geçersiz bir değer girdiniz. Lütfen tekrar deneyin.")



print("enflasyon sonrası...

'Anka

Basın&Medya Ekibi Kıdemli
8 Eyl 2021
3,384
2,577
Merhaba Değerli Üyemiz, kodun son satırı, bir parantez eksikliği nedeniyle SyntaxError hatası veriyor. Kodun son satırındaki print fonksiyonunun yarım kalan parantezini tamamlamak hatayı giderecektir.

Birde böyle deneyin
Kod:
urunler = {}



while True:

    urun_adi = input("Ürün adını girin (çıkmak için 'q' basın): ")

    if urun_adi == 'q':

        break



    urun_fiyati = float(input("Enflasyon oncesi fiyati girin: "))

    urunler[urun_adi] = urun_fiyati



while True:

    zam_orani = input("enflasyon oranını girin (örneğin %10 için 10): ")

    try:

        zam_orani = float(zam_orani) / 100

        break

    except ValueError:

        print("Geçersiz bir değer girdiniz. Lütfen tekrar deneyin.")



print("enflasyon sonrası fiyatlar: ")

for urun in urunler:

    zamlı_fiyat = urunler[urun] * (1 + zam_orani)

    print(urun + ": " + str(zamlı_fiyat))
 
Çözüm

Quixera

Üye
15 Eyl 2012
84
42
Merhaba, güzel günleriniz olsun.
İstediğiniz kodun arayüzlü versiyonu bu spoylerin içindedir.
Python:
import tkinter as tk

def enflasyon_hesapla():
    zam_orani = float(zam_orani_entry.get()) / 100
    for urun in urunler:
        zamlı_fiyat = urunler[urun] * (1 + zam_orani)
        result_text.insert(tk.END, f"{urun}: {zamlı_fiyat}\n")

def urun_ekle():
    urun_adi = urun_adi_entry.get()
    urun_fiyati = float(urun_fiyati_entry.get())
    urunler[urun_adi] = urun_fiyati
    urun_adi_entry.delete(0, tk.END)
    urun_fiyati_entry.delete(0, tk.END)

urunler = {}

root = tk.Tk()
root.title("Enflasyon Hesaplayıcı")

urun_adi_label = tk.Label(root, text="Ürün Adı:")
urun_adi_label.grid(row=0, column=0)
urun_adi_entry = tk.Entry(root)
urun_adi_entry.grid(row=0, column=1)

urun_fiyati_label = tk.Label(root, text="Enflasyon Öncesi Fiyat:")
urun_fiyati_label.grid(row=1, column=0)
urun_fiyati_entry = tk.Entry(root)
urun_fiyati_entry.grid(row=1, column=1)

ekle_button = tk.Button(root, text="Ürün Ekle", command=urun_ekle)
ekle_button.grid(row=2, columnspan=2)

zam_orani_label = tk.Label(root, text="Enflasyon Oranı (%):")
zam_orani_label.grid(row=3, column=0)
zam_orani_entry = tk.Entry(root)
zam_orani_entry.grid(row=3, column=1)

hesapla_button = tk.Button(root, text="Enflasyon Sonrası Fiyatları Hesapla", command=enflasyon_hesapla)
hesapla_button.grid(row=4, columnspan=2)

result_text = tk.Text(root, wrap=tk.WORD, width=40, height=10)
result_text.grid(row=5, columnspan=2)

root.mainloop()
Ek olarak vereceğim daha gelişmiş bir kod örneği;
ürün adı, kullanım sıklığı, eski fiyat ve yeni fiyat. Bu senaryoda Ürün adı ekmek, kullanım sıklığı bir ailenin ayda kaç ekmek tükettiği(60) eski fiyat x yeni fiyat y arayüzde ekle butonuna basınız. İkinci ürün süt, ayda kullanım sıklığı misal 4 eski fiyat yeni fiyat... Şeklinde tüm ürünleri ekleyip en son hesaplaya bastığınız zaman ağırlıklı ortalamalara göre enflasyonu hesaplar.
Python:
import tkinter as tk

def urun_ekle():
    urun_adi = urun_adi_entry.get()
    kullanım_sıklığı = int(kullanım_sıklığı_entry.get())
    eski_fiyat = float(eski_fiyat_entry.get())
    yeni_fiyat = float(yeni_fiyat_entry.get())
    urunler[urun_adi] = (eski_fiyat, yeni_fiyat, kullanım_sıklığı)
    urun_adi_entry.delete(0, tk.END)
    kullanım_sıklığı_entry.delete(0, tk.END)
    eski_fiyat_entry.delete(0, tk.END)
    yeni_fiyat_entry.delete(0, tk.END)

def ortalama_enflasyon_hesapla():
    toplam_enflasyon = 0
    toplam_agırlık = 0

    for urun in urunler:
        eski_fiyat, yeni_fiyat, sıklık = urunler[urun]
        enflasyon = (yeni_fiyat - eski_fiyat) / eski_fiyat
        toplam_enflasyon += enflasyon * sıklık
        toplam_agırlık += sıklık

    ortalama_enflasyon = toplam_enflasyon / toplam_agırlık
    result_label.config(text=f"Ortalama Enflasyon: {ortalama_enflasyon*100:.2f}%")

urunler = {}

root = tk.Tk()
root.title("Ortalama Enflasyon Hesaplayıcı")

urun_adi_label = tk.Label(root, text="Ürün Adı:")
urun_adi_label.grid(row=0, column=0)
urun_adi_entry = tk.Entry(root)
urun_adi_entry.grid(row=0, column=1)

kullanım_sıklığı_label = tk.Label(root, text="Kullanım Sıklığı:")
kullanım_sıklığı_label.grid(row=1, column=0)
kullanım_sıklığı_entry = tk.Entry(root)
kullanım_sıklığı_entry.grid(row=1, column=1)

eski_fiyat_label = tk.Label(root, text="Eski Fiyat:")
eski_fiyat_label.grid(row=2, column=0)
eski_fiyat_entry = tk.Entry(root)
eski_fiyat_entry.grid(row=2, column=1)

yeni_fiyat_label = tk.Label(root, text="Yeni Fiyat:")
yeni_fiyat_label.grid(row=3, column=0)
yeni_fiyat_entry = tk.Entry(root)
yeni_fiyat_entry.grid(row=3, column=1)

ekle_button = tk.Button(root, text="Ürün Ekle", command=urun_ekle)
ekle_button.grid(row=4, columnspan=2)

hesapla_button = tk.Button(root, text="Ortalama Enflasyonu Hesapla", command=ortalama_enflasyon_hesapla)
hesapla_button.grid(row=5, columnspan=2)

result_label = tk.Label(root, text="")
result_label.grid(row=6, columnspan=2)

root.mainloop()
Erbakan Hocanın ve Rahmetli Türkeş'in sözlerini bir arada imzanızda barındırmanız tek başına bir hatır kaynağı.

Sevgiler, saygılar.

-Quixera
 

J700

Adanmış Üye
20 Ocak 2011
6,905
11
alanya
çok teşekkürler hallettim ama bir şey daha yapmak istiyorum fiyatlar yazarken 1000000 bu şekilde yazıyor okunma kolaylığı bakımından 1.000.000 şeklinde yazmasını nasıl sağlayabilirim

Python:
# Enflasyon oranını ve ürün fiyatlarını kullanıcıdan alın
enflasyon_orani = float(input("Enflasyon oranını girin (% cinsinden): "))
urunler = {}
while True:
    urun_adi = input("Teminat adını girin örneğin ECS yazın entere basın (ileri gitmek için dry yazın): ")
    if urun_adi == "dry":
        break
    urun_fiyati = float(input("Eski poliçe üzerindeki bedeli girin: "))
    urunler[urun_adi] = urun_fiyati

# Hesaplama seçeneğini kullanıcıya sun
print("Hesaplama yapmak için 'hesapla' yazın.")
while True:
    secim = input("Hesapla yazın: ")
    if secim == "hesapla":
        # Tüm ürünlerin enflasyonlu fiyatlarını hesapla ve yazdır
        toplam_fiyat = 0
        for urun, fiyat in urunler.items():
            enflasyonlu_fiyat = fiyat * (1 + enflasyon_orani / 100)
            print(f"{urun}: {enflasyonlu_fiyat:.2f}")
            toplam_fiyat += enflasyonlu_fiyat
        print(f"Toplam sigorta bedeli: {toplam_fiyat:.2f}")
    else:
        break
 

Quixera

Üye
15 Eyl 2012
84
42
çok teşekkürler hallettim ama bir şey daha yapmak istiyorum fiyatlar yazarken 1000000 bu şekilde yazıyor okunma kolaylığı bakımından 1.000.000 şeklinde yazmasını nasıl sağlayabilirim

Python:
# Enflasyon oranını ve ürün fiyatlarını kullanıcıdan alın
enflasyon_orani = float(input("Enflasyon oranını girin (% cinsinden): "))
urunler = {}
while True:
    urun_adi = input("Teminat adını girin örneğin ECS yazın entere basın (ileri gitmek için dry yazın): ")
    if urun_adi == "dry":
        break
    urun_fiyati = float(input("Eski poliçe üzerindeki bedeli girin: "))
    urunler[urun_adi] = urun_fiyati

# Hesaplama seçeneğini kullanıcıya sun
print("Hesaplama yapmak için 'hesapla' yazın.")
while True:
    secim = input("Hesapla yazın: ")
    if secim == "hesapla":
        # Tüm ürünlerin enflasyonlu fiyatlarını hesapla ve yazdır
        toplam_fiyat = 0
        for urun, fiyat in urunler.items():
            enflasyonlu_fiyat = fiyat * (1 + enflasyon_orani / 100)
            print(f"{urun}: {enflasyonlu_fiyat:.2f}")
            toplam_fiyat += enflasyonlu_fiyat
        print(f"Toplam sigorta bedeli: {toplam_fiyat:.2f}")
    else:
        break
Benim verdiğim kod örneğinde alttaki kod dediğiniz görevi yapıyor. Veyahut
Python:
def ortalama_enflasyon_hesapla():
    # ...
    ortalama_enflasyon = toplam_enflasyon / toplam_agırlık
    formatli_ortalama_enflasyon = format(ortalama_enflasyon * 100, ',.2f')
    result_label.config(text=f"Ortalama Enflasyon: %{formatli_ortalama_enflasyon}")

Sizin verdiğiniz kod örneğinde ise
Python:
 for urun, fiyat in urunler.items():

            enflasyonlu_fiyat = fiyat * (1 + enflasyon_orani / 100)
            formatli_enflasyonlu_fiyat = format(enflasyonlu_fiyat, ',.2f')

            print(f"{urun}: {formatli_enflasyonlu_fiyat}")

        formatli_toplam_fiyat = format(toplam_fiyat, ',.2f')
        print(f"Toplam sigorta bedeli: {formatli_toplam_fiyat}")

Bu değişiklik oluyor sanırım isteğiniz.
 

Helmsys

Ar-Ge Ekibi Kıdemli
16 Mar 2022
1,492
1,653
1000000 bu şekilde yazıyor okunma kolaylığı bakımından 1.000.000 şeklinde yazmasını nasıl sağlayabilirim
yazılı olan bu sayıyı alın. Eğer tam sayı ise bunu string veri türüne çevirin. Çünkü elemanlar arasında ilerleyebilme şansımız olsun.
Stringe çevirdiğiniz değerin uzunluğunu alın. Bu bize kaç basamaklı bir sayı olduğunu söyleyecek. For döngüsü oluşturun. Döngü iki adet değişken barındırsın ve döngü enumerate yapısına sahip olsun. Döngünün ilk elemanı o anki sayının kaçıncı elemanı olduğunu verecek, ikinci elemanı ise o anki sayıyı. Şimdi bir koşul oluşturun. Koşul sağdan olmak üzere üçerli gruplara ayrılan ve en baştaki eleman sıfır olmadığı sürece "." nokta ekleyin, koşuldan çıkın. Bir başka değişkene döngünün ikinci elemanını kaydedin.

Yani öyle bir kod yazın:

Python:
a = "178567998"
result = ""
for j,k in enumerate(a):
    if (len(a)-j) % 3 == 0 and j != 0:
        result += "."
    result += k
print(result)

Bu kodda j ve k olmak üzere iki değişken var. Bunlardan j, enumerate sınıfının ürettiği ".nci" değer, k değişkeni ise ".nci" değerdeki eleman.
Yani ben "Merhaba" ifadesini enumerate yapıp ekranda gösterirsem şöyle bir görüntü ortaya çıkar:



işte bu döngü sayısını basamak sayısından çıkarınca biz aslında "178567998" sayısının en sağındaki basamağından (birler basamağı) itibaren işlem yapmış oluyoruz.
Döngü her üç adımda bir ve 0. adım olmadığı sürece değişkene bir nokta ekler koşuldan çıkıp ".ncı" adımdaki değeri result ifadesine ekler.

Yani (Çok fazla kullandım bu kelimeyi galiba :D) koşul her sağlandığında nokta, koşul sağlanmadığı her tekrar içinde o anki ifadeyi değişkene kaydeder.
Böylece "178567998" sayısının çıktısı aşağıdaki gibi olur;



178.567.998
(yüz yetmiş sekiz milyon beş yüz altmış yedi bin dokuz yüz doksan sekiz)
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.