Bir fonksiyonu veya dize girdileri alır program yazın, başlık halinde ingilizce ay adlarını tam yazıldığından: January
, February
, March
vb (boş / CR / LF bunu seçerseniz tamam olmayan bazı alfa karakteriyle sınırlanmış sonlandırıldı) ve ya
iki girişi karşılaştırır, ikinci giriş birinciden daha büyükse (ay sırasına göre) bir Doğruluk değeri döndürür. Eşit değerler bir Falsey değeriyle sonuçlanır
veya rastgele bir dizisini (liste, sınırlandırılmış dize vb.) kronolojik sırada sıralar
(Zorluğun temel noktası doğru sözlükbilimsel sıralamayı veren bir yöntem / ifade tanımlamaktır. Bazı dillerden biri veya diğeri ile daha kısa bir cevap olabilir)
strptime
Ay adını bir sayıya veya ay adlarının önceden hazırlanmış bir eşlemesine çevirmek için dahili zaman ayrıştırma yöntemlerini (örn. ) Kullanamazsınız. Dizelerin özelliklerini, tanımladığınız cimri bir arama tablosunu veya akıllı bir şey kullanın.
Misal
İşlevsel örnekler, ilki kurallar tarafından yasaklanmış olsa da ...
import datetime
def is_later_month(a, b):
'''
Example of prohibited code because it relies on language
features about how to parse month names
'''
return datetime.strptime(a, '%B') < datetime.strptime(b, '%B')
Aşağıdaki bilgiler olsa da sorun yok, çünkü bu bilgileri
months = {
'January': 1, 'February': 2, 'March': 3,
'April': 4, 'May': 5, 'June': 6,
'July': 7, 'August': 8, 'September': 9,
'October': 10, 'November': 11, 'December': 12,
}
def is_later_month(a, b):
"""
Returns True/False when comparing two months.
"""
return months[a] < months[b]
Veya bir sıralama işlevi yapabilirsiniz
months = {'as above...'}
def sort_months(l):
"""
Sorts list and returns it. Different input and output than the above,
but equally valid. Sorting versus comparing might be shorter in your
favorite language.
"""
return sorted(l, key=lambda x: months[x])
Örnek testler
assert is_later_month('January', 'February')
assert is_later_month('January', 'December')
assert is_later_month('November', 'December')
assert not is_later_month('July', 'July')
assert not is_later_month('October', 'September')
months
tüm Ay adlarının bir listesi olan bir yerleşkesi olsaydı months[x] < months[y]
, cevap olarak yasaklamak isterdim . Ay isimleri listesinde, meydan okumayı rastgele oluşturulan dizelere göre daha kolay / zorlaştıran bazı daha tuhaf özellikler (değişen uzunluk, ortaklık) vardır.