Giải Tin học 10 Bài 15: Thực hành với kiểu dữ liệu danh sách
Bài 1. Cập nhật danh sách
- Thay thế các phần tử âm bằng -1, phần tử dương bằng 1, giữ nguyên các phần từ giá trị 0.
- Đưa ra màn hình danh sách nhận được.
Trả lời:
- Tạo danh sách a từ dữ liệu nhập vào.
- Duyệt các phần tử trong danh sách ai (với i = 0, 1, 2, …, len(a) – 1); và thay ai = 1 nếu ai > 0 và ai = -1 nếu ai < 0.
- Các em tham khảo chương trình:
print ("Nhập dãy số nguyên")
a = [int(i) for i in input().split()]
n = len(a)
for i in range(n):
if a[i] > 0: a[i]=1
elif a[i] < 0: a[i]= -1
for i in a: print(i, end=' ')
Bài 2. Các số đặc biệt của dãy số
Trả lời:
- Tạo danh sách a từ dữ liệu nhập vào, sau đó duyệt các phần tử trong danh sách thoả mãn điều kiện lớn hơn phần tử đứng trước và phần tử đứng sau nó.
- Chương trình:
print("Nhập một dãy số nguyên")
a = [int(i) for i in input().split()]
count=0
for i in range (1, len(a)-1):
if a[i-1] < a[i] > a[i + 1]: count = count + 1
print(count)
Bài 3. Trò chơi với các chiếc giày
Cách làm thông thường để tìm ra chiếc giày còn thiếu là đi ghép các đôi giày, tuy nhiên cách làm này sẽ mất nhiều thời gian. Một cách làm đơn giản là dựa trên nhận xét: Nếu dãy không thiếu chiếc giày nào thì tổng số bằng 0, nên có thể xác định chiếc giày còn thiếu khi biết tổng các số trong dãy. Hình 4 là chương trình mà Hà My viết theo cách làm trên, tuy nhiên chương trình vẫn có lỗi. Em hãy giúp Hà My sửa lỗi để nhận được chương trình chạy được và cho ra kết quả đúng.
Trả lời:
- Lỗi sai ngữ pháp
- Sửa: thay ngoặc tròn bằng ngoặc vuông
- Chương trình
print("Nhập vào một dãy số size giày")
shoes = [int(s) for s in input().split()]
sum = 0
for i in range(len(shoes)):
sum = sum + shoes[i]
if sum > 0:
print("Chiếc giày bên trái, kích cỡ", sum)
else:
print("Chiếc giày bên phải, kích cỡ", sum)
Vận dụng (trang 109)
- Tổng số tiền điện của cả năm, trung bình mỗi tháng.
- Liệt kê các tháng dùng nhiều hơn trung bình mỗi tháng
Trả lời:
- Chương trình gợi ý như sau:
ds= [float(i) for i in input("Nhập tiền điện hằng tháng ").split()]
t = 0
for i in range(0, len(ds)):
t = t + ds[i]
tb = t/12
print("Tổng tiền điện là: ", t)
print("Tiền điện trung bình mỗi tháng là: ", tb)
print("Các tháng dùng nhiều hơn trung bình mỗi tháng là: ")
for i in range(0, len(ds)):
if ds[i] > tb:
print(i+1)
- Kết quả chương trình chạy thử:
Xem thêm các bài giải SGK Tin học lớp 10 Cánh diều hay, chi tiết khác:
Bài 13: Thực hành dữ liệu kiểu xâu
Bài 14: Kiểu dữ liệu danh sách - Xử lí danh sách
Bài 16: Kiểm thử và gỡ lỗi chương trình