SBT Tin học 10 trang 66 Kết nối tri thức

585

Với Giải SBT Tin học 10 trang 66 trong Bài 32: Ôn tập lập trình Python Sách bài tập Tin học 10 Kết nối tri thức hay nhất, chi tiết sẽ giúp học sinh dễ dàng làm bài tập trong SBT Tin học 10.

SBT Tin học 10 trang 66 Kết nối tri thức

Câu 32.1 trang 66 SBT Tin học 10: Em hãy viết chương trình nhập một họ tên đầy đủ từ bàn phím, ví dụ "Nguyễn Thị Mai Hương", sau đó tách riêng phần tên, họ, đệm và thông báo ra màn hình.

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ử:

 (ảnh 1)

Câu 32.2 trang 66 SBT Tin học 10: Nhà nước quản lí lượng tiêu thụ điện được thống kê theo tháng. Tháng được gọi là đột biến nếu sản lượng tiêu thụ của tháng đó lớn hơn cả tháng trước và sau tháng đó. Dữ liệu sản lượng tiêu thụ điện hàng tháng được cho bởi dãy các số, ví dụ:

a[0], a[1], ..., a[N-1].

Cần tìm và liệt kê các chỉ số và giá trị a[i] sao cho a[i] tương ứng với tháng đột biến.

Yêu cầu nhập dữ liệu sản lượng điện tiêu thụ từ bàn phím trên một hàng có N số, mỗi số cách nhau bởi dấu cách. Chương trình cần in ra dãy các tháng (bằng chỉ số dãy) và sản lượng tiêu thụ đột biến của tháng đó.

Lời giải:

Hướng dẫn:

slist = input("Nhập dãy các số là sản lượng tiêu thụ điện: ")

A = [int(k) for k in slist.split()]

for k in range(1, len(A)-1):

 if A[k-1] < A[k] < A[k+1]:

  print("tháng thứ" , k-1, A[k])

Câu 32.3 trang 66 SBT Tin học 10: Bài toán đếm số lần lặp của một mẫu xâu trong xâu gốc như sau: Cho trước xâu gốc S và một xâu mẫu str. Yêu cầu cần tìm số lần lặp của xâu mẫu str trong xâu gốc S. Có hai kiểu tìm số lần lặp:

1 – Tìm số lần lặp xâu con có thể chồng lấn lên nhau.

2 – Tìm số lần lặp không chồng lấn của xâu con.

Ví dụ nếu xâu gốc là "12121341212100", xâu con mẫu là "121" thì:

- Số lần lặp có chồng lấn của str trong S là 4 lần.

 

- Số lần lặp không chồng lấn của str trong S là 2 lần.

Bài toán như sau: Cho trước các xâu kí tự S và str, hãy tìm số lần lặp không chồng lấn của xâu str trong xâu S.

Lời giải:

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

S = "12121341212100"

str = "121"

n = len(S)

m = len(str)

count = 0

k = 0

Indx = 0

while k <= n-m and Indx >= 0:

 Indx = S.find(str, k)

 if Indx >= 0:

  count = count + 1

  k = Indx + m

print(count)

 (ảnh 2)

Câu 32.4 trang 66 SBT Tin học 10: Cho trước dãy số. Yêu cầu cần tìm ra một dãy con liên tục có độ dài lớn nhất bao gồm các số bằng nhau. Ví dụ với dãy: 1, 1, 2, 3, 0, 0, 0, 7, 10, 10, 5, 1, 1, 6 thì cần đưa ra thông báo:

Dãy con bằng nhau có độ dài lớn nhất là 0, 0, 0 bắt đầu từ chỉ số 4. Dãy số gốc gồm các số nguyên được nhập trên một dòng từ bàn phím, chương trình cần đưa ra thông báo như trên.

Lời giải:

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

A = [1, 1, 2, 3, 0, 0, 0, 7, 10, 10, 5, 1, 1, 6]

Indx = 0

lenMax = 1

for i in range(len(A)):

 j = i

 while j < len(A) and A[j] == A[i]:

  if j-i+1 > lenMax:

   Indx = i

   lenMax = j-i+1

  j = j + 1

print("Dãy con bằng nhau lớn nhất bắt đầu từ chỉ số:", Indx, "độ dài" ,lenMax)

print(A[Indx: Indx+lenMax])

 (ảnh 3)

Câu 32.5 trang 66 SBT Tin học 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.

Lời giải:

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)

Từ khóa :
Giải bài tập
Đánh giá

0

0 đánh giá