# Python cơ bản: Input - Output - Variable ## Print: Lệnh để in thông tin ra output (thông thường là màn hình) ## Variable: Là đại lượng có thể thay đổi trong quá trình hoạt động của chương trình. ## Cấu trúc lập trình tuần tự: Cấu trúc lặp trình tuần tự là một cách tiếp cận trong lập trình mà các câu lệnh được thực thi theo một trình tự cụ thể từ đầu đến cuối. Trong cấu trúc này, các lệnh được thực hiện một cách tuần tự, nghĩa là lệnh sau chỉ được thực hiện sau khi lệnh trước đã hoàn thành. Điều này tạo ra một luồng thực thi tuyến tính trong chương trình. Cấu trúc lặp trình tuần tự là một phần quan trọng trong việc tổ chức mã nguồn và kiểm soát luồng của một chương trình. ## Cấu trúc lập trình rẽ nhánh: Cấu trúc lặp trình rẽ nhánh kết hợp các lệnh điều kiện và các khối mã để tạo ra luồng thực thi phụ thuộc vào điều kiện nhất định. Trong cấu trúc này, một điều kiện được kiểm tra, và dựa vào kết quả của điều kiện đó, các lệnh sẽ được thực thi. Cụ thể, cấu trúc lặp trình rẽ nhánh thường bao gồm các lệnh như "if", "else if" (hoặc "elif" trong một số ngôn ngữ lập trình), và "else". Các điều kiện được đánh giá, và các khối mã tương ứng được thực thi dựa trên kết quả của điều kiện. Ví dụ, một cấu trúc lặp trình rẽ nhánh trong Python có thể như sau: ``` x = 10 if x > 10: print("x lớn hơn 10") elif x == 10: print("x bằng 10") else: print("x nhỏ hơn 10") ``` ## Cấu trúc lập trình lặp: Trong Python, có hai cấu trúc lập trình lặp chính: vòng lặp for và vòng lặp while. Dưới đây là cách sử dụng từng loại vòng lặp cùng với các ví dụ cụ thể. ### Vòng lặp for Vòng lặp for được sử dụng để lặp qua một dãy các phần tử ( cơ bản nhất là phạm vi số). Cú pháp cơ bản của vòng lặp for là: ```python= #Lặp lại với giá trị của i trong đoạn từ i = start cho tới i = stop - 1 for i in range(start, stop): print(i) ``` Cách viết vòng lặp for để lặp lại với giá trị start = 0 đến stop: ```python= for j in range(stop): #dosomething ``` ## Một số cách viết vòng lặp for: ```python= # Cú pháp 1: lặp lại với các giá trị i= start cho tới i = stop - 1 # i tự động tăng dần, mỗi lần 1 đơn vị # Sử dụng trong các yêu cầu duyệt qua các giá trị từ start đến stop start = 0 stop = 10 for i in range(start, stop): print(i) # Cú pháp 2: lặp lại với các giá trị i= start cho tới i = stop - 1 # i tự động tăng dần, mỗi lần step đơn vị # Sử dụng trong các yêu cầu duyệt qua các giá trị từ start đến stop start = 0 stop = 40 step = 4 for i in range(start, stop, step): print(i) ## Bài toán ví dụ: In ra các số chẵn từ 6 cho tới 100 start = 6 stop = 101 step = 2 for i in range(start, stop, step): print(i) # Cú pháp 3: lặp lại với các giá trị i= start cho tới i = stop - 1 # i tự động giảm dần, mỗi lần step đơn vị: start = 600 stop = 101 step = -2 for i in range(start, stop, step): print(i) # # Cách viết gọn vòng for: for i in range(100, 700): print(i) # Bài toán 1: Tính tổng các số tự nhiên nhỏ hơn n nhập từ bàn phím. n = int(input()) sum = 0 for i in range(1, n): sum = sum + i print(sum) # Bài toán 2: Tính tổng các số tự nhiên lẻ nhỏ hơn n nhập từ bàn phím start = 1 stop = int(input("Nhập n từ bàn phím: ")) step = 2 sum = 0 for i in range (start, stop, step): sum = sum + i print("Tổng các số tự nhiên lẻ nhỏ hơn n là: ", sum) ``` ## Excercise: ``` # # Lệnh xuất dữ liệu: # print ("Nguyen Hoang Anh",end="-") # print (3 + 6) # print("Ket qua cua phep toan ", 3+6) # # Sử dụng biến trong chương trình: # # Biến là một đại lượng giá trị có thể thay đổi trong chương trình # # Mỗi biến có một cái tên xác định # # Tên biến được đặt theo quy tắc: # ## 1 - Tên viết liền , không dấu, không khoảng trắng # ## 2 - Không chứa ký tự đặc biệt: !@#$%^%^&^&* ngoại trừ dầu _ # ## 3 - Không bắt đầu bằng ký tự số. # ## Ví dụ tên biến: # ## Hợp lệ: abc , Abc , gia_tri_bien, bien1, bien2, bien3 # ## Không Hợp lệ: 1abc , A@bc , gia tri bien, 1bien1, 2bien 2, 3bien 3 # a = 5 # Phép gán giá trị cho biến tên là a # print("Gia tri cua a = ",a) # a = a + 7 # Thay đổi giá trị của biến # print("Gia tri cua a = ",a) # a += 7 # a = a + 7 = 12 + 7 # print("Gia tri cua a = ",a) # # Mô hình lập trình tuần tự: # ## Lệnh nào viết trước sẽ được thực hiện trước # ## Lệnh thực hiện sau sẽ sử dụng giá trị của biến bị thay đổi (nếu có) từ các lệnh trên nó # a = 17 # b = 5 # c = a / b # Phép chia lấy giá trị # d = a // b # phép chia lấy phần nguyên # e = a % b # Phép chia lấy phần dư # print(a,"+",b,"=", c) # print(a,"-",b,"=", d) # Bài tập 1: # Tạo ra ba biến a, b, c # Gán gia trị bất kỳ cho các biến # Viết lệnh in ra kết quả các phép toán sau: ## a + b - c ## (a+b) // c ## (a*b)*(a-c) ## a**b # ## Giá trị kiểu số: # a = 123 # --> được phép tham gia vào các phép toán số học # ## Giá trị kiểu xâu ký tự: # a = "123" # --> KHÔNG được phép tham gia vào các phép toán số học # b = "Nguyen hoang anh" # ## Input cho chương trình # a=int(input()) # Cho phép người dùng nhập giá trị bất kỳ theo nhu cầu # b=int(input()) # Mọi thông tin người dùng nhập vào từ input được hiểu là dạng XÂU KÝ TỰ --> không phải là số # c=int(input()) # thực hiện ép kiểu dữ liệu từ xâu --> số nguyên để có thể được phép tham gia phép toán. Quy trình : "123" --> 123 # ## Các phép toán bên dưới phải là số mới thực hiện được # d=a+b-c # e=(a+b)//c # f=(a*b)*(a-c) # g=a**b # print(a,"+",b,"-",c,"=",d) # print("(",a,"+",b,")//",c,"=",e) # print("(",a,"*",b,") *(",a,"-",c,")=",f) # print(a,"**",b,"=",g) # Bài tập 2: # Viết chương trình nhập giá tr số nguyênị cho ba biến a,b,c # Viết lệnh in ra kết quả các phép toán sau: ## a + b - c ## (a+b) // c ## (a*b)*(a-c) ## a**(b-c) # a = int(input("Nhập giá trị a vào đây: ")); # b = int(input("Nhập giá trị b vào đây: ")); # c = int(input("Nhập giá trị c vào đây: ")); ## Chương trình sẽ có lỗi nếu c = 0==> cần có biện pháp để bắt lỗi và xử lý lỗi==> thông báo cho người dùng biết là họ nhập dữ liệu lỗi ## Mô hình lập trình rẽ nhánh: # # Nếu c # 0 thì cho phép thực hiện phép chia: # if (c!=0): # d = (a+b)//c # print("Giá trị của phép toán là: ", d) # else: # print("Giá trị của c không thực hiện được phép chia") # #Ngược lại: thông báo lỗi ## Lỗi cú pháp: Là lỗi do gõ sai lệnh, sai cú pháp lệnh ## Lỗi chạy chương trình: Xảy ra do giá trị nhập vào làm cho phép toán bị lỗi. ## B1: Lấy giờ hiện tại ## B2: So sánh với giờ đang đặt báo thức ## B3: Nếu tới giờ thì reng chuông báo thức Ngược lại thì im và chờ tiếp # curTime = input("Nhập giờ hiện tại(HH:MM): ") # alarmTime = input("Nhập giờ muốn báo thức(HH:MM): ") # if(curTime>=alarmTime): # print("Báo thức dậy rồi nè") # else: # print("Ngủ tiếp đi") ## Bài tập 3: ## Nhập vào biến a kiểu số nguyên ## XUất ra thông báo cho biết a là số odd/even ## Ví dụ: Nhập vào a = 4 ==> even ; ## Chia hết xảy ra khi nào: ## a // b ==> là phép toán lấy phần nguyên ## a % b ==> là phép toán lấy phần dư trong phép chia ## a chia hết cho b <==> a % b == 0 ## even: khi a chia hết cho 2 ## odd khi a không chia hết cho 2 a = int(input("Nhập số a: ")) if (a%2==0): print("even") else: print("odd") ``` ## Bài tập ngày 25/5/2024 ### 1: Viết chương trình Python nhập vào độ dài 2 cạnh của hình chữ nhật, tính chu vi và diện tích hình chữ nhật đó. * **Bonus thử thách**: Theo lý thuyết, chiều dài a $\ge$ chiều rộng b, nên trong trường hợp người dùng nhập sai quy tắc thì yêu cầu người ta nhập lại CHO TỚI KHI NHẬP ĐÚNG THÌ CHO DỪNG LẠI VÀ XUẤT KẾT QUẢ. ### 2 Viết chương trình Python nhập vào bán kính của hình tròn, tính chu vi và diện tích hình tròn đó. ### 3 Viết chương trình nhập ba số nguyên dương a, b, h từ bàn phím lần lượt là độ dài đáy lớn, đáy bé và chiều cao của một hình thang. Tính diện tích hình thang và in kết quả. ### 4 Viết chương trình nhập hai số nguyên dương a, b từ bàn phím lần lượt là độ dài và chiều rộng của một hình chữ nhật. Vẽ hình chữ nhật bằng các dấu * như ví dụ dưới đây khi nhập a = 5, b = 4 ``` ***** ***** ***** ***** ``` ```python= a = int(input()) b = int(input()) # Cấu trúc lặp : Lặp lại một số thao tác với số lần xác định ## Cấu trúc của for i in range(start, stop): ### Lặp lại với giá trị của i trong đoạn từ i = start cho tới i = stop - 1 for i in range(0,b): for j in range(a): # ## Cấu trúc của for i in range(stop): chạy i = 0 cho tới i= stop - 1 print('*', end='') # end='' là ký tự trống không có gì print() ``` ### 5: Viết chương trình Python nhập vào ba số a,b,c bất kì. Kiểm tra xem 3 số đó có thể là độ dài ba cạnh tam giác hay không, nếu không thì in ra màn hình ‘ Không tạo thành tam giác’. Ngược lại, tính chu vi và diện tích tam giác đó. * Công thức tính diện tích tam giác: https://vi.wikipedia.org/wiki/C%C3%B4ng_th%E1%BB%A9c_Heron ### 6: Viết chương trình tính tổng các số từ 1 đến n, với n là số nguyên dương nhập vào từ bàn phím. * Để tính tổng các số từ 1 đến n, chúng ta có thể sử dụng vòng lặp for để lặp từ 1 đến n, sau đó cộng dồn các số lại. ```python= a = int(input()) # Nhận giá trị từ người dùng # Cấu trúc lặp : Lặp lại một số thao tác với số lần xác định ## Cấu trúc của for i in range(start, stop): ### Lặp lại với giá trị của i trong đoạn từ i = start cho tới i = stop - 1 # solution 1 sum = 0 for i in range(0,a+1): sum = sum + i print(sum) # solution 2 sum = 0 for i in range(0,a): # i = 0+1, 1+1, 2+1, 3+1, ..., a-1+1 => (a) sum = sum + i + 1 print(sum) # solution 3: Math sum = ...... # bài tập suy nghĩ thêm ``` ### 7: Viết chương trình tính tổng của bình phương các số lẻ từ 1 đến n, với n là số nguyên dương nhập vào từ bàn phím. * Để tính tổng của bình phương các số lẻ từ 1 đến n, chúng ta có thể sử dụng vòng lặp for để lặp từ 1 đến n và kiểm tra từng số có phải là số lẻ hay không. Nếu là số lẻ thì ta tính bình phương của nó và cộng vào tổng. ```python= n = int(input()) # solution 1 sum = 0 for i in range(n+1): if(i%2==1): sum = sum + i**2 print(sum) # solution 2 sum = 0 # for i in range(start, stop, step) với ý nghĩa: Cho i chạy từ i = start tới i = stop - 1 , mỗi lần tăng step đơn vị for i in range(1,n+1,2): # 1 3 5 7 9... sum = sum + i**2 print(sum) ``` ### 8: Viết chương trình tính tổng các số từ a đến b. # 2024/06/01 ```python= # # ôn tập vòng lặp trong Python: # print("Lenh in thong thuong: ") # print(1) # print(2) # print(3) # print(4) # print(5) # # Vòng lặp for i in range(start, stop): i = start cho tới i = stop - 1 # print("Lenh in bang vong lap:") # for i in range(1,6): # print(i) # # viết lệnh in các số chẵn từ 1 cho tới 100: # # Cách 1: # for i in range(1,101): # mỗi lần i tăng 1 đơn vị # if(i%2==0): # print(i) # #Cách 2: # for i in range(2,101,2): # mỗi lần i tăng 2 đơn vị # print(i) # viết lệnh in các số là bội của 3 từ 1 cho tới 100: # Phương án 1: # print("PA1:") # for i in range(0,100,3): # print(i) # # Phương án 2: # print("PA2:") # for i in range(1,100+1): # if(i%3==0): # print(i) # viết lệnh đếm số lượng các số là bội của 3 từ 1 cho tới 100: # dem = số lượng các số thỏa yêu cầu bài toán # dem = 0 # Khởi tạo biến chứa giá trị kết quả # for i in range(0,100,3): # # Thay vì in ra giá trị của i bằng lệnh print(i) # # Tăng giá trị của biến dem lên 1 don vị: # dem = dem + 1 # print(dem) # giá trị biến đếm sau khi thực hiện vòng lặp là số lượng các số thỏa yêu cầu # Nhập vào giá trị N (YC 1) và in ra các số là bội của 7 trong đoạn từ 0 cho tới N (YC 2): # N = int(input("Moi nhap gia tri N: ")) #(YC 1) # for i in range(0,N+1): # (YC 2) # if(i%7==0): # print(i) # Nhập vào giá trị N (YC 1) và in số lượng các số là bội của 13 trong đoạn từ 0 cho tới N (YC 2): # 1: # N=int(input("Moi nhap gia tri N: ")) # dem=00 # for i in range (0,N+1): # if(i%13==0): # Kiểm tra i có chia hết cho 13? # dem=dem+1 # print(i) # # 2: Sử dụng step: # N=int(input("Moi nhap gia tri N: ")) # dem=00 # for i in range (0,N+1, 13): # dem=dem+1 # print(i) # Viết chương trình nhập vào giá trị N và in ra hình vuông gồm các dấu * như mẫu sau: # N = 5 # * * * * * # * * * * * # * * * * * # * * * * * # * * * * * # N=int(input("Moi nhap gia tri N: ")) # for i in range(0,N): # print('* '*N) # string * number = Ghép liên tiếp string thành nhiều lần # Viết chương trình nhập vào giá trị N và in ra hình Tam giác gồm các dấu * như mẫu sau: # N = 5 # * # hàng số 1: in ra 1 dấu * # * * # hàng số 2: in ra 2 dấu * # * * * # hàng số i : in ra i dấu * # * * * * # * * * * * # N=int(input("Moi nhap gia tri N: ")) # for i in range(1,N+1): # print('* '*i) # Viết chương trình nhập vào giá trị N và in ra hình Tam giác gồm các dấu * như mẫu sau: # N = 5 # * # * * # * * * # * * * * # * * * * * # * * * * * * # Có N+1 dấu * # * * * * * # * * * * # * * * # * * # * # N=int(input("Moi nhap gia tri N: ")) # for i in range(1,N+1): # In nửa trên # print('* '*i) # print('* '*(N+1)) # In hàng ở giữa # for i in range(N,0,-1): # In nửa dưới # print('* '*i) # Viết chương trình nhập vào giá trị N và in ra hình Tam giác * như mẫu sau: # N = 5 # 1 # 1 2 # 1 2 3 # hàng thứ i sẽ in các số từ 1 cho tới i: # 1 2 3 4 # 1 2 3 4 5 # N=int(input("Moi nhap gia tri N: ")) # for i in range(1,N+1): # kiểm soát số hàng in # for j in range(1,i+1): # kiểm soát các giá trị in trên mỗi hàng # print(j,end = ' ') # # lệnh in với ký tự end = ' ' (khoảng trắng) # print() # kiểm soát việc xuống dòng sau cho mỗi hàng # Viết chương trình nhập vào giá trị N và in ra hình Tam giác * như mẫu sau: # N = 5 # 1 # 1 2 # 1 2 3 # 1 2 3 4 # 1 2 3 4 5 # 1 2 3 4 5 6 # 1 2 3 4 5 # 1 2 3 4 # 1 2 3 # 1 2 # 1 N=int(input("Moi nhap gia tri N: ")) for i in range(1,N+1): # kiểm soát số hàng in for j in range(1,i+1): # kiểm soát các giá trị in trên mỗi hàng print(j,end = ' ') # lệnh in với ký tự end = ' ' (khoảng trắng) print() # kiểm soát việc xuống dòng sau cho mỗi hàng for i in range(N+1,0,-1): # kiểm soát số hàng in for j in range(1,i+1): # kiểm soát các giá trị in trên mỗi hàng print(j,end = ' ') # lệnh in với ký tự end = ' ' (khoảng trắng) print() # kiểm soát việc xuống dòng sau cho mỗi hàng ``` # Hàm trong Python Là một đoạn chương trình dùng để xử lý bài toán nhỏ trong bài toán lớn, dùng để thực hiện một số thao tác mà trong chương trình có thể sử dụng nhiều lần ## Định nghĩa hàm: ```python= def tenham (<danh sách tham số>): # Phần lệnh thực hiện bên trong hàm return giá trị mong muốn ``` ## Viết chương trình in ra các số là bội của 3 và 5 trong đoạn từ 1 cho tới 10^4 ## Yêu cầu thiết kế hàm: có tên check(number): ```python= def check(number): if(number%3==0)and(number%5==0): print(number) for i in range(1,10000+1): check(i) # kiểm tra giá trị i ``` ## Viết chương trình in ra các số chẵn trong đoạn từ 1 cho tới 10^4 yêu cầu thiết kế hàm: def even(number) có dùng return: ```python def even(number): if(number%2==0): return True else: return False def even2(number): return (number%2==0) # number = 3 ==> number%2==0 ==> 1 == 0? ==> False # number = 4 ==> number%2==0 ==> 0 == 0? ==> True for i in range (1,10000+1): if ((even(i)==True)): print(i) ``` # Bài tập ngày 15/6/2024 ## Task 1: Viết chương trình tìm tất cả các 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. ## Task 2: Viết một method (function) tính giá trị bình phương của một số. ## Task 3: Viết chương trình tính tổng của các chữ số của môt số nguyên n trong Python. Số nguyên dương n được nhập từ bàn phím. Với n = 1234, tổng các chữ số: 1 + 2 + 3 + 4 = 10 # Bài tập 22/6/2024 ## Task 1: ![image](https://hackmd.io/_uploads/HJKyLWEIA.png) ## Task 2: ![image](https://hackmd.io/_uploads/B1E8UZNUR.png) ## Task 3: ![image](https://hackmd.io/_uploads/SkItLWNUA.png) ## Task 4: ![image](https://hackmd.io/_uploads/SkHTdWN8R.png) ## Task 5: ![image](https://hackmd.io/_uploads/ByzQjZELC.png) ## Task 6: ![image](https://hackmd.io/_uploads/HJWeaZNI0.png) # Bài tập 06/7/2024 ## Task 1: ![image](https://hackmd.io/_uploads/rkC55OUD0.png) ## Task 2: Viết chương trình Python theo yêu cầu sau: - Yêu cầu người dùng nhập vào số nguyên N. - In ra bảng cửu chương tương ứng với số nguyên N. Ví dụ: Input: N = 5 Output: 5 x 1 = 5 5 x 2 = 10 5 x 3 = 15 5 x 4 = 20 .... 5 x 10 = 50 ## Task 3: Viết chương trình Python theo yêu cầu sau: - Yêu cầu người dùng nhập vào số nguyên và M. - In ra bảng nhân tương ứng với số nguyên N và M. Ví dụ: Input: N = 5 Output: 5 x 1 = 5 5 x 2 = 10 5 x 3 = 15 5 x 4 = 20 .... 5 x M = ... # Các bài tập ôn tập yêu cầu sử dụng hàm ## Task 4: Viết chương trình nhập vào số nguyên dương N. In ra danh sách các ước số chẵn của số N. Ví dụ: Input: N = 12 Output: 2 4 6 12 ## Task 5: Viết chương trình nhập vào hai số nguyên dương N, M. In ra danh sách các ước số chung của N và M. Ví dụ: Input: N = 12 ; M = 20 Output: 1 2 4 ## Task 6: Viết chương trình nhập vào hai số nguyên dương N, M. In ra ước số chung lớn nhất của N và M. Ví dụ: Input: N = 12 ; M = 20 Output: 4 ## Task 7: Viết chương trình nhập vào hai số nguyên dương N, M. In ra bội số chung nhỏ nhất của N và M. Ví dụ: Input: N = 12 ; M = 20 Output: 60 ## Task 8: Viết chương trình nhập vào số nguyên dương N. Hãy cho biết N có phải là số nguyên tố hay không. Số nguyên tố là số chỉ có đúng 2 ước số là 1 và chính nó. Ví dụ: Input: N = 12 Output: 12 không là số nguyên tố