Giải Tin học 10 – Bài 31. Thực hành viết chương trình đơn giản – KNTT

Luyện tập

Câu 1. Viết chương trình yêu cầu nhập số thực dương a. Chương trình cần kiểm tra dữ liệu nhập như sau: Nếu số đã nhập nhỏ hơn hoặc bằng 0 thì thông báo: “Nhập sai, số a phải lớn hơn 0. Nhập lại”. Chương trình chỉ dừng sau khi người dùng nhập đúng.

Câu 2. Viết chương trình in bảng cửu chương ra màn hình như sau:
– Hàng thứ nhất in ra bảng nhân 1, 2, 3, 4, 5
– Hàng thứ hai in ra bảng nhân 6, 7, 8, 9, 10

Hướng dẫn giải:

Câu 1: Chương trình kiểm tra dữ liệu nhập vào phải có giá trị lớn hơn 0

a = float(input("Nhập số thực dương: "))
while a<=0:
    print("Nhập sai, số a phải lớn hơn 0. Nhập lại")
    a = float(input("Nhập số thực dương: "))

Câu 2: Chương trình in ra bảng cửu chương

#In bảng cửu chương từ 1 đến 5
for i in range(1,11):
    for j in range(1,6):
        print(i,"x",j,"=",i*j,end="\t")
    print()
print()
#In bảng cửu chương từ 6 đến 10
for i in range(1,11):
    for j in range(6,11):
        print(i, "x", j, "=", i * j, end="\t")
    print()

Vận dụng

Câu 1. Viết chương trình nhập hai số tự nhiên Y1, Y2 là số năm, Y2 > Y1. Tính xem trong khoảng thời gian từ năm Y1 đến năm Y2 có bao nhiêu năm nhuận. Áp dụng tính xem trong thế kỉ XXI có bao nhiêu năm nhuận.

Câu 2. Gọi ƯCLN là hàm ƯCLN của hai số tự nhiên a, b. Dễ thấy ta có ƯCLN(a, b) = ƯCLN(b, a%b) nếu b > 0 và ƯCLN(a, 0) = a. Từ đó hãy viết chương trình nhập hai số a, b và tính ƯCLN của a và b.

Hướng dẫn giải:

Câu 1: Chương trình đếm số năm nhuận

Y1 = int(input("Nhập số tự nhiên Y1: "))
Y2 = int(input("Nhập số tự nhiên Y2: "))
c = 0
for i in range(Y1,Y2+1):
    if i%400==0 or (i%4==0 and i%100!=0):
        c = c + 1
print("Từ năm",Y1,"đến năm",Y2,"có",c,"năm nhuận")

Để tính xem trong thế kỉ XXI có bao nhiêu năm nhuận, nhập Y1 = 2000 và Y2 = 2100.

Lưu ý: Để kiểm tra 1 năm có phải năm nhuận hay không, ta sẽ kiểm tra 2 trường hợp của năm nhuận như sau:
– Năm nhuận là năm chia hết cho 400
– Năm nhuận là năm chia hết cho 4 nhưng không chia hết cho 100

Câu 2: Chương trình tìm ước chung lớn nhất

Cách 1: Sử dụng đệ quy

#Hàm tìm ƯCLN dùng đệ quy
def UCLN(a,b):
    if b==0: return a
    return UCLN(b,a%b)

#Chương trình chính
a, b = map(int,input("Mời nhập 2 số tự nhiên: ").split())
print("ƯCLN của",a,"và",b,"là",UCLN(a,b))

Cách 2: Khử đệ quy (khuyến nghị)

#Hàm tìm UCLN của a và b
def UCLN(a,b):
    r = a % b
    while r!=0:
        a = b
        b = r
        r = a % b
    return b
#Chương trình chính
a = int(input("Nhập số tự nhiên thứ nhất: "))
b = int(input("Nhập số tự nhiên thứ hai: "))
print("ƯCLN của",a,"và",b,"là",UCLN(a,b))

Xem thêm Bài 32. Ôn tập lập trình Python – KNTT

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *