Đề bài:
Sử dụng lập chỉ mục danh sách để xác định có bao nhiêu ngày trong một tháng cụ thể dựa trên tháng biến số nguyên và lưu trữ giá trị đó trong biến số nguyên num_days. Ví dụ: nếu tháng là 8, num_days phải được đặt thành 31, vì tháng thứ tám, tháng 8, có 31 ngày.
Hãy nhớ tính toán lập chỉ mục dựa trên số 0!
INPUT: nhập tháng
OUTPUT: xuất ra ngày của tháng đó
Chương trình:
month = 8
days_in_month = [0,31,28,31,30,31,30,31,31,30,31,30,31]
#sử dụng phần tử thứ 0 là 0 vì nếu month=12 thì chương trình sẽ bị lỗi
# use list indexing to determine the number of days in month
#Giải thích đề bài, xác định input, out out, làm bài vào 2 dòng dưới này
num_days=days_in_month[month]
print(num_days)
Giải thích:
Vì sao chương trình lại bị lỗi?
-> Do trong python, phần tử đầu tiên của mảng là phần tử thứ 0, mà tháng thì bắt đầu từ tháng 1, nên nếu month=8 thì kết quả sẽ lùi về 1 bước, ví dụ days_in_month[month] thì sẽ in ra là kết quả lùi về 1 bước
Để giải thích như sau:
Ta sẽ đánh dấu các phần tử của mảng (nếu làm theo chương trình theo đề)
a[0]=31
a[1]=28
a[2]=31
a[3]=30
a[4]=31
a[5]=30
a[6]=31
a[7]=31
a[8]=30
a[9]=31
a[10]=30
a[11]=31
Ví dụ month=8
Thì phần tử thứ month của mảng có giá trị bằng 30, điều này là sai bởi vì tháng 8 có 31 ngày, vậy để giải quyết thì ta sẽ cho vị trí month-1 thì sẽ in ra đúng vị trí
Còn nếu muốn phần tử thứ 1 của mảng là tháng 1 theo đúng trình tự không cần phải month-1 thì làm sao?
Ta chỉ cần đặt phần tử thứ 0 của mảng có giá trị bằng 0 thì chương trình sẽ không có month-1.
Chương trình theo cách 2 có month-1:
month = 8
days_in_month = [31,28,31,30,31,30,31,31,30,31,30,31]
# use list indexing to determine the number of days in month
#Giải thích đề bài, xác định input, out out, làm bài vào 2 dòng dưới này
num_days=days_in_month[month-1]
print(num_days)