Ana sayfa
/
Teknoloji
/
python dilinde kulanıcıya her seferde farklı bölme sorusu soran ve cevap doğru/yanlış bilgisini kullanıcıya geri bildirim veren programı yazınız

Soru

python dilinde kulanıcıya her seferde farklı bölme sorusu soran ve cevap doğru/yanlış bilgisini kullanıcıya geri bildirim veren programı yazınız

Çözüm

4.6339 Voting
avatar
Teoman
Profesyonel · 6 yıl öğretmeni
Uzman doğrulaması

Cevap

Verilen Python kodlu örnekte birkaç hata bulunmaktadır. İlk olarak, bölme işleminin sonucu genellikle ondalıklı bir sayı olacağından `answer.isdigit()` ve `int(answer) == x / y` kullanımı hatalı olacaktır. Bunun yerine, kullanıcıdan alınan cevabın ondalıklı sayı olup olmadığını kontrol eden ve `float` türüne çeviren bir yaklaşım kullanmak daha doğru olur. Ayrıca, bölme işleminin sonucu ondalıklı bir sayı olduğunda, sonuç doğrularken bir yuvarlama ya da tolerans kullanmak gerekebilir çünkü kullanıcı ondalıklı kısmı farklı olarak girebilir. İşte düzeltilmiş ve optimize edilmiş kod:<br /><br />```python<br />import random<br /><br /># Programı durdurma durumuna kadar devam ettiren döngü<br />while True:<br /> # Rasgele sayılar üretilerek bölme sorusu oluşturulur<br /> dividend = random.randint(1, 10)<br /> divisor = random.randint(1, 10)<br /> <br /> # Kullanıcıya soru sorulur<br /> try:<br /> # float() kullanarak cevabı ondalıklı sayıya çevirebiliriz<br /> user_answer = float(input(f"{dividend} bölü {divisor} = "))<br /><br /> # Gerçek ve kullanıcı cevabını karşılaştırma<br /> # round() fonksiyonu ile iki ondalıklı bastaki doğrulukla karşılaştırma yapılır<br /> if round(dividend / divisor, 2) == round(user_answer, 2):<br /> print("Doğru cevap!")<br /> else:<br /> print(f"Yanlış cevap! Doğru cevap: {round(dividend / divisor, 2)}")<br /> except ValueError:<br /> print("Lütfen geçerli bir sayı girin.")<br /><br /> # Kullanıcıdan bir daha denemek isteyip istemediği sorulur<br /> continue_prompt = input("Bir daha denemek ister misin? (evet/hayır): ")<br /> if continue_prompt.lower() != 'evet':<br /> break<br />```<br /><br />Bu kodda;<br /><br />- `input()` ile kullanıcıdan cevap alınır ve `float()` fonksiyonu ile ondalıklı sayıya çevrilir.<br />- `round()` fonksiyonu ile hem gerçek sonuç hem de kullanıcı tarafından girilen cevap iki ondalıklı basamakta yuvarlanır ve karşılaştırılır.<br />- Kullanıcının girdisi geçerli bir sayı değilse `ValueError` yakalanır ve doğru giriş yapılması istenir.<br />- Kullanıcıya programı durdurmak isteyip istemediği sorulur.<br /><br />Bu kod parçacığı, verilen gereklilikleri karşılayacak ve kullanıcıya bölme işlemi sorularını sormalarını, cevaplarını kontrol etmelerini, ve doğru/yanlış geri bildirim veren bir program olarak çalışacaktır.
Derecelendirmek için tıklayın: