Çözüldü Python if kodu hata veriyor

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

William Crusader

Hectopat
Katılım
11 Kasım 2020
Mesajlar
5.359
Makaleler
1
Çözümler
15
Daha fazla  
Cinsiyet
Erkek
Meslek
Yok
Merhaba. Yaptığım kodda kullanıcıya iki soru sorup, soruları doğru cevaplayıp cevaplamadığını belirtmek istedim. Ve eğer kullanıcı soruları doğru cevaplarsa sorun çıkmıyor. Fakat ilk soruyu yanlış yaparsa şu sorun çıkıyor:
Traceback (most recent call last):
File "c:\Users\Admin\Desktop\ilk proje.py", line 188, in <module>
if answer2 > 134:
NameError: name 'answer2' is not defined.
Bunu nasıl düzelteceğim?
Kod:
answer1 = int(input("Welcome to our Exam! What is 8+1? ")) if answer1 > 9: print ("Wrong") elif answer1 < 9: print ("Wrong") elif answer1 == 9: print ("Correct") if answer1 == 9: answer2 = int(input("Question 2: Whats 72+42? ")) if answer2 > 134: print ("Wrong") elif answer2 < 134: print ("Wrong") elif answer2 == 0: print ("Wrong") elif answer2 == 134: print ("Correct")
 
Çözüm
Sorunun kaynağı yukarda da yazıldığı gibi answer2'nin tanımlandığı yerin sadece bir koşulda gerçekleşmesi, sorunu çözmek için tanımlandığı yerde soldaki sütunla olan boşluğunu silin.

Ve kodunuzu şu şekilde sadeleştirmenizi öneririm.

Kod yazmanın yanı sıra temiz, anlaşılabilir ve sade kod yazmak da önemlidir.

Son olarak 72+42 için doğru cevap 114'dür.

Başka extra belirtmek istediğiniz bir durum/koşul ya da isteğiniz varsa kodları ona göre şekillendirebilirim.

kod.PNG
Tebrikler, gayet açık ve net olmuş ama kullanıcının ilk soruda yanlış yapınca direkt olarak sınavda başarısız olması sizce de biraz acımasızca değil mi?
Tamam fakat puan sistemine göre yapmaya çalıştım, fakat 1. soru doğru olup 2. soru doğru olursa puanın 50 olmasını sağlayamıyorum.
 
Tamam fakat puan sistemine göre yapmaya çalıştım, fakat 1. soru doğru olup 2. soru doğru olursa puanın 50 olmasını sağlayamıyorum.
Integer tipinde değişken tanımlamayı ve çıktı verilirken format yöntemi kullanmayı biliyorsanız dediğinizi yapıp size anlatabilirim.
 
Integer tipinde değişken tanımlamayı ve çıktı verilirken format yöntemi kullanmayı biliyorsanız dediğinizi yapıp size anlatabilirim.
Kendim de yaptım fakat galiba overcoded oldu.
[CODE lang="python" title="Kod" highlight="25"]answer1 = int(input("Question 1:What is 8+1? "))
if answer1 == 9:
print ("True! You gained 50 points.")
else:
print ("False, you lost 50 points.")

answer2 = int(input("Question 2:What's 72+42? "))
if answer2 == 114 and answer1 == 9:
print("True! You passed the Exam! Your point is 100.")
elif answer2 == 114 and answer1 <9:
print ("True! You gained 50 points. You have 50 points now.")
elif answer2 == 114 and answer1 >9:
print ("True! You gained 50 points. You have 50 points now.")
elif answer2 <114 and answer1 == 9:
print ("False, you lost 50 points. You have 50 points now.")
elif answer2 >114 and answer1 == 9:
print ("False, you lost 50 points. You have 50 points now.")
elif answer2 <114 and answer1 <9:
print ("False, you lost 50 points. You have 0 points now.")
elif answer2 >114 and answer1 >9:
print ("False, you lost 50 points. You have 0 points now.")
elif answer2 >114 and answer1 <9:
print ("False, you lost 50 points. You have 0 points now.")
elif answer2 <114 and answer1 >9:
print ("False, you lost 50 points. You have 0 points now.")[/CODE]
 
Şu hale getirirseniz çok daha güzel ve anlaşılır olacaktır. Anlamadığınız bir nokta varsa sorun açıklayayım.

[CODE lang="python" title="SINAV"]# EXAM
OgrenciNotu = 0 # Öğrencinin sınav başlamadan önceki notudur.

answer1 = int(input("Welcome to our Exam! What is 8+1? "))
if answer1 == 9:
print("Correct")
OgrenciNotu = OgrenciNotu + 50 #Soruyu doğru cevaplandırdığı için 50 Puan kazandı.
else:
print("Wrong")

answer2 = int(input("Question 2: Whats 72+42? "))
if answer2 == 114:
print("Correct")
OgrenciNotu = OgrenciNotu + 50 #Soruyu doğru cevaplandırdığı için 50 Puan daha kazandı.
else:
print("Wrong")

print("Sınavınız bitmiştir. Toplam notunuz: {}".format(OgrenciNotu))[/CODE]
 
Son düzenleme:
Kodun EN SON hali bu. Uğraştırdı ama değdi bence.
[CODE title="Kod"]
print("AI: What's Your Name? ")
name = input("You: ")
print ("Hmm... Then Where do you live?")
country = input("You: ")
print ("Good. Last thing, What's Your Hobby?")
hobby = input("You: ")
print("")
print("")
print("")
print ("Hello "+str(name))
print ("From "+str(country))
print ("That loves "+str(hobby))
print("")
print("")
print("")
print ("If we something about you,that means we can pass into an Exam, " +str(name))
answer1 = int(input("Question 1:What is 8+1? "))
if answer1 == 9:
print ("True! lets pass into next Question.")
else:
print ("False, lets pass into next Question.")
answer2 = int(input("Question 2:What's 72+42? "))
if answer2 == 114 and answer1 == 9:
print("True! The Exam is over.")
elif answer2 == 114 and answer1 <9:
print ("True! The Exam is over.")
elif answer2 == 114 and answer1 >9:
print ("True! The Exam is over.")
elif answer2 <114 and answer1 == 9:
print ("False, The Exam is over.")
elif answer2 >114 and answer1 == 9:
print ("False, The Exam is over.")
elif answer2 <114 and answer1 <9:
print ("False, The Exam is over.")
elif answer2 >114 and answer1 >9:
print ("False, The Exam is over.")
elif answer2 >114 and answer1 <9:
print ("False, The Exam is over.")
elif answer2 <114 and answer1 >9:
print ("False, The Exam is over.")
print("")
print("")
print("")
print ("Final results are:")
print ("Name = " +str(name))
print ("Country = " +str(country))
print ("Hobby = " +str(hobby))
if answer2 == 114 and answer1 == 9:
print("Points = 100")
elif answer2 == 114 and answer1 <9:
print ("Points = 50")
elif answer2 == 114 and answer1 >9:
print ("Points = 50")
elif answer2 <114 and answer1 == 9:
print ("Points = 50")
elif answer2 >114 and answer1 == 9:
print ("Points = 50")
elif answer2 <114 and answer1 <9:
print ("Points = 0")
elif answer2 >114 and answer1 >9:
print ("Points = 0")
elif answer2 >114 and answer1 <9:
print ("Points = 0")
elif answer2 <114 and answer1 >9:
print ("Points = 0")
[/CODE]
 
Kodun EN SON hali bu. Uğraştırdı ama değdi bence.
[CODE title="Kod"]
print("AI: What's Your Name? ")
name = input("You: ")
print ("Hmm... Then Where do you live?")
country = input("You: ")
print ("Good. Last thing, What's Your Hobby?")
hobby = input("You: ")
print("")
print("")
print("")
print ("Hello "+str(name))
print ("From "+str(country))
print ("That loves "+str(hobby))
print("")
print("")
print("")
print ("If we something about you,that means we can pass into an Exam, " +str(name))
answer1 = int(input("Question 1:What is 8+1? "))
if answer1 == 9:
print ("True! lets pass into next Question.")
else:
print ("False, lets pass into next Question.")
answer2 = int(input("Question 2:What's 72+42? "))
if answer2 == 114 and answer1 == 9:
print("True! The Exam is over.")
elif answer2 == 114 and answer1 <9:
print ("True! The Exam is over.")
elif answer2 == 114 and answer1 >9:
print ("True! The Exam is over.")
elif answer2 <114 and answer1 == 9:
print ("False, The Exam is over.")
elif answer2 >114 and answer1 == 9:
print ("False, The Exam is over.")
elif answer2 <114 and answer1 <9:
print ("False, The Exam is over.")
elif answer2 >114 and answer1 >9:
print ("False, The Exam is over.")
elif answer2 >114 and answer1 <9:
print ("False, The Exam is over.")
elif answer2 <114 and answer1 >9:
print ("False, The Exam is over.")
print("")
print("")
print("")
print ("Final results are:")
print ("Name = " +str(name))
print ("Country = " +str(country))
print ("Hobby = " +str(hobby))
if answer2 == 114 and answer1 == 9:
print("Points = 100")
elif answer2 == 114 and answer1 <9:
print ("Points = 50")
elif answer2 == 114 and answer1 >9:
print ("Points = 50")
elif answer2 <114 and answer1 == 9:
print ("Points = 50")
elif answer2 >114 and answer1 == 9:
print ("Points = 50")
elif answer2 <114 and answer1 <9:
print ("Points = 0")
elif answer2 >114 and answer1 >9:
print ("Points = 0")
elif answer2 >114 and answer1 <9:
print ("Points = 0")
elif answer2 <114 and answer1 >9:
print ("Points = 0")
[/CODE]
Hocam, tek amacınız doğru çıktıyı almak olmasın. Bu çıktıya en kolay ve rahat nasıl gidebilirim ve bunları başka bir programcıya gösterdiğiniz de o da nasıl daha iyi anlar? Böyle düşünün. Sizin kodunuz da doğru çalışıyor olabilir ancak bu kadar satır emeğiniz yani iş gücünüzü daha fazla kısaltmak mümkün iken oturup 2 kere düşünün daha temiz bir algoritma için.

İlk defa öğreniyorsanız ve bu işlerde yeniyseniz tabii ki böyle denemeler yapmak güzeldir ancak işler ilerledikçe satır sayısı az işlevi fazla şeyler yazmak durumunda kalacaksınız.

Yolunuz açık olsun şimdiden, ileride herhangi bir Python sorunuz olduğunda beni etiketleyebilirsiniz.
 
Hocam, tek amacınız doğru çıktıyı almak olmasın. Bu çıktıya en kolay ve rahat nasıl gidebilirim ve bunları başka bir programcıya gösterdiğiniz de o da nasıl daha iyi anlar? Böyle düşünün. Sizin kodunuz da doğru çalışıyor olabilir ancak bu kadar satır emeğiniz yani iş gücünüzü daha fazla kısaltmak mümkün iken oturup 2 kere düşünün daha temiz bir algoritma için.

İlk defa öğreniyorsanız ve bu işlerde yeniyseniz tabii ki böyle denemeler yapmak güzeldir ancak işler ilerledikçe satır sayısı az işlevi fazla şeyler yazmak durumunda kalacaksınız.

Yolunuz açık olsun şimdiden, ileride herhangi bir Python sorunuz olduğunda beni etiketleyebilirsiniz.
Şuan saat geç olduğu için yarın satırları azaltmaya çalışacağım.
Hocam, tek amacınız doğru çıktıyı almak olmasın. Bu çıktıya en kolay ve rahat nasıl gidebilirim ve bunları başka bir programcıya gösterdiğiniz de o da nasıl daha iyi anlar? Böyle düşünün. Sizin kodunuz da doğru çalışıyor olabilir ancak bu kadar satır emeğiniz yani iş gücünüzü daha fazla kısaltmak mümkün iken oturup 2 kere düşünün daha temiz bir algoritma için.

İlk defa öğreniyorsanız ve bu işlerde yeniyseniz tabii ki böyle denemeler yapmak güzeldir ancak işler ilerledikçe satır sayısı az işlevi fazla şeyler yazmak durumunda kalacaksınız.

Yolunuz açık olsun şimdiden, ileride herhangi bir Python sorunuz olduğunda beni etiketleyebilirsiniz.
Biraz daha düzenleme yaptım. Kod şuan eskisine göre çok daha kısa.
[CODE lang="python" title="Kod"]print("AI: What's Your Name? ")
name = input("You: ")
print ("Hmm... Then Where do you live?")
country = input("You: ")
print ("Good. Last thing, What's Your Hobby?")
hobby = input("You: ")

print("")
print("")

print ("Hello "+str(name))
print ("From "+str(country))
print ("That loves "+str(hobby))

print("")
print("")

print ("If we something about you,that means we can pass into an Exam, " +str(name))

Points = 0

answer1 = int(input("Question 1:What is 8+1? "))
if answer1 == 9:
print ("True! let's get into next Question.")
Points = Points + 50
else:
print ("False, let's get into next question.")

answer2 = int(input("Question 2: What's 26+54?"))
if answer2 == 80:
Points = Points + 50
print ("True! Exam is over.")
else:
print ("False, Exam is over.")
print("")
print("")

print ("Final results are:")
print ("Name = " +str(name))
print ("Country = " +str(country))
print ("Hobby = " +str(hobby))
print ("Points = " +str(Points))[/CODE]
 
Son düzenleme:

Yeni konular

Geri
Yukarı