Giải SBT Tin 10 KNTT Bài 32. Ôn tập lập trình Python có đáp án

Trong các phần mềm bảng tính điện tử, dữ liệu ngày tháng được coi là số ngày tính từ ngày 1-1-1990

5/10

Trong các phần mềm bảng tính điện tử, dữ liệu ngày tháng được coi là số ngày tính từ ngày 1-1-1990. Viết chương trình nhập số tự nhiên n từ bàn phím và tính xem số đó ứng với ngày, tháng, năm nào.

0/3000 ký tự
Giải thích

Hướng dẫn:

Chương trình 1. Nhập số tự nhiên từ bàn phím và tính xem đó là ngày tháng năm nào.

month = [31,28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

def nhuan(year):

if year % 400 == 0 or (year % 4 == 0 and year%100 != 0):

return True

else:

return False

def day_of_year(year):

if nhuan(year):

return 366

else:

return 365

def hople (year, mm, day):

if nhuan(year):

month[1] = 29

if mm < 1 or mm > 12:

return False

if day < 1 or day > month[mm-1]:

return False

return True

def tinh_nam(d):

year = 1900

n_day = day_of_year(year)

day = d

while n_day <= d:

day = d - n_day

year = year + 1

n_day = n_day + day_of_year (year)

if day == 0:

year = year - 1

day = day_of_year(year)

return year, day

def tinh_thang(year, day):

if nhuan(year):

month[1] = 29

mm = 0

n_day = month[mm]

dd = day

while n_day <= day and mm < 11:

dd = day - n_day

mm = mm + 1

n_day = n_day + month[mm]

if dd == 0:

mm = mm - 1

dd = month[mm]

return mm+1, dd

# Chương trình chính

d = int(input("Nhập số ngày tính từ 1/1/1990: "))

year, day = tinh_nam(d)

mm, dd = tinh_thang(year, day)

print("Đó là ngày", dd,"tháng", mm , "năm", year)