Viết một hàm hoặc chương trình mà sẽ đưa đầu vào chuỗi, hoàn toàn chính tả, tên tiếng Anh tháng trong trường hợp tiêu đề: January
, February
, March
, vv (null / CR / LF chấm dứt OK, phân định với một số nhân vật phi-alpha nếu bạn lựa chọn) và một trong hai
so sánh hai đầu vào, trả về giá trị Truthy nếu đầu vào thứ hai lớn hơn (theo thứ tự tháng) so với đầu vào thứ nhất. Giá trị bằng nhau dẫn đến giá trị Falsey
hoặc sắp xếp một chuỗi tùy ý (danh sách, chuỗi phân cách, v.v.) của chúng theo thứ tự thời gian
(Mấu chốt của thách thức là xác định một phương thức / biểu thức đưa ra cách sắp xếp từ vựng chính xác. Một số ngôn ngữ có thể có câu trả lời ngắn hơn với một hoặc khác)
Bạn không thể sử dụng bất kỳ phương pháp phân tích thời gian nội bộ nào (ví dụ strptime
) để dịch tên tháng thành số hoặc ánh xạ đóng hộp trước tên tháng. Sử dụng các thuộc tính của chính các chuỗi, một bảng tra cứu tuyệt vời mà bạn xác định hoặc một cái gì đó thông minh.
Thí dụ
Các ví dụ chức năng, mặc dù lần đầu tiên bị cấm theo quy tắc ...
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')
Các phiên bản dưới đây là OK, bởi vì chúng tôi mã thông tin đó
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]
Hoặc bạn có thể làm một chức năng sắp xếp
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])
Ví dụ kiểm tra
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
dung là danh sách tất cả các tên Tháng, tôi muốn cấm months[x] < months[y]
làm câu trả lời. Danh sách các tên tháng có một số tính năng đặc biệt hơn (độ dài khác nhau, tính phổ biến) làm cho thử thách trở nên dễ dàng / khó khăn hơn so với các chuỗi được tạo ngẫu nhiên.