Bài tập Python có lời giải (code mẫu) – phần 1

1. Mô tả cấp độ Python
Level 1: Người vừa trải qua khóa học tổng quan về Python, có thể giải quyết một số vấn đề với 1, 2 class hoặc hàm Python. Những bài tập thuộc cấp độ này có thể tìm thấy trong các sách giáo khoa, tài liệu hướng dẫn thông thường.

Level 2: Người mới học Python nhưng đã có nền tảng lập trình tương đối mạnh mẽ từ trước, có thể giải quyết các vấn đề liên quan tới 3 lớp hoặc hàm Python. Những bài tập này thường không tìm thấy trong sách giáo khoa.

Level 3: Nâng cao, sử dụng Python để giải quyết những vấn đề phức tạp hơn bằng cách sử dụng nhiều hàm, cấu trúc dữ liệu và thuật toán phong phú. Ở cấp độ này bạn có thể giải quyết các vấn đề sử dụng vài package Python tiêu chuẩn và những kỹ thuật lập trình nâng cao.

2. Cấu trúc bài tập Python
Mỗi bài tập Python trong trang này sẽ gồm có 3 phần như sau:

Câu hỏi.
Gợi ý.
Code mẫu.

3. Bài tập Python level 1
Bài 01:

Câu hỏi :Viết chương trình tìm tổng thể những số chia hết cho 7 nhưng không phải bội số của 5, nằm trong đoạn 2000 và 3200 ( tính cả 2000 và 3200 ). Các số thu được sẽ được in thành chuỗi trên một dòng, cách nhau bằng dấu phẩy .Gợi ý :

Sử dụng range(#begin, #end)
Code mẫu:

j=[]
for i in range(2000, 3201):
    if (i%7= =0) and (i%5! =0):
        j.append(str(i))
print (', '.join(j))

Bài 02:

Câu hỏi :Viết một chương trình hoàn toàn có thể tính giai thừa của một số ít cho trước. Kết quả được in thành chuỗi trên một dòng, phân tách bởi dấu phẩy. Ví dụ, số cho trước là 8 thì tác dụng đầu ra phải là 40320 .Gợi ý :

  • Trong trường hợp tài liệu nguồn vào được cung ứng, bạn hãy chọn cách để người dùng nhập số vào .

Code mẫu :

x=int(input(" Nhập số cần tính giai thừa : "))
def fact(x):
    if x = = 0:
        return 1
    return x * fact(x - 1)
print (fact(x))

Bài 03:

Câu hỏi :Với số nguyên n nhất định, hãy viết chương trình để tạo ra một dictionary chứa ( i, i * i ) như thể số nguyên từ 1 đến n ( gồm có cả 1 và n ) sau đó in ra dictionary này. Ví dụ : Giả sử số n là 8 thì đầu ra sẽ là : { 1 : 1, 2 : 4, 3 : 9, 4 : 16, 5 : 25, 6 : 36, 7 : 49, 8 : 64 } .Gợi ý :

  • Viết lệnh nhu yếu nhập số nguyên n .

Code mẫu :

n=int(input(" Nhập vào một số ít : "))
d=dict()
for i in range(1,n+1):
    d[i]=i*i
     

print (d)

Bài 04:

Câu hỏi :Viết chương trình đồng ý một chuỗi số, phân tách bằng dấu phẩy từ giao diện điều khiển và tinh chỉnh, tạo ra một list và một tuple chứa mọi số .Ví dụ : Đầu vào được phân phối là 34,67,55,33,12,98 thì đầu ra là :

[’34’, ’67’, ’55’, ’33’, ’12’, ’98’]
(’34’, ’67’, ’55’, ’33’, ’12’, ’98’)

Gợi ý :

  • Viết lệnh nhu yếu nhập vào những giá trị sau đó dùng quy tắc quy đổi kiểu tài liệu để hoàn tất .

Code mẫu :

values=input(" Nhập vào những giá trị : ")
l=values.split(", ")
t=tuple(l)
print (l)
print (t)

Bài 05:

Câu hỏi :Định nghĩa một class có tối thiểu 2 method :getString : để nhận một chuỗi do người dùng nhập vào từ giao diện điều khiển và tinh chỉnh .printString : in chuỗi vừa nhập sang chữ hoa .Thêm vào những hàm hiểm tra đơn thuần để kiểm tra method của class .Ví dụ : Chuỗi nhập vào là quantrimang.com thì đầu ra phải là : QUANTRIMANG.COMGợi ý :

  • Sử dụng __init__ để kiến thiết xây dựng những tham số .

Code mẫu :

class InputOutString(object):
   def __init__(self):
       self.s = " "

   def getString(self):
       self.s = input(" Nhập chuỗi : ")
 
   def printString(self):
       print (self.s.upper())

strObj = InputOutString()
strObj.getString()
strObj.printString()

Bài 06:

Câu hỏi :Viết một method tính giá trị bình phương của một số ít .Gợi ý :

  • Sử dụng toán tử * * .

Code mẫu :

x=int(input(" Nhập một số ít : "))  
def square(num):   
  return num * * 2
 
print (square(2))  
print (square(3))  
print (square(x)) 

Vì đề bài không nhu yếu đơn cử bạn phải tính bình phương số có sẵn hay số nhập vào nên mình dùng cả hai .

Bài 07:

Câu hỏi :Python có nhiều hàm được tích hợp sẵn, nếu không biết cách sử dụng nó, bạn hoàn toàn có thể đọc tài liệu trực tuyến hoặc tìm vài cuốn sách. Nhưng Python cũng có sẵn tài liệu về hàm cho mọi hàm tích hợp trong Python. Yêu cầu của bài tập này là viết một chương trình để in tài liệu về một số ít hàm Python được tích hợp sẵn như abs ( ), int ( ), input ( ) và thêm tài liệu cho hàm bạn tự định nghĩa .Gợi ý :

  • Sử dụng __doc__

Code mẫu :

print (abs.__doc__)
print (int.__doc__)
print (input.__doc__)
 
def square(num):
 ' ' ' Trả lại giá trị bình phương của số được nhập vào. Số nhập vào phải là số nguyên. ' ' '
 return num * * 2

print (square.__doc__)

Bài 08:

Câu hỏi :Định nghĩa một lớp gồm có tham số lớp và có cùng tham số instanceGợi ý :

  • Khi định nghĩa tham số instance, cần thêm nó vào __init__
  • Bạn hoàn toàn có thể khởi tạo một đối tượng người dùng với tham số khởi đầu hoặc thiết lập giá trị sau đó .

Code mẫu :

class Person:
  
 name = " Person "
  
 def __init__(self, name = None):
  
 self.name = name

jeffrey = Person(" Jeffrey ")
print (" % s name is % s " % (Person.name, jeffrey.name))

nico = Person()
nico.name = " Nico "
print (" % s name is % s " % (Person.name, nico.name))

4. Bài tập Python level 2

Bài 09:

Câu hỏi :Viết chương trình và in giá trị theo công thức cho trước : Q = √ ( [ ( 2 * C * D ) / H ] ) ( bằng chữ : Q. bằng căn bậc hai của [ ( 2 nhân C nhân D ) chia H ]. Với giá trị cố định và thắt chặt của C là 50, H là 30. D là dãy giá trị tùy biến, được nhập vào từ giao diện người dùng, những giá trị của D được phân làn bằng dấu phẩy .Ví dụ : Giả sử chuỗi giá trị của D nhập vào là 100,150,180 thì đầu ra sẽ là 18,22,24 .Gợi ý :

  • Nếu đầu ra nhận được là 1 số ít dạng thập phân, bạn cần làm tròn thành giá trị gần nhất, ví dụ 26.0 sẽ được in là 26 .
  • Trong trường hợp tài liệu nguồn vào được phân phối cho thắc mắc, nó được giả định là đầu vào do người dùng nhập từ giao diện điều khiển và tinh chỉnh .

Code mẫu :

 
import math
c=50
h=30
value = []
items=[x for x in input(" Nhập giá trị của d : ").split(', ')]
for d in items:
    value.append(str(int(round(math.sqrt(2*c*float(d)/h)))))
 
print (', '.join(value))

Bài 10:

Câu hỏi :Viết một chương trình có 2 chữ số, X, Y nhận giá trị từ đầu vào và tạo ra một mảng 2 chiều. Giá trị thành phần trong hàng thứ i và cột thứ j của mảng phải là i * j .Lưu ý : i = 0,1, …, X-1 ; j = 0,1, …, Y-1 .Ví dụ : Giá trị X, Y nhập vào là 3,5 thì đầu ra là : [ [ 0, 0, 0, 0, 0 ], [ 0, 1, 2, 3, 4 ], [ 0, 2, 4, 6, 8 ] ]Gợi ý :

  • Viết lệnh để nhận giá trị X, Y từ giao diện tinh chỉnh và điều khiển do người dùng nhập vào .

Code mẫu :

input_str = input(" Nhập X, Y : ")
dimensions=[int(x) for x in input_str.split(', ')]
rowNum=dimensions[0]
colNum=dimensions[1]
multilist = [[0 for col in range(colNum)] for row in range(rowNum)]
 
for row in range(rowNum):
    for col in range(colNum):
        multilist[row][col]= row*col

print (multilist)

Bài 11:

Câu hỏi :Viết một chương trình đồng ý chuỗi từ do người dùng nhập vào, phân tách nhau bởi dấu phẩy và in những từ đó thành chuỗi theo thứ tự bảng vần âm, phân tách nhau bằng dấu phẩy .Giả sử nguồn vào được nhập là : without, hello, bag, world, thì đầu ra sẽ là : bag, hello, without, world .Gợi ý :Trong trường hợp tài liệu nguồn vào được nhập vào chương trình nó nên được giả định là tài liệu được người dùng nhập vào từ giao diện tinh chỉnh và điều khiển .Code mẫu :

items=[x for x in input(" Nhập một chuỗi : ").split(', ')]
items.sort()
print (', '.join(items))

Bài 12:

Câu hỏi :Viết một chương trình đồng ý chuỗi là những dòng được nhập vào, chuyển những dòng này thành chữ in hoa và in ra màn hình hiển thị. Giả sử nguồn vào là :

Hello world
Practice makes perfect

Thì đầu ra sẽ là :

HELLO WORLD
PRACTICE MAKES PERFECT

Gợi ý :Trong trường hợp tài liệu nguồn vào được nhập vào chương trình nó nên được giả định là tài liệu được người dùng nhập vào từ giao diện tinh chỉnh và điều khiển .Code mẫu :

lines = []
while True:
   s = input()
   if s:
      lines.append(s.upper())
   else:
      break;
 
for sentence in lines:
    print (sentence)

Bài 13:

Câu hỏi :Viết một chương trình đồng ý nguồn vào là một chuỗi những từ tách biệt bởi khoảng chừng trắng, vô hiệu những từ trùng lặp, sắp xếp theo thứ tự bảng vần âm, rồi in chúng .Giả sử nguồn vào là : hello world and practice makes perfect and hello world againThì đầu ra là : again and hello makes perfect practice worldGợi ý :

  • Trong trường hợp tài liệu nguồn vào được nhập vào chương trình nó nên được giả định là tài liệu được người dùng nhập vào từ giao diện điều khiển và tinh chỉnh .
  • Sử dụng set để vô hiệu tài liệu trùng lặp tự động hóa và dùng sorted ( ) để sắp xếp tài liệu .

Code mẫu :

s = input(" Nhập chuỗi của bạn : ")
words = [word for word in s.split(" ")]
print (" ".join(sorted(list(set(words)))))

Bài 14:

Câu hỏi :Viết một chương trình gật đầu nguồn vào là chuỗi những số nhị phân 4 chữ số, phân tách bởi dấu phẩy, kiểm tra xem chúng có chia hết cho 5 không. Sau đó in những số chia hết cho 5 thành dãy phân tách bởi dấu phẩy .Ví dụ nguồn vào là : 0100,0011,1010,1001Đầu ra sẽ là : 1010Gợi ý :Trong trường hợp tài liệu nguồn vào được nhập vào chương trình nó nên được giả định là tài liệu được người dùng nhập vào từ giao diện tinh chỉnh và điều khiển .Code mẫu :

value = []
items=[x for x in input(" Nhập những số nhị phân : ").split(', ')]
for p in items:
    intp = int(p, 2)
    if not intp%5:
    value.append(p)
 
print (', '.join(value))

Bài 15:

Câu hỏi :Viết một chương trình tìm toàn bộ những số trong đoạn 1000 và 3000 ( tính cả 2 số này ) sao cho tổng thể những chữ số trong số đó là số chẵn. In những số tìm được thành chuỗi cách nhau bởi dấu phẩy, trên một dòng .Gợi ý :Trong trường hợp tài liệu nguồn vào được nhập vào chương trình nó nên được giả định là tài liệu được người dùng nhập vào từ giao diện tinh chỉnh và điều khiển .Code mẫu :

values = []
for i in range(1000, 3001):
    s = str(i)
    if (int(s[0])%2= =0) and (int(s[1])%2= =0) and (int(s[2])%2= =0) and (int(s[3])%2= =0):
 values.append(s)
 
print (", ".join(values))

Bài 16:

Câu hỏi :Viết một chương trình đồng ý nguồn vào là một câu, đếm số vần âm và chữ số trong câu đó. Giả sử nguồn vào sau được cấp cho chương trình : hello world ! 123Thì đầu ra sẽ là :

Số chữ cái là: 10
Số chữ số là: 3

Gợi ý :Trong trường hợp tài liệu nguồn vào được nhập vào chương trình nó nên được giả định là tài liệu được người dùng nhập vào từ giao diện tinh chỉnh và điều khiển .Code mẫu :

s = input(" Nhập câu của bạn : ")
 
d={" DIGITS ":0, " LETTERS ":0}
for c in s:
    if c.isdigit():
        d[" DIGITS "]+ =1
    elif c.isalpha():
        d[" LETTERS "]+ =1
    else:
        pass
print (" Số vần âm là : ", d[" LETTERS "])
print (" Số chữ số là : ", d[" DIGITS "])

Bài 17:

Câu hỏi :Viết một chương trình đồng ý nguồn vào là một câu, đếm chữ hoa, chữ thường .Giả sử nguồn vào là : Quản Trị MạngThì đầu ra là :Chữ hoa : 3Chữ thường : 8Gợi ý :Trong trường hợp tài liệu nguồn vào được nhập vào chương trình nó nên được giả định là tài liệu được người dùng nhập vào từ giao diện điều khiển và tinh chỉnh .Code mẫu :

s = input(" Nhập câu của bạn : ")
d={" UPPER CASE ":0, " LOWER CASE ":0}
 
for c in s:
    if c.isupper():
        d[" UPPER CASE "]+ =1
    elif c.islower():
        d[" LOWER CASE "]+ =1
    else:
        pass
print (" Chữ hoa : ", d[" UPPER CASE "])
print (" Chữ thường : ", d[" LOWER CASE "])

Bài 18:

Câu hỏi :Viết một chương trình tính giá trị của a + aa + aaa + aaaa với a là số được nhập vào bởi người dùng .Giả sử a được nhập vào là 1 thì đầu ra sẽ là : 1234Gợi ý :Trong trường hợp tài liệu nguồn vào được nhập vào chương trình nó nên được giả định là tài liệu được người dùng nhập vào từ giao diện tinh chỉnh và điều khiển .Code mẫu :

a = input(" Nhập số a : ")
n1 = int( " % s " % a )
n2 = int( " % s % s " % (a,a) )
n3 = int( " % s % s % s " % (a,a,a) )
n4 = int( " % s % s % s % s " % (a,a,a,a) )
 
print (" Tổng cần tính là : ",n1+n2+n3+n4)

Bài 19:

Câu hỏi :Sử dụng một list để lọc những số lẻ từ list được người dùng nhập vào .Giả sử nguồn vào là : 1,2,3,4,5,6,7,8,9 thì đầu ra phải là : 1,3,5,7,9Gợi ý :Trong trường hợp tài liệu nguồn vào được nhập vào chương trình nó nên được giả định là tài liệu được người dùng nhập vào từ giao diện tinh chỉnh và điều khiển .Code mẫu :

values = input(" Nhập dãy số của bạn, cách nhau bởi dấu phẩy : ")
numbers = [x for x in values.split(", ") if int(x)%2! =0]
print (", ".join(numbers))

Bài 20:

Câu hỏi :Viết chương trình tính số tiền thực của một thông tin tài khoản ngân hàng nhà nước dựa trên nhật ký thanh toán giao dịch được nhập vào từ giao diện điều khiển và tinh chỉnh .Định dạng nhật ký được hiển thị như sau :

D 100
W 200

( D là tiền gửi, W là tiền rút ra ) .Giả sử nguồn vào được cung ứng là 😀 300D 300W 200D 100Thì đầu ra sẽ là :500Gợi ý :Trong trường hợp tài liệu nguồn vào được nhập vào chương trình nó nên được giả định là tài liệu được người dùng nhập vào từ giao diện điều khiển và tinh chỉnh .Code mẫu :

import sys
netAmount = 0
 
while True:
    s = input(" Nhập nhật ký thanh toán giao dịch : ")
    if not s:
        break
    values = s.split(" ")
    operation = values[0]
    amount = int(values[1])
    if operation= =" D ":
        netAmount+ =amount
    elif operation= =" W ":
        netAmount- =amount
    else:
        pass

print

(netAmount)

20220604_154453_mh1654352733318_mr1657545267379 Kỹ sư CNTT Phạm Thị Ngọc Thanh thực hiện