Bài viết liên quan:
Bài tập cơ bản
- Bài tập 1:
Tính phép nhân và tổng của hai số
Cho hai số nguyên chỉ trả về tích của chúng nếu tích bằng hoặc nhỏ hơn 1000, nếu không thì trả về tổng của chúng.
#định nghĩa hàm multiplication_or_sum def multiplication_or_sum(num1, num2): # tính toán num1 nhâm num2 product = num1 * num2 # nếu kết quả nhân nhỏ hơn hoặc bằng 1000 if product <= 1000: #trả về giá trị nhân return product else: # Nếu giá trị nhân lớn hơn 1000 thì trả về tổng return num1 + num2 # Goi hàm multiplication_or_sum gán kết quả cho result result = multiplication_or_sum(20, 30) #xuất ra giá trị result print("The result is", result) # gọi hàm nhân với điều kiện 2 result = multiplication_or_sum(40, 30) #xuất ra giá trị result print("The result is", result)
- Bài tập 2:
In ra tổng của số hiện tại và số liền trước
Viết chương trình lặp lại 10 số đầu tiên và trong mỗi lần lặp, in ra tổng của số hiện tại và số trước đó.
print("In tong gia trị so hien tại và so truoc do (1-10)") #khai báo biến số previous previous_num = 0 # chạy vòng lặp từ 1-11 for i in range(1, 11): # tính toán Sum = giá trị trước + giá trị hiện hành x_sum = previous_num + i #xuất ra màn hình tổng print("số hiện hành", i, "số trước đó ", previous_num, " tổng: ", x_sum) #gán giá trị số trước đó = số hiện hành previous_num = i
- Bài tập 3:
In ra các ký tự từ một chuỗi có chỉ số chẵn
Viết chương trình nhận một chuỗi từ người dùng và hiển thị các ký tự có ở số chỉ mục chẵn.
# nhận chuỗi từ đầu vào chương trình word = input('nhap chuoi ') #hiển thị đoạn chuỗi đã nhập print("chuoi nhap:", word) # lấy độ lỡn của đoạn chuỗi size = len(word) #hiển thị những ký tự có index chẵn print("ky tu co index chan") #chạy loop với step =2 for i in range(0, size - 1, 2): print("index[", i, "]", word[i])
- Bài tập 4:
Xóa n ký tự đầu tiên của một chuỗi
Viết chương trình xóa các ký tự trong chuỗi bắt đầu từ 0 đến n và trả về một chuỗi mới.
Ví dụ:
remove_chars(“testabcd”, 4) nên đầu ra phải là abcd. Ở đây chúng ta cần xóa bốn ký tự đầu tiên khỏi một chuỗi.
remove_chars(“testabcd”, 2) nên đầu ra phải là stabcd. Ở đây chúng ta cần xóa hai ký tự đầu tiên khỏi một chuỗi.
#dinh nghia ham remove_chars #param1: string #param2: int def remove_chars(word, n): #xuat ra man hình chuoi ban dau print('chuoi ban dau:', word) #cat chuoi từ n--> giá trị cuói x = word[n:] return x print("bài toán xóa ký tự của chuỗi") print(remove_chars("testabcd", 4)) print(remove_chars("testabcd", 2))
- Bài tập 5:
Kiểm tra xem số đầu và số cuối của một danh sách có giống nhau không
Viết hàm trả về True nếu số đầu tiên và số cuối cùng của một danh sách đã cho giống nhau. Nếu các số khác nhau thì trả về Sai.
#khai báo function first_last_same #param1: array def first_last_same(numberList): #xuất ra một danh sách print("List:", numberList) #lấy vị trí đầu tiên first_num = numberList[0] #lấy vị trí cuoi cùng last_num = numberList[-1] #kiểm tra 2 giá trị đầu tiên và cuối cùng if first_num == last_num: #trả về đúng return True else: #trả về sai return False #khai báo 1 mảng numbers_x = [10, 10, 50, 40, 10] #goi hàm kiểm tra print("result is", first_last_same(numbers_x))
- Bài tập 6:
Hiển thị các số chia hết cho 5 trong danh sách
Lặp lại danh sách các số đã cho và chỉ in những số chia hết cho 5
#array khởi tạo num_list = [10, 20, 33, 46, 55] #xuất ra màn hình array print("phần từ của list:", num_list) print('các phần tử chia hết cho 5:') #chạy for cho các phần tử trong list #nếu chia hết cho 5 thì in ra for num in num_list: if num % 5 == 0: print(num)
- Bài tập 7:
Trả về số đếm của một chuỗi con đã cho từ một chuỗi
Viết chương trình tìm chuỗi con “substr” xuất hiện bao nhiêu lần trong chuỗi đã cho.
#chuỗi Str str_x = "chung toi la nhung developer tại VietNam" # sử dụng hàm count trongg python cnt = str_x.count("VietNam") #xuất ra giá trị count print(cnt)
- Bài tập 8:
In ra màn hình mẫu sau
#chạy vòng for từ 1 đến 10 for num in range(10): #vói mỗi giá trị num thì chạy vòng for thứ 2 for i in range(num): print (num, end=" ") #print ra số num và khoảng cách print("\n")
- Bài tập 9:
Kiểm tra số Palindrome
Viết chương trình kiểm tra xem số đã cho có phải là số đối xứng không.
Một số palindrome là một số giống nhau sau khi đảo ngược. Ví dụ 545, là số đối xứng
#hàm kiểm tra số panlindrome def palindrome(number): print("số kiểm tra", number) #khai báo original_num original_num = number # hoán vị số này reverse_num = 0 while number > 0: #mod cho 10 để lấy số từ đơn vị đến ngược lại reminder = number % 10 reverse_num = (reverse_num * 10) + reminder number = number // 10 # kiểm tra số ban đầu và số hoán vị có giống nhau không if original_num == reverse_num: print("day là so palindrome") else: print("khong phai so palindrome") palindrome(121)
- Bài tập 10:
Tạo một danh sách mới từ 2 danh sách sử dụng điều kiện sau
Cho 2 danh sách, viết chương trình tạo một danh sách mới sao cho danh sách mới chứa các số lẻ từ danh sách đầu tiên và các số chẵn từ danh sách thứ hai.
#hàm tạo danh sách #param 1 là 1 list #param 2 là 1 list def merge_list(list1, list2): #khỏi tạo danh sách rỗng result_list = [] # Duyệt từng phần tử trong list 1 for num in list1: # kiểm tra phần từ số lẻ if num % 2 != 0: # thêm phần từ vào danh sách rỗng result_list.append(num) # duyệt phần tử trong list 2 for num in list2: # kiểm tra phần từ này số chẵn if num % 2 == 0: # thêm số chẵn này vào list kết quả result_list.append(num) return result_list list1 = [10, 20, 25, 30, 35] list2 = [40, 45, 60, 75, 90] #gọi hàm merge_list print("result list:", merge_list(list1, list2))
- Bài tập 11:
Viết chương trình rút từng chữ số của một số nguyên theo thứ tự ngược lại.
Ví dụ: Nếu int đã cho là 7536, thì đầu ra sẽ là “6 3 5 7“, với khoảng cách giữa các chữ số.
#khai báo biến number number = 7536 #xuất ra màn hình số print("number", number) #chạy vòng lặp while number > 0: # lấy ký tự cuối cùng digit = number % 10 # xóa ký tự cuối và tiếp tục chạy vòng lặp number = number // 10 #in ra màn hình ký tự đó print(digit, end=" ")
- Bài tập 12:
Tính thuế thu nhập đối với khoản thu nhập đã cho bằng cách tuân thủ các quy tắc dưới đây
Ví dụ: giả sử thu nhập chịu thuế là 45000, thuế thu nhập phải nộp là
10000*0% + 10000*10% + 25000*20% = $6000.
#tạo 2 biến incom và tax income = 45000 tax_payable = 0 #xuất ra màn hình giá trị incom print("incom", income) #nếu incom <=10000 thì không thuế if income <= 10000: tax_payable = 0 #nếu incom <=20000 thì thuế tính bằng 10% còn lại elif income <= 20000: # không thuế trong khoãng 0 đến 10,000 x = income - 10000 # 10% thuế trong phần còn lại tax_payable = x * 10 / 100 else: # 10,000 đầu tiên không thuế tax_payable = 0 # tiếp theo 10,000 10% thuế tax_payable = 10000 * 10 / 100 # phần còn lại 20% thuế tax_payable += (income - 20000) * 20 / 100 print("tổng tiền thuế", tax_payable)
- Bài tập 13:
In bảng cửu chương mẫu 1 đến 10
#chạy 2 vòng lặp từ 1-11 for i in range(1, 11): for j in range(1, 11): #in ra giá trị i*j print(i * j, end=" ") #xuống hàng print("\t\t")
- Bài tập 14:
In ra màn hình Half-Pyramid hướng xuống với Ngôi sao (dấu hoa thị)
#chạy 2 vòng for for i in range(8, 0, -1): for j in range(0, i - 1): #in ra dấu * với khoảng cách print("*", end=' ') print(" ")
- Bài tập 15:
Viết hàm gọi là lũy thừa(cơ số, exp) trả về một giá trị int của cơ số tăng lên lũy thừa của exp.
Lưu ý ở đây exp là một số nguyên không âm và cơ số là một số nguyên.
#hàm số lũy thừa mũ def exponent(base, exp): #khai báo num num = exp result = 1 #chạy một vòng for với điều kiện >0 while num > 0: #nhân công dồn result = result * base num = num - 1 #in ra kết quả lũy thừa print(base, "lũy thừa", exp, "is: ", result) exponent(5, 4)
Input và Output trong Python
- Bài tập 1:
Nhận số từ người dùng
Viết chương trình nhận hai số từ người dùng và tính phép nhân
#nhập giá trị từ màn hình sử dụng input num1 = int(input("nhập số đầu tiên ")) num2 = int(input("nhập số thứ hai ")) #tính toán kết quả num1 nhân num2 res = num1 * num2 #in ra màn hình kết quả print("Kết quả phép nhân", res)
- Bài tập 2:
Hiển thị 3 chuỗi “Name”, “Is”, “Jane” thành “Name**Is**Jane”
Sử dụng hàm print() để định dạng các từ đã cho theo định dạng được đề cập. Hiển thị dấu phân cách ** giữa mỗi chuỗi.
print('Name', 'Is', 'Jane', sep='**')
- Bài tập 3:
Chuyển số thập phân sang số bát phân bằng cách sử dụng định dạng đầu ra print()
number = 18 print('%o' % number)
- Bài tập 4:
Hiển thị số float với 2 chữ số thập phân bằng hàm print()
num = 468.5213315 #xuát ra màn hình với định dạng 2 thập phân print('%.2f' % num)
- Bài tập 5:
Nhập dữ liệu là danh sách 5 số float input vào từ người dùng
#khai báo 1 mảng rỗng numbers = [] #chạy vòng lặp 5 lần for i in range(0, 5): #xuất nhập giá trị tại index i print("nhập số", i, ":") # Chuyển sang kiểu float item = float(input()) # thêm số này vào mảng numbers.append(item) print("danh sách số:", numbers)
- Bài tập 6:
Viết toàn bộ nội dung của một file đã cho vào một file mới bằng cách bỏ dòng số 5
# đọc file test.txt with open("test.txt", "r") as fp: # đọc tất cả các dòng trong file lines = fp.readlines() # Mở file để ghi new_file.txt with open("new_file.txt", "w") as fp: count = 0 # chạy vòng lặp với từng dòng trong file test.txt for line in lines: # bỏ dòng số 5 if count == 4: count += 1 continue else: # đọc dòng fp fp.write(line) # mỗi vòng lặp tăng giá trị đếm count count += 1
- Bài tập 7:
Nhạn ba chuỗi bất kỳ từ một lệnh gọi input()
Viết chương trình lấy ba tên làm đầu vào từ một người dùng trong lệnh gọi hàm input() duy nhất.
#nhập 3 chuỗi vào nhười dùng str1, str2, str3 = input("nhập vào 3 chuỗi").split() #in ra giá trị 3 chuỗi print('Name1:', str1) print('Name2:', str2) print('Name3:', str3)
- Bài tập 8:
Định dạng biến bằng phương thức string.format().
Viết chương trình sử dụng phương thức string.format() để định dạng ba biến sau theo đầu ra mong đợi
#khai bao 3 biến quantity = 3 totalMoney = 2000 price = 550 #khai báo statiment với các tham số statement1 = "dùng {1} dollars có thể mua {0} football với {2:.2f} dollars." #định dạng các tham số với format print(statement1.format(quantity, totalMoney, price))
- Bài tập 9:
Kiểm tra file rỗng hay không
Viết chương trình kiểm tra xem file đã cho có rỗng hay không
#khai báo thư viện import os #kiểm tra size của file test.txt size = os.stat("test.txt").st_size #kiểm tra size == 0 if size == 0: print('file is empty')
- Bài tập 10:
Đọc dòng số 4 trong file sau
Tạo một tệp test.txt và thêm nội dung bên dưới vào đó.
# đọc file test.txt with open("test.txt", "r") as fp: # đọc tất cả các dòng trong file test.txt lines = fp.readlines() # in ra màn hình dòng số 3 print(lines[2])
if else, for loop, và range trong Python
- Bài tập 1:
In 10 số tự nhiên đầu tiên bằng vòng lặp while
# khai báo i bắt đầu từ 1 i = 1 #chạy vòng lặp while while i <= 10: #in từ giá trị i print(i) #tăng giá trị i lên 1 i += 1
- Bài tập 2:
Tính tổng các số từ 1 đến một số cho trước
Viết chương trình nhận một số từ người dùng và tính tổng tất cả các số từ 1 đến một số đã cho
Ví dụ: nếu người dùng nhập 10 thì đầu ra phải là 55 (1+2+3+4+5+6+7+8+9+10)
# khai báo s chứa tổng của các số s = 0 # nhập vào giá trị n n = int(input("n= ")) # chạy vòng lặp n lần # dừng khi giá trị = n+1 for i in range(1, n + 1, 1): # cộng dồn giá trị vào s s += i #in ra màn hình xuống hàng print("\n") #in ra màn hình kết quả print("kết quả là: ", s)
- Bài tập 3:
Viết chương trình in bảng nhân của một số cho trước
Ví dụ: num = 2 nên đầu ra phải là
#khai báo giá trị n n = 2 #chạy vòng lặp 11 lần for i in range(1, 11, 1): # mỗi vòng lặp nhân giá trị n cho i product = n * i #in ra giá gị product print(product)
- Bài tập 4:
Hiển thị số từ danh sách bằng vòng lặp
Viết chương trình chỉ hiển thị các số trong danh sách thỏa mãn các điều kiện sau:
- Số phải chia hết cho năm
- Nếu số lớn hơn 150 thì bỏ qua và chuyển sang số tiếp theo
- Nếu số lớn hơn 500 thì dừng vòng lặp
#khai báo một danh sách số numbers = [12, 75, 150, 180, 145, 525, 50] # duyệt từng thành phần trong danh sách numbers for item in numbers: #nếu item >500 thì dừng vòng lặp if item > 500: break #nếu item > 150 thì bỏ qua elif item > 150: continue # nếu số chia hết cho 5 thì elif item % 5 == 0: print(item)
- Bài tập 5:
Đếm tổng các chữ số của một số
Viết chương trình đếm tổng các chữ số của một số bằng vòng lặp while.
#khai báo biến num và count num = 75869 count = 0 #chạy vòng lặp while cho đến num!=0 while num != 0: #chia phân tầng num = num // 10 # tăng giá trị đếm count = count + 1 print("tổng số chữ cái:", count)
- Bài tập 6:
In mẫu sau
Viết chương trình sử dụng vòng lặp for để in dãy số đảo ngược sau
#khai báo biến n và k n = 5 k = 5 #chạy một vòng range bắt đầu từ 0, đến n+1 for i in range(0,n+1): #chạy một vòng range bắt đầu từ k-1, cho đên 0, từng bước -1 for j in range(k-i,0,-1): #in ra giá trị j print(j,end=' ') print()
- Bài tập 7:
In danh sách theo thứ tự đảo ngược bằng vòng lặp
#khai báo 1 danh sách list1 = [10, 20, 30, 40, 50] # gọi hàm đảo list new_list = reversed(list1) # duyệt từng phần tử trong danh sách for item in new_list: #in ra giá trị phần tử print(item)
- Bài tập 8:
Hiển thị số từ -10 đến -1 bằng vòng lặp for
#chạy vòng for với giá trị bắt đăù là -10, mỗi bước +1, và kết quả kết thúc là 0 for num in range(-10, 0, 1): print(num)
- Bài tập 9:
Sử dụng khối lệnh else để hiển thị thông báo “Done!” sau khi thực hiện thành công vòng lặp for
#chạy vòng lặp với range =5 for i in range(5): #in giá trị i print(i) else: #nếu hết vòng lặp thì in chữ done! print("Done!")
- Bài tập 10:
Viết chương trình hiển thị tất cả các số nguyên tố trong một khoảng
Chú ý: Số nguyên tố là số không thể lập được bằng cách nhân các số nguyên khác. Số nguyên tố là số tự nhiên lớn hơn 1 không là tích của hai số tự nhiên bé hơn
Ví dụ:
6 không phải là số nguyên tố vì nó có thể lập bởi 2×3 = 6
37 là số nguyên tố vì không có số nguyên nào khác nhân với nhau để tạo thành số đó.
start = 25 end = 50 #khai báo 2 biến print("số nguyên tố bắt đầu ", start, "đến", end, "là:") #chạy vòng lặp từ start đến end+1 for num in range(start, end + 1): #nếu num>1 if num > 1: #chạy vòng lặp i từ 2 cho đến num for i in range(2, num): # kiểm tra số nguyên tố if (num % i) == 0: #nếu chia hết thì break break else: #in giá trị num print(num)
- Bài tập 11:
Hiển thị dãy Fibonacci tối đa 10 số hạng
Dãy Fibonacci là một dãy số. Số tiếp theo được tìm thấy bằng cách cộng hai số trước nó. Hai số đầu tiên là 0 và 1.
Ví dụ: 0, 1, 1, 2, 3, 5, 8, 13, 21. Số tiếp theo trong chuỗi trên là 13+21 = 34.
# khai báo 2 biến num1, num2 = 0, 1 print("dãy Fibonacci:") # chạy vòng lặp 10 lần for i in range(10): # in ra giá trị đầu tiên print(num1, end=" ") # lấy giá trị tiếp theo trong dãy Fibonaci res = num1 + num2 # cập nhật giá trị num1 = num2 num2 = res
- Bài tập 13:
Tìm giai thừa của một số cho trước
Viết chương trình sử dụng vòng lặp để tìm giai thừa của một số cho trước.
Giai thừa (ký hiệu: !) có nghĩa là nhân tất cả các số nguyên từ số đã chọn xuống 1
num = 5 factorial = 1 #khai báo 2 biến giá trị 5 và 1 if num < 0: print("giai thừa không thể có số âm") #nếu num == 0 thì elif num == 0: print("giai thưc của 0 là 1") else: # chạy vòng lặp 5 lần for i in range(1, num + 1): # nhân dồn kết quả factorial = factorial * i print("giải thừ của ", num, " là ", factorial)
- Bài tập 14:
Đảo ngược một số nguyên cho trước
num = 76542 reverse_number = 0 #khai báo 2 biến print("nhập số ", num) #chạy vòng lặp cho đến khi num >0 while num > 0: #lấy số dư reminder = num % 10 reverse_number = (reverse_number * 10) + reminder #chia phân lớp num = num // 10 print("số nghịch đảo là ", reverse_number)
- Bài tập 15:
Sử dụng vòng lặp để hiển thị các phần tử trong danh sách đã cho có mặt ở vị trí chỉ số lẻ
my_list = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] # bắt đầu từ index 1 với từng bước nhảy 2( 1,3,5,7) for i in my_list[1::2]: #in ra giá trị i print(i, end=" ")
- Bài 16:
Tính lập phương của tất cả các số từ 1 đến một số cho trước
Viết chương trình in lập phương của tất cả các số từ 1 đến một số cho trước
#khai báo giá trị number input_number = 6 #chạy một vòng lặp bắt đầu 1 đến giá trị 6+1 for i in range(1, input_number + 1): print("số hiện hành :", i, " lập phương = ", (i * i * i))
- Bài tập 17:
Tìm tổng của dãy có n số hạng
Viết chương trình tính tổng của dãy số có n số hạng.
Ví dụ: nếu n = 5 chuỗi sẽ trở thành 2 + 22 + 222 + 2222 + 22222 = 24690
n = 5 # khai báo biên n=5 start = 2 sum_seq = 0 # chạy vòng lặp bắt đầu từ 0 đến n for i in range(0, n): #in giá trị start và dấu + print(start, end="+") #cộng dồn kết quả sum_seq += start # tính toán giá trị kế tiếp start = start * 10 + 2 print("\n:", sum_seq)
- Bài tập 18:
In mẫu sau
Viết chương trình in mẫu bắt đầu sau bằng vòng lặp for
#khai báo rows = 5 rows = 5 #chạy vòng lặp từ 0 đên rows for i in range(0, rows): #chạy vòng lặp từ 0 đến giá trị i+1 for j in range(0, i + 1): #in ra dấu * print("*", end=' ') print("\r") #chạy vòng lặp với step -1 for i in range(rows, 0, -1): #chạy vòng lặp từ j đến i-1 for j in range(0, i - 1): #in ra dấu * print("*", end=' ') print("\r")
Bài tập function python
- Bài tập 1:
Tạo hàm trong Python
Viết chương trình tạo một hàm nhận vào hai đối số name và age và in ra giá trị của chúng.
# khai báo function demo #param 1 name #param 2 age def demo(name, age): # in ra giá trị name và age print(name, age) # gọi function demo demo("Ben", 25)
- Bài tập 2:
Tạo một hàm có độ dài đối số thay đổi
Viết chương trình tạo hàm func1() để chấp nhận các đối số có độ dài thay đổi và in giá trị của chúng.
Lưu ý: Tạo một hàm theo cách mà chúng ta có thể chuyển bất kỳ số lượng đối số nào cho hàm này và hàm sẽ xử lý chúng và hiển thị giá trị của từng đối số.
#định nghĩ func1 với tham số là đối số def func1(*args): #khai báo vòng lặp for i in args: #in ra giá trị i print(i) func1(20, 40, 60) func1(80, 100)
- Bài tập 3:
Trả về nhiều giá trị từ một hàm
Viết chương trình tạo hàm tính toán () sao cho nó có thể nhận hai biến và tính toán cộng và trừ. Ngoài ra, nó phải trả về cả phép cộng và phép trừ trong một
#khai báo hàm calculation def calculation(a, b): #cộng giá trị a và b addition = a + b #trừ giá trị a và b subtraction = a - b # trả về kết quả addition và subtraction return addition, subtraction # gán kết quả hàm calculation cho res res = calculation(40, 10) # in giá trị res print(res)
- Bài tập 4:
Tạo hàm với đối số mặc định
Viết chương trình tạo hàm show_employee() theo các điều kiện sau.
Nó sẽ chấp nhận tên và mức lương của nhân viên và hiển thị cả hai.
Nếu lương bị thiếu trong lời gọi hàm thì hãy gán giá trị mặc định 9000 cho lương
# tạo function với tham số mặc định 9000 def show_employee(name, salary=9000): #xuất ra màn hình tên và salary print("Name:", name, "salary:", salary) #gọi hàm với tham số thay đổi show_employee("Ben", 12000) #gọi hàm với tham số mặc định show_employee("Jessa")
- Bài tập 5:
Tạo hàm bên trong để tính phép cộng theo cách sau:
- Tạo một hàm bên ngoài sẽ với hai tham số, a và b
- Tạo một hàm bên trong bên trong một hàm bên ngoài sẽ tính toán phép cộng a và b
- Cuối cùng, một hàm bên ngoài sẽ return kết quả cộng và số 5
# định nghĩa hàm bên ngoài với #param1 a #param2 b def outer_fun(a, b): square = a ** 2 # định nghĩa hàm addition a và b def addition(a, b): #trả giá trị a+b return a + b # gọi hàm addition với a,b là tham số add = addition(a, b) # công thêm 5 và return return add + 5 result = outer_fun(5, 10) print(result)
- Bài tập 6:
Tạo hàm đệ quy
Viết chương trình tạo hàm đệ quy tính tổng các số từ 0 đến 10.
Hàm đệ quy là một hàm tự gọi đi gọi lại chính nó.
#định nghĩa hàm addition với tham số num def addition(num): #nếu num >0 if num: # trả về giá trị num + kết quả hàm addition với num-1 return num + addition(num - 1) else: #trả về 0 nếu num =0 return 0 #gọi hàm đệ quy res = addition(10) #in ra màn hình kết quả print(res)
- Bài tập 7:
Đặt tên khác cho hàm và gọi nó qua tên mới
Dưới đây là hàm display_student(name, age). Gán tên mới show_student(name, age) cho nó và gọi nó bằng tên mới.
#khai báo hàm display_student #param 1 name #param 2 age def display_student(name, age): #hiển thị name và age print(name, age) # gọi hàm với tên cũ display_student("Emma", 26) # khai báo hàm = tên mới showStudent = display_student # gọi hàm = tên mới showStudent("Emma", 26)
- Bài tập 8:
Tạo một danh sách Python gồm tất cả các số chẵn từ 0 đến 50
print(list(range(0, 50, 2)))
- Bài tập 9:
Tìm phần tử lớn nhất từ một danh sách cho trước
#khai báo một danh sách x = [4, 6, 8, 24, 12, 2] #sử dụng toán tử max để lấy giá trị lớn nhất print(max(x))
Bài tập String trong python
- Bài tập 1:
Tạo một chuỗi gồm ký tự đầu tiên, giữa và cuối cùng. Viết chương trình tạo một chuỗi mới gồm ký tự đầu tiên, giữa và cuối cùng của chuỗi đầu vào.
#khai báo biết string 1 str1 = 'James' print("chuỗi ban đầu", str1) # lấy ký tự đầu tiên của chuỗi res = str1[0] # lấy độ lớn của chuỗi l = len(str1) # lấy index ở giữa của chuỗi mi = int(l / 2) # lấy chuỗi ở giữa chuỗi ban đầu res = res + str1[mi] # Lấy giá trị cuối cùng res = res + str1[l - 1] #xuất ra chuỗi mới print("Chuỗi mới:", res)
- Bài tập 2:
Tạo một chuỗi gồm ba ký tự ở giữa. Viết chương trình tạo một chuỗi mới gồm ba ký tự ở giữa của một chuỗi đầu vào.
#khai báo hàm get_middle_three_chars #param str1 def get_middle_three_chars(str1): #xuất giá trị string ban đầu print("chuỗi ban đầu", str1) # lấy index ở giữa của string mi = int(len(str1) / 2) # sử dụng toán tử slide lấy 3 ký tự res = str1[mi - 1:mi + 2] print("xuất ra chuỗi:", res) get_middle_three_chars("test_get_middle_three_chars")
- Bài tập 3:
Nối chuỗi mới vào giữa một chuỗi đã cho. Cho hai chuỗi s1 và s2. Viết chương trình tạo một chuỗi mới s3 bằng cách thêm s2 vào giữa s1.
#khai báo hàm append_middle def append_middle(s1, s2): print("chuỗi ban đầu", s1, s2) # lấy giá trị index giữa s1 mi = int(len(s1) / 2) #lấy ký tự từ 0 đến giữa s1 x = s1[:mi] # nối chuỗi s2 và x x = x + s2 # thêm ký tự còn lại s1 x = x + s1[mi:] print("chuỗi mới có giá trị:", x) append_middle("test", "append_middle")
- Bài tập 4:
Tạo một chuỗi mới bao gồm các ký tự đầu tiên, giữa và cuối của mỗi chuỗi đầu vào. Cho hai chuỗi, s1 và s2, hãy viết chương trình trả về một chuỗi mới gồm các ký tự đầu, giữa và cuối của s1 và s2.
#khai báo hàm mix string def mix_string(s1, s2): # lấy ký tự đầu tiên trong chuỗi s1 và s2 first_char = s1[0] + s2[0] # lấy giá trị giữa của cả 2 string middle_char = s1[int(len(s1) / 2):int(len(s1) / 2) + 1] + s2[int(len(s2) / 2):int(len(s2) / 2) + 1] # lấy giá trị cuối cùng của cả 2 chuỗi last_char = s1[len(s1) - 1] + s2[len(s2) - 1] # công tất cả các chuỗi res = first_char + middle_char + last_char #xuất ra màn hình chuỗi print("Mix String là ", res) s1 = "test" s2 = "mix_string" mix_string(s1, s2)
- Bài tập 5:
Sắp xếp các ký tự chuỗi sao cho chữ thường đứng trước. Chuỗi đã cho chứa tổ hợp chữ thường và chữ hoa. Viết chương trình sắp xếp các ký tự của một chuỗi sao cho tất cả các chữ cái viết thường sẽ xuất hiện trước.
#khai báo một chuỗi string str1 = "PYnAtivE" #xuất ra chuỗi print('chuỗi ban đầu:', str1) lower = [] upper = [] #chạy 1 vòng for từ char trong string for char in str1: if char.islower(): # thêm chuỗi thường vào list lower lower.append(char) else: # thêm chuỗi hoa vào list upper upper.append(char) # join cả 2 danh sách này sorted_str = ''.join(lower + upper) #xuất ra kết quả chuỗi print('Result:', sorted_str)
- Bài tập 6:
Đếm tất cả các chữ cái, chữ số và ký hiệu đặc biệt từ một chuỗi đã cho
#định nghĩa hàm find_digits_chars_symbols def find_digits_chars_symbols(sample_str): #khai báo 3 biến char_count = 0 digit_count = 0 symbol_count = 0 # duyệt từng ký tự trong string for char in sample_str: #nếu ký tự là chữ if char.isalpha(): char_count += 1 #nếu ký tự là số elif char.isdigit(): digit_count += 1 # nếu ký tự đặc biệt else: symbol_count += 1 #xuất ra màn hình các chuỗi print("Chars =", char_count, "Digits =", digit_count, "Symbol =", symbol_count) sample_str = "P@4yn2^at&#i65ve" #gọi hàm find_digits_chars_symbols find_digits_chars_symbols(sample_str)
- Bài tập 7:
Tạo một String hỗn hợp sử dụng các quy tắc sau. Cho hai chuỗi s1 và s2. Viết chương trình tạo một chuỗi mới s3 được tạo từ ký tự đầu tiên của s1, sau đó là ký tự cuối cùng của s2, Tiếp theo, ký tự thứ hai của s1 và ký tự cuối cùng thứ hai của s2, v.v. Bất kỳ ký tự còn sót lại nào ở cuối kết quả.
#khai báo 2 chuỗi s1, s2 s1 = "Abc" s2 = "Xyz" # lấy độ lớn của s1, s2 s1_length = len(s1) s2_length = len(s2) # lấy độ lớn lớn nhất của s1,s2 length = s1_length if s1_length > s2_length else s2_length result = "" # đảo ngược s2 s2 = s2[::-1] #duyệt từng ký tự i trong chuỗi for i in range(length): #nếu i < s1_length thì if i < s1_length: result = result + s1[i] #nếu i < s2_length thì if i < s2_length: result = result + s2[i] #xuất ra kết quả print(result)
- Bài tập 8:
Kiểm tra cân bằng ký tự chuỗi. Viết chương trình kiểm tra xem hai xâu có cân bằng không. Ví dụ: chuỗi s1 và s2 được cân bằng nếu tất cả các ký tự trong s1 đều có trong s2. Vị trí của ký tự không quan trọng.
#khai báo hàm string_balance_test def string_balance_test(s1, s2): #đặt biến cờ flag = True #duyệt từng ký tự trong s1 for char in s1: #nếu ký tự này trong s2 if char in s2: continue else: #đặt cờ bằng false flag = False return flag s1 = "Ynt" s2 = "PYntatiave" #gọi hàm string_balance_test flag = string_balance_test(s1, s2) print("s1, s2 có cân bằng:", flag) s1 = "Ynt" s2 = "PYngative" flag = string_balance_test(s1, s2) print("s1, s2 có cân bằng:", flag)
- Bài tập 9:
Tìm tất cả các lần xuất hiện của một xâu con trong một xâu đã cho bằng cách bỏ qua chữ hoa chữ thường.
#khởi tạo chuỗi ban đầu str1 = "chao mung den VietNam, VietNam don chao quy khach" sub_string = "VietNam" # chuyển chữ hoa thành chữ thường temp_str = str1.lower() # sử dụng hàm count để đếm chuỗi con count = temp_str.count(sub_string.lower()) print("VietNam xuất hiện:", count)
- Bài tập 10:
Tính tổng và trung bình cộng các chữ số có trong một chuỗi. Cho một chuỗi s1, hãy viết chương trình trả về tổng và trung bình cộng của các chữ số xuất hiện trong chuỗi, bỏ qua tất cả các ký tự khác.
#khai báo 1 chuỗi input_str = "PYtnatovei29@#8496" total = 0 cnt = 0 #duyệt từng ký tự trong chuỗi for char in input_str: #nếu chuỗi là số thì công dồn if char.isdigit(): total += int(char) cnt += 1 # tính trung bình avg = total / cnt print("tổng là:", total, "trung bình ", avg)
- Bài tập 11:
Viết chương trình đếm số lần xuất hiện của tất cả các ký tự trong một chuỗi
#định nghĩa chuỗi str1 = "Apple" # tạo dict() char_dict = dict() #duyệt từng ký tự trong str1 for char in str1: #đếm số lần xuất hiện của từng chuỗi count = str1.count(char) # thêm số lần xuất hiện trong char_dict char_dict[char] = count #hiển thị kết quả đếm print('Result:', char_dict)
- Bài tập 12:
Đảo ngược một xâu đã cho
#khai báo môt chuỗi str1 = "PYtnsatitve" #in ra chuỗi ban đầu print("Chuỗi ban đầu:", str1) #đảo ngược chuỗi sử dụng hàm reversed str1 = ''.join(reversed(str1)) #in ra chuỗi đảo ngược print("chuỗi đảo ngược là:", str1)
- Bài tập 13:
Tìm vị trí cuối cùng của một chuỗi con cho trước. Viết chương trình tìm vị trí cuối cùng của chuỗi con “test” trong một chuỗi đã cho.
#định nghĩa string str1 = "test is something (such as a series of questions or exercises) for measuring the skill, knowledge, intelligence, capacities,... " #in ra chuỗi cơ bản print("chuỗi cơ bản:", str1) #lấy index bắt đầu của chuỗi test index = str1.rfind("test") #in ra index của chuỗi test print("index:", index)
- Bài tập 14:
Tách một chuỗi trên dấu gạch nối. Viết chương trình tách một chuỗi đã cho trên dấu gạch nối và hiển thị từng chuỗi con.
#định nghĩa chuỗi có dấu - str1 = "test-is-a-data-test" print("chuỗi ban đầu:", str1) # Phân tách chuỗi theo dấu - sub_strings = str1.split("-") #in ra giá trị của mỗi chuỗi phân tách print("hiển thị chuỗi con") #duyệt từng phần tử trong mảng sub_strings for sub in sub_strings: print(sub)
- Bài tập 15:
Xóa chuỗi rỗng khỏi danh sách chuỗi
#định nghĩa danh sách chuỗi str_list = ["Alice", "Marry", "", "Kelly", None, "Cantona", ""] #định nghĩa mảng mới res_list = [] #duyệt từng phần tử của mảng for s in str_list: # đối với từng phần tử kiểm tra s if s: res_list.append(s) #xuất ra mảng đã lọc chuỗi print(res_list)
- Bài tập 16:
Xóa các ký hiệu/dấu câu đặc biệt khỏi một chuỗi
#importa library import string #khai báo chuỗi có ký tự đặc biệt str1 = "/*Petter is @best & dance" #in ra chuỗi ban đầu print("Chuỗi ban đầu ", str1) #maketrans thay thế #string.punctuation chứa tất cả ký tự đặc biệt new_str = str1.translate(str.maketrans('', '', string.punctuation)) #xuất ra chuỗi mới print("Chuỗi mới sau khi thay thế ", new_str)
- Bài tập 17:
Xóa tất cả các ký tự khỏi một chuỗi trừ số nguyên
#định nghĩa một chuỗi str1 = 'I am 34 years and 10 months old' #xuất ra chuỗi ban đầu print("chuỗi ban đầu ", str1) #sử dụng Join, for, và isdigit để định dạng lại chuỗi res = "".join([item for item in str1 if item.isdigit()]) #xuất ra res print(res)
- Bài tập 18:
Tìm từ có cả chữ cái và số. Viết chương trình tìm các từ có cả bảng chữ cái và số từ một chuỗi đầu vào.
#khai báo chuỗi Str 1 str1 = "test is Data dance and singer Expert" print("chuỗi ban đầu : " + str1) #khai báo mảng res res = [] # phân tách chuỗi theo dấu khảng cách temp = str1.split() #duyệt từng word trong chuỗi #any toán tử kiểm tra danh sách có true for item in temp: if any(char.isalpha() for char in item) and any(char.isdigit() for char in item): res.append(item) print("các word có cả số lẫn chữ") for i in res: #in ra giá trị các word có trong danh sách cả số lần chữ print(i)
- Bài tập 19:
Thay mỗi ký hiệu đặc biệt bằng # trong chuỗi sau
import string #khai báo biến string 1 str1 = '/*Jon is @dancer & singer!!' #hiển thị ra ouput print("chuỗi ban đầu : ", str1) # khai báo replace_char replace_char = '#' # duyệt từng ký tự trong string.punctuation for char in string.punctuation: #thay thế ký tự đặc biệt bởi # str1 = str1.replace(char, replace_char) print("chuỗi sau khi thay thế : ", str1)
Bài tập Data Structure trong Python
- Bài tập 1:
Tạo danh sách bằng cách chọn một mục có chỉ số lẻ từ danh sách đầu tiên và các mục có chỉ số chẵn từ danh sách thứ hai. Cho hai danh sách l1 và l2, hãy viết chương trình tạo danh sách thứ ba l3 bằng cách chọn một phần tử có chỉ số lẻ từ danh sách l1 và các phần tử có chỉ số chẵn từ danh sách l2.
#khai báo list 1 list1 = [3, 6, 9, 12, 15, 18, 21] #khai báo list 2 list2 = [4, 8, 12, 16, 20, 24, 28] #khai báo list res = list() #lấy canh sách có index số lẻ odd_elements = list1[1::2] print("thành phần danh sách với index lẻ") #xuất ra màn hình print(odd_elements) #lấy canh sách có index số chẵn even_elements = list2[0::2] print("thành phần danh sách với index chẵn") #xuất ra màn hình print(even_elements) print("List 3") #nối list 1, list 2 vào list 3 res.extend(odd_elements) res.extend(even_elements) print(res)
- Bài tập 2:
Xóa và thêm phần tử trong danh sách. Viết chương trình loại bỏ phần tử có mặt ở chỉ số 4 và thêm nó vào vị trí thứ 2 và cuối danh sách.
#khai báo một danh sách sample_list = [34, 54, 67, 89, 11, 43, 94] #hiển thị danh sách ban đầu print("danh sách ban đầu ", sample_list) #lấy ra phần tử vị trí số 4 element = sample_list.pop(4) #hiển thị danh sách sau khi pop print("list sau khi pop index 4 ", sample_list) #thêm vào tại vị trí số 2 sample_list.insert(2, element) print("List sau khi thêm vào index 2 ", sample_list) #thêm element vào vị trí cuối sample_list.append(element) print("List sau khi thêm vào vị trí cuối ", sample_list)
- Bài tập 3:
Cắt danh sách thành 3 phần bằng nhau và đảo ngược từng phần
#khai báo danh sách số sample_list = [11, 45, 8, 23, 14, 12, 78, 45, 89] #xuất ra màn hình danh sách print("danh sách ban đầu ", sample_list) #tính độ lớn của danh sách ban đầu length = len(sample_list) #chia 3 độ lớn danh sách chunk_size = int(length / 3) #khai báo giá trị bắt đầu start và end start = 0 end = chunk_size # chạy vòng cho 3 danh sách for i in range(3): # lấy giá trị index từ start đến end indexes = slice(start, end) # lấy array và gán vào list_chunk list_chunk = sample_list[indexes] #in ra chunk print("Chunk ", i, list_chunk) # đảo ngược danh sách print("sau khi đảo ngược ", list(reversed(list_chunk))) #gán giá trị start và end cho lần chạy tiếp theo start = end end += chunk_size
- Bài tập 4:
Đếm số lần xuất hiện của từng phần tử trong danh sách. Viết chương trình lặp lại một danh sách đã cho và đếm số lần xuất hiện của từng phần tử và tạo một từ điển để hiển thị số lượng của từng phần tử.
#định nghĩa một list sample_list = [11, 45, 8, 11, 23, 45, 23, 45, 89] #in ra danh sách ban đầu print("Danh sách ban đầu ", sample_list) #khai báo count_dict count_dict = dict() #duyệt từng phần tử trong array for item in sample_list: #nếu item đã có trong count_dict if item in count_dict: #tăng số đếm +1 count_dict[item] += 1 else: #đếm số đếm =1 count_dict[item] = 1 #in ra số lượng item đã đếm print("Đếm số lượng ", count_dict)
- Bài tập 5:
Tạo một set Python sao cho nó hiển thị phần tử từ cả hai danh sách theo một cặp
#định nghĩa list đầu tiên first_list = [2, 3, 4, 5, 6, 7, 8] #in ra màn hình list ban đầu print("List ban đầu ", first_list) #định nghĩa list thứ hai second_list = [4, 9, 16, 25, 36, 49, 64] print("List thứ hai", second_list) #gom thành từng cặp sử dụng toán tử Zip result = zip(first_list, second_list) #chuyển thành tập hợp set result_set = set(result) #in ra kết quả màn hình print(result_set)
- Bài tập 6:
Tìm giao (chung) của hai tập hợp và loại các phần tử đó ra khỏi tập hợp thứ nhất
#khai báo 2 list first_set = {233, 412, 635, 557, 768, 873, 299} second_set = {567, 833, 219, 617, 733, 453, 478} #in ra danh sách ban đầu và danh sách thứ 2 print("First Set ", first_set) print("Second Set ", second_set) #lấy tập hợp giao sử dụng intersection intersection = first_set.intersection(second_set) #hiển thị ra tập hợp giao print("Intersection của 2 danh sách ", intersection) #duyệt từng phần tử for item in intersection: #remove phần tử này ra khỏi tập hợp ban đầu first_set.remove(item) #hiển thị danh sách ban đầu print("hiển thị danh sách ban đầu ", first_set)
- Bài tập 7:
Kiểm tra xem một tập hợp có phải là tập hợp con hay tập hợp cha của một tập hợp khác không. Nếu tìm thấy, hãy xóa tất cả các phần tử khỏi tập hợp đó
#khai báo 2 tập hợp first_set = {57, 83, 29} second_set = {57, 83, 29, 67, 73, 43, 48} #xuất ra màn hình phần tử của tập hợp print("Tập hợp 1 ", first_set) print("Tập hơp 2 ", second_set) #kiểm tra tập hợp con sử dụng issubset print("tập hợp 1 là tập hợp con của tập hợp 2 -", first_set.issubset(second_set)) print("tập hợp 2 là tập hợp con của tập hợp 1 - ", second_set.issubset(first_set)) #kiểm tra tập hợp cha sử dụng issuperset print("tập hợp 1 là tập hợp cha của tập hợp 2- ", first_set.issuperset(second_set)) print("tập hợp 2 là tập hợp cha của tập hợp 1 - ", second_set.issuperset(first_set)) #nếu là tập hợp con thì xóa if first_set.issubset(second_set): first_set.clear() #nếu là tập hợp cha thì xóa if second_set.issubset(first_set): second_set.clear() #xuất ra màn hình tập hợp 1 và 2 print("tập hợp 1 ", first_set) print("tập hợp 2 ", second_set)
- Bài tập 8:
Lặp lại một danh sách đã cho và kiểm tra xem một phần tử đã cho có tồn tại dưới dạng giá trị của khóa trong từ điển hay không. Nếu không, hãy xóa nó khỏi danh sách
#khai báo 1 danh sách roll_number = [47, 64, 69, 37, 76, 83, 95, 97] #khai báo 1 từ điển sample_dict = {'test1': 47, 'test2': 69, 'test3': 76, 'test4': 97} #xuất ra danh sách List print("List:", roll_number) #xuất ra từ điển print("Dictionary:", sample_dict) # tạo danh sách mới bao gồm item trong roll_number và nó trong sample_dict.values() roll_number[:] = [item for item in roll_number if item in sample_dict.values()] #xuất ra danh sách print("danh sách sau khi remove:", roll_number)
- Bài tập 9: Lấy tất cả các giá trị từ từ điển và thêm chúng vào danh sách nhưng không thêm các giá trị trùng lặp
#khai báo một từ điển speed = {'test1': 47, 'test2': 52, 'test3': 47, 'test4': 44, 'test5': 52, 'test6': 53, 'test7': 54, 'test8': 44, 'test9': 54} #xuất ra giá trị từ điển print("Dictionary's values - ", speed.values()) #khởi tạo list speed_list = list() # duyệt từng value trong dic for val in speed.values(): # nếu chưa có trong list if val not in speed_list: #thêm giá trị vào speed_list.append(val) #in ra giá trị list print("unique list", speed_list)
- Bài tập 10: Loại bỏ các giá trị trùng lặp khỏi danh sách và tạo một tuple rồi tìm số nhỏ nhất và số lớn nhất
#tạo một list sample_list = [817, 152, 441, 531, 514, 187, 512, 513] #xuất danh sách ban đầu print("list ban đầu", sample_list) #chuyển list => set để loại giá trị trùng sau đó chuyển sang list sample_list = list(set(sample_list)) #in ra danh sách không trùng print("unique list", sample_list) #tạo tuple từ list t = tuple(sample_list) print("tuple ", t) #sử dụng min , max để in ra giá trị lớn nhất, nhỏ nhất print("Giá trị nhỏ nhất: ", min(t)) print("Giá trị lớn nhất: ", max(t))
Bài tập List trong python
- Bài tập 1: Đảo ngược thứ tự của một list
#khai báo một list list1 = [1300, 2300, 3300, 4300, 5300] #đảo ngược list list1.reverse() #xuất ra mành hình danh sách print(list1)
- Bài tập 2:
Nối hai danh sách theo index. Viết chương trình cộng hai danh sách theo chỉ mục. Tạo một danh sách mới chứa mục chỉ mục thứ 0 từ cả hai danh sách, sau đó là mục chỉ mục đầu tiên, v.v. cho đến phần tử cuối cùng. mọi mục còn sót lại sẽ được thêm vào cuối danh sách mới.
#khai báo 2 list list1 = ["M", "na", "i", "Ke"] list2 = ["y", "me", "s", "lly"] #list 3 là những phần tử i+j vơi i,j trong Zip list3 = [i + j for i, j in zip(list1, list2)] #xuất ra giá trị list3 print(list3)