Basit bir programlama zorluğu için mi takıldınız? Arkadaşlarınızı ve ailenizi test etmek için kendi testinizi yazmayı deneyin; Python’da kolaydır.
Python’da kısa komut satırı projeleri yaparak programlamayı öğrenme alıştırması yapabilirsiniz. Yapabileceğiniz projelerden biri, kullanıcıya farklı türden sorular sorabileceğiniz etkileşimli bir sınavdır.
Sorabileceğiniz sorular arasında çoktan seçmeli sorular veya yazılı cevap gerektiren sorular yer alır. Alternatif doğru cevapları olan sorular da sorabilirsiniz. Hatta programınızın kullanıcıya ipuçları vermesini sağlayabilirsiniz.
Python Komut Dosyası Nasıl Oluşturulur ve İlk Test Sorunuzu Ekleyin
Bir Python dosyası oluşturun ve ilk sorunuzu ekleyin. Python’da daha önce kodlama yapmadıysanız, Python’u ücretsiz öğrenebileceğiniz birçok kurs ve kaynak var.
“InteractiveQuiz.py” adlı yeni bir metin dosyası oluşturun.
Dosyayı herhangi bir metin düzenleyiciyi kullanarak açın ve kullanıcıyı teste davet etmek için ilk print ifadenizi ekleyin.
print(“Hello, welcome to the geography quiz. Answer the questions as they are presented.”)
İlk soruyu kullanıcıya sorun. Kullanıcının yanıtını beklemek için input() işlevini kullanın ve girdilerini “userInput” değişkenine kaydedin.
print(“Question 1. What city is the capital of Australia?”)
userInput = input()
Kullanıcının girdisinin doğru yanıtla eşleşip eşleşmediğini kontrol etmek için bir koşul ekleyin. Kullanıcı doğru yanıt verdiyse, onlara “doğru” bir mesaj gösterin. Değilse, doğru cevabı görüntüleyin.
if (userInput.lower() == “Canberra”.lower()):
print(“That is correct!”)
else:
print(“Sorry, the correct answer is Canberra.”)
Testinizi çalıştırmak ve sorunuzun işe yarayıp yaramadığını test etmek için komut satırını açın ve Python dosyanızın konumuna gidin. Örneğin, dosyanızı Desktop adlı bir dizinde sakladıysanız, komut şöyle olacaktır:
cd Desktop
Testi yürütmek için python komutunu çalıştırın.
python InteractiveQuiz.py
Test sorusuna bir cevap verin.
Teste Birden Çok Soru Nasıl Eklenir
Yukarıdaki kodu tekrarlayarak birkaç soru ekleyebilirsiniz. Ancak bu, kodunuzu gereksiz yere uzatacak ve güncellemeyi zorlaştıracaktır. Daha iyi bir yaklaşım için, soruyla ilgili bilgileri bunun yerine bir nesnede saklayın.
Python dosyasının en üstüne, bir sınav sorusu hakkında bilgi depolamak için bir sınıf ekleyin. Bunu daha önce yapmadıysanız, Python’da bir sınıfın nasıl oluşturulacağı hakkında daha fazla bilgi edinebilirsiniz .
class Question:
def __init__(self, questionText, answer):
self.questionText = questionText
self.answer = answer
def __repr__(self):
return ‘{‘+ self.questionText +’, ‘+ self.answer +’}’
Sınıfın altına bir dizi soru nesnesi ekleyin. Bu nesneler, testin kullanıcıya gösterdiği soru metnini doğru cevapla birlikte saklayacaktır.
quizQuestions = [
Question(“Question 1. What city is the capital of Australia”, “Canberra”),
Question(“Question 2. What city is the capital of Japan”, “Tokyo”),
Question(“Question 3. How many islands does the Philippines have”, “7100”)
]
Mevcut if ifadesini ve kullanıcı giriş kodunu değiştirin. Bunun yerine, quizQuestions dizisini yinelemek için bir for döngüsü kullanın. Her soru için soruyu görüntüleyin ve kullanıcının girdisini doğru yanıtla karşılaştırın.
for question in quizQuestions:
print(f”{question.questionText}?”)
userInput = input()
if (userInput.lower() == question.answer.lower()):
print(“That is correct!”)
else:
print(f”Sorry, the correct answer is {question.answer}.”)
Çoktan Seçmeli Sorular Nasıl Eklenir
Soru sınıfını çoktan seçmeli soruları içerecek şekilde genişletebilirsiniz.
Dosyanın en üstündeki Question sınıfını değiştirin. MultipleChoiceOptions adlı isteğe bağlı bir öznitelik ekleyin.
class Question:
def __init__(self, questionText, answer, multipleChoiceOptions=None):
self.questionText = questionText
self.answer = answer
self.multipleChoiceOptions = multipleChoiceOptions
def __repr__(self):
return ‘{‘+ self.questionText +’, ‘+ self.answer +’, ‘+ str(self.multipleChoiceOptions) +’}’
quizQuestions dizisine başka bir soru ekleyin. Soru için bazı çoktan seçmeli seçenekleri saklayın.
quizQuestions = [
Question(“Question 1. What city is the capital of Australia”, “Canberra”),
Question(“Question 2. What city is the capital of Japan”, “Tokyo”),
Question(“Question 3. How many islands does the Philippines have”, “7100”),
Question(“Question 4. Which country takes the most land mass”, “b”, [“(a) United States”, “(b) Russia”, “(c) Australia”, “(d) Antarctica”]),
]
For döngüsünün soruyu kullanıcıya görüntüleyen kısmını değiştirin. Soru için çoktan seçmeli seçenekler varsa, bunları sorudan sonra ve kullanıcının girdisini almadan önce görüntüleyin.
for question in quizQuestions:
if (question.multipleChoiceOptions != None):
print(f”{question.questionText}?”)
for option in question.multipleChoiceOptions:
print(option)
userInput = input()
else:
print(f”{question.questionText}?”)
userInput = input()
if (userInput.lower() == question.answer.lower()):
print(“That is correct!”)
else:
print(f”Sorry, the correct answer is {question.answer}.”)
Alternatif Doğru Cevapları Olan Bir Soru Nasıl Eklenir?
Bazen kullanıcının cevabın bir kısmını yazabileceği sorular olabilir, ancak bu teknik olarak yine de doğrudur.
Örneğin, testinizdeki sorulardan biri “Japonya hangi yarım kürede yer alıyor?” olabilir. Bu durumda kullanıcı “Kuzey”, “Kuzey” veya “Kuzey Yarım Küre” yazabilir ve yine de doğru olabilir.
Question sınıfına isteğe bağlı başka bir özellik ekleyin. Bu özellik, kullanıcının girebileceği olası tüm alternatif doğru yanıtları içerecektir.
class Question:
def __init__(self, questionText, answer, multipleChoiceOptions=None, alternateAnswers=None):
self.questionText = questionText
self.answer = answer
self.multipleChoiceOptions = multipleChoiceOptions
self.alternateAnswers = alternateAnswers
def __repr__(self):
return ‘{‘+ self.questionText +’, ‘+ self.answer +’, ‘+ str(self.multipleChoiceOptions) +’, ‘+ str(self.alternateAnswers) +’}’
quizQuestions dizisine başka bir soru ekleyin. Doğru cevap olarak “Kuzey Yarımküre” ekleyin. Alternatif doğru cevaplar olarak “kuzey” ve “kuzey” ekleyin.
quizQuestions = [
#…
Question(“Question 5. What hemisphere is Japan located in”, “Northern Hemisphere”, [], [“north”, “northern”]),
]
Kullanıcının alternatif bir doğru cevap girip girmediğini kontrol eden if ifadesine başka bir koşul ekleyin.
if (userInput.lower() == question.answer.lower()):
print(“That is correct!”)
elif (question.alternateAnswers != None and userInput.lower() in question.alternateAnswers):
print(“That is correct!”)
else:
print(f”Sorry, the correct answer is {question.answer}.”)
Kullanıcıya Nasıl İpuçları Verilir
Komut dosyasını, kullanıcının mevcut soruyu doğru anlayana kadar bir sonraki aşamaya geçememesi için değiştirebilirsiniz. Bu durumda, kullanıcının kaç kez yanlış cevap girdiğini saymak için bir değişken ekleyin. Üç yanlış tahminden sonra kullanıcıya bir ipucu verebilirsiniz.
Yeni bir ipucu özniteliği kullanmak için Question sınıfını değiştirin.
class Question:
def __init__(self, questionText, answer, hint=None, multipleChoiceOptions=None, alternateAnswers=None):
self.questionText = questionText
self.answer = answer
self.hint = hint
self.multipleChoiceOptions = multipleChoiceOptions
self.alternateAnswers = alternateAnswers
def __repr__(self):
return ‘{‘+ self.questionText +’, ‘+ self.answer +’, ‘+ self.hint +’, ‘+ str(self.multipleChoiceOptions) +’, ‘+ str(self.alternateAnswers) +’}’
Testteki tüm sorulara ipuçları ekleyin.
quizQuestions = [
Question(“Question 1. What city is the capital of Australia”, “Canberra”, “Starts with a C”),
Question(“Question 2. What city is the capital of Japan”, “Tokyo”, “Starts with a T”),
Question(“Question 3. How many islands does the Philippines have”, “7100”, “A number between 7000 and 8000”),
Question(“Question 4. Which country takes the most land mass”, “b”, “The country spans two continents”, [“(a) United States”, “(b) Russia”, “(c) Australia”, “(d) Antarctica”]),
Question(“Question 5. What hemisphere is Japan located in”, “Northern Hemisphere”, “The top half of Earth”, [], [“north”, “northern”]),
]
Kullanıcının soruyu doğru yanıtlayıp yanıtlamadığını kontrol eden if ifadelerini kaldırın. Bunları bir süre döngüsü ile değiştirin. while döngüsü, kullanıcı doğru cevabı alana kadar sürekli döngüye girer. while döngüsünün içine, kullanıcı yanıtı üç kez yanlış aldığında ipucunu gösterecek bir sayı ekleyin.
for question in quizQuestions:
if (question.multipleChoiceOptions != None):
print(f”{question.questionText}?”)
for option in question.multipleChoiceOptions:
print(option)
userInput = input()
else:
print(f”{question.questionText}?”)
userInput = input()
count = 0
while (userInput.lower() != question.answer.lower()):
if (question.alternateAnswers != None and userInput.lower() in question.alternateAnswers):
break;
count = count + 1
if (count >= 3):
print(f”Hint: {question.hint}.”)
userInput = input()
else:
print(“That is not correct, try again.”)
userInput = input()
print(“That is correct!”)
python komutunu kullanarak testinizi komut satırında yeniden çalıştırın.
python InteractiveQuiz.py
Testteki soruları cevaplayın.
Python Kullanarak Küçük Uygulamalar Oluşturma
Python’da kod yazmayı öğrenirken yapabileceğiniz projelerden biri de interaktif bir sınavdır. Testte, kullanıcıya farklı türde sorular sunabilirsiniz.
Her soru için kodunuzu tekrarlamanızı önlemek için sınav soruları hakkındaki bilgileri bir nesnede saklayabilirsiniz.
Python’daki becerilerinizi geliştirmek için farklı alıştırmalar ve örnekler uygulamak iyi bir fikirdir. Öğrenmenize yardımcı olabilecek diğer Python örneklerine göz atabilirsiniz.