Câu hỏi:

18/10/2022 362

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.

Quảng cáo

Trả lời:

verified
Giải bởi Vietjack

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)

CÂU HỎI HOT CÙNG CHỦ ĐỀ

Lời giải

Chương trình có thể viết như sau:

def sap_xep (A):

B = A.copy()

for i in range(1, len(B)):

j = i

while j > 0 and B[j] < B[j-1]:

B[j], B[j-1] = B[j-1], B[j]

j = j-1

return B

# Chương trình chính

A = []

n = int(input("Nhập số học sinh của lớp: "))

for k in range(n):

hoten = input("Nhập tên học sinh thứ "+str(k+1)+": ")

A.append(hoten)

B = sap_xep(A)

print("Danh sách học sinh trong lớp: ")

for hs in B:

print(hs)

Media VietJack

Lưu ý: Hàm sap_xep(A) sẽ trả lại dãy đã được sắp xếp tăng dần của A, bản thân dãy A không thay đổi.

Lời giải

Hướng dẫn:

Em đã biết cách tách phần họ và tên của một xâu kí tự họ tên đầy đủ. Bài tập này yêu cầu tách thêm phần đệm, tức là phần nằm giữa tên và họ ra. Việc tách này khá đơn giản bằng cách sử dụng phương thức join() của xâu kí tự. Xâu kí tự họ tên gốc trước tiên được tách thành một dãy bằng hàm split(). Sau khi lấy phần họ, tên, phần đệm sẽ được lấy ra bằng lệnh sau:

dem = " ".join(slist[1:n-1])

Trong đó slist là dãy đã được tách ra từ xâu kí tự họ tên đầy đủ, n là độ dài của xâu slist. Chương trình hoàn chỉnh có thể viết như sau:

hoten = input("Nhập họ tên đầy đủ của bạn: ")

slist = hoten.split()

n = len(slist)

ho = slist[0]

ten = slist[n-1]

dem = " ".join(slist[1:n-1])

print("Tên của bạn là",ten)

print("Họ của bạn là", ho)

if n > 2:

print("Đệm của bạn là:", dem)

* Chương trình chạy thử:

Media VietJack