Sınav İçin Programlama: Tam Puan Alan Python Cevapları
Sınavlarda tam puan kazanan Python kodu yazmak — yapı, kenar durumlar ve zaman altında basınç altında zaman yönetimi.
Sınav değerlendiricileri kodunuzu yirmi dakika boyunca bir hata ayıklayıcıdan geçirmezler. Bunu bir ya da iki kez okurlar ve bir puanlama rubriğine karşı kontrol ederler. Rubriği görmezden gelen çalışan bir çözüm yine de puan kaybedebilirken, her kontrol noktasını vuran biraz daha kaba bir çözüm daha yüksek puan alabilir. Sınav için Python yazmak, gerçek bir proje için Python yazmaktan farklı bir beceridir ve ayrı ayrı pratik yapmaya değer.
Sorunu iki kez okumadan önce rubriği okuyun
Çoğu programlama sınavı — AP CS A tarzı açık yanıt soruları, üniversite vize sınavları, kodlama önyükleme değerlendirmeleri — kısmi kredi kurallarını yayınlar. Tipik bir rubrik satırı şöyle görünür: "doğru döngü yapısı için 1 puan, doğru dönüş değeri için 1 puan, boş liste durumunu işlemek için 1 puan." Doğru cevapı alan ancak açık bir döngüyü atlayan yoğun bir satırlık kod yazarsanız, çıktı doğru olsa da bazı değerlendiriciler puan kesebilir.
Herhangi bir şey yazmadan önce, bir değerlendiricinin ayrı ayrı kontrol etmesi muhtemel parçaları belirleyin:
- İşlev imzası sorulan şeyin tam olarak eşleşir (ad, parametre sırası, dönüş tipi)
- Temel durum ve özyinelemeli durum, eğer özyineleme beklenmişse
- Döngü sınırları (kapalı-bir hataları en yaygın puan kaybıdır)
- Kenar durumlar: boş giriş, tek öğeli giriş, negatif sayılar, yineleneler
Bunları ilk olarak yorumlar olarak yazın. # boş listeyi işle, # temel durum: n == 0. Bu on saniye tutar ve bir değerlendiricinin özel olarak aradığı durumu unutmamanızı garanti eder.
Kodu yapılandırın ki kısmi kredi görünür olsun
"Bir listede ikinci en büyük sayıyı döndüren bir işlev yazın" sorusunun iki cevabını karşılaştırın:
def second_largest(nums):
return sorted(nums)[-2]
def second_largest(nums):
if len(nums) < 2:
return None
largest = second = float('-inf')
for n in nums:
if n > largest:
second = largest
largest = n
elif n > second and n != largest:
second = n
return second
İlki iyi biçimlendirilmiş giriş için doğrudur ancak iki öğeden az olan bir listede çöker ve [5, 5, 3] gibi yinelenenlerde yanlış bir cevap verir (belirtime bağlı olarak 5 döndürür, tartışmalı olarak yanlış). İkincisi daha uzundur ancak her rubrik satırı — kenar durum, doğru mantık, doğru dönüş — açık ve bir değerlendiricinin kontrol edebileceği kendi satırını alır. Zamanlı bir sınavda, ikinci versiyon, daha uzun yazılsa da neredeyse her zaman daha yüksek puan alır.
Erkene optimize etmeyin, bariz hataları da bırakmayın
Sınav soruları nadiren Big-O bilgisini test ederler, soruda doğrudan söylenmedikçe. Eğer sorunun sorusu "yineleneleri bulan bir işlev yazın" derse, iç içe bir döngü O(n²) cinsinden sorun belirtmedikçe veya verimli bir çözüm istemediği sürece iyidir. Sınav zamanını istenmediği zaman küme tabanlı O(n) bir yaklaşıma dönüştürmek için harcamak geri alamadığınız zamandır.
Bununla birlikte, bazı hatalar her zaman sizi maliyetlendirecektir, rubrikten bağımsız olarak:
==yerineiskullanmak tutarsızca mantık hatalarına neden olmak (Python sınavlarında nadirdir ancak karşılaştırma yoğun sorularda görülür)- Bir liste üzerinde yineleme yaparken onu değiştirmek —
for x in lst: lst.remove(x)klasik bir sınav tuzağıdır ve sessizce yanlış çıktı üretir returnunutmak ve bunun yerine yazdırmak — birçok otomatik derecelendiricisi dönüş değerlerini kontrol eder, stdout'u değilrange()içinde kapalı-bir —range(len(nums))vsrange(len(nums) - 1)her yazdığınız zaman kontrol etmeye değer
Kodunuzu göndermeden önce elle izleyin
Kâğıt sınavları ve çoğu tarayıcı içi kodlama sınavlarında, kodu çalıştırmak yoktur. Küçük bir örnek seçin ve satır satır izleyin, gidişatınız değişken değerleri yazın. Bu, mantık hatalarının belki %80'ini iki dakikanın altında yakalar ve kalan zamanla yapabileceğiniz tek en yüksek değerli şeydir.
Özyinelemeli işlevler için spesifik olarak, en az iki seviye derin izleyin ve temel durumun açıkça vurulmuş olduğunu yazın. Değerlendiriciler, temel durumun doğru şekilde sonlandığını gösterdiği için genellikle kısmi bir puan verirler, özyinelemeli durumun doğru olması için yapılan puandan ayrı.
Saati bir sonraya değil, bir kaynak gibi yönetin
Eğer açık yanıt bölümü üç alt soruda dokuz puan değerindeyse, kabaca eşit zamanı bütçeleyin ve bütçeyi aştıysanız hareket edin — neredeyse doğru ancak yarı yazılı bir kısım (b), mükemmel kısım (a) ve boş kısım (c) olandan daha fazla ham puan değerindedir. Mantığı bitiremese bile doğru imzası ve bir pass veya tahmin ile bir stub işlev yazın; doğru bir imza tek başına bazen kendi başına bir rubrik puanı değerindedir.
Sınav odası dışında temiz, test edilebilir Python yazmayla ve bu sorularda devamlı görünen veri yapılarıyla ilgili daha fazla bilgi için, Korra Studio'da ilgili Python ve Bilgisayar Bilimi segmentlerine bakın.
AI yardımıyla yazıldı, Michal Pilch (CISSP), Korra Studio tarafından incelendi ve yayınlandı.
Bu, Korra Studio bilgi tabanından bir nottur — platform her konuyu 1-to-1 mentoring ile eşleştirir.
Ücretsiz başlaarrow_forward