Nội dung text Ebook.100.bai.tap.lap.trinh.python-tieng.viet.pdf
Tài liệu được chia sẻ tại: http://nhasachtinhoc.blogspot.com Bài 01: Câu hỏi: 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. 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 có thể tính giai thừa của một số 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ì kết quả đầu ra phải là 40320. Gợi ý: Trong trường hợp dữ liệu đầu vào được cung cấp, 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ư là số nguyên từ 1 đến n (bao gồm 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 yêu cầu nhập số nguyên n. Code mẫu: n=int(input("Nhập vào một số:")) 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 chấp nhận một chuỗi số, phân tách bằng dấu phẩy từ giao diện điều khiển, tạo ra một danh sách và một tuple chứa mọi số. Ví dụ: Đầu vào được cung cấp 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 yêu cầu nhập vào các giá trị sau đó dùng quy tắc chuyển đổi kiểu dữ liệu để hoàn tất.
Tài liệu được chia sẻ tại: http://nhasachtinhoc.blogspot.com Code mẫu: values=input("Nhập vào các 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 nhất 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. printString: in chuỗi vừa nhập sang chữ hoa. Thêm vào các hàm hiểm tra đơn giả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.COM Gợi ý: Sử dụng __init__ để xây dựng các tham số. Code mẫu: class InputOutString(object): def __init__(self): self.s = "" def getString(self): self.s = input("Nhập chuỗi:") # Code by Quantrimang.com 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ố. Gợi ý: Sử dụng toán tử **. Code mẫu: x=int(input("Nhập một số:")) #nhập số cần tính bình phương từ giao diện def square(num): #định nghĩa bình phương của một số return num ** 2 # Code by Quantrimang.com print (square(2)) #in bình phương của 2 print (square(3)) #in bình phương của 3 print (square(x)) #in bình phương của x Vì đề bài không yêu cầu cụ thể 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 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
Tài liệu được chia sẻ tại: http://nhasachtinhoc.blogspot.com chương trình để in tài liệu về một số 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__) # Code by Quantrimang.com 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ố instance Gợi ý: Khi định nghĩa tham số instance, cần thêm nó vào __init__ Bạn có thể khởi tạo một đối tượng với tham số bắt đầu hoặc thiết lập giá trị sau đó. Code mẫu: class Person: # Định nghĩa lớp "name" name = "Person" # Code by Quantrimang.com def __init__(self, name = None): # self.name là biến instance 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 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, các giá trị của D được phân cách 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à một số 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.
Tài liệu được chia sẻ tại: http://nhasachtinhoc.blogspot.com Trong trường hợp dữ liệu đầu vào được cung cấp cho câu hỏi, nó được giả định là đầu vào do người dùng nhập từ giao diện điều khiển. Code mẫu: #!/usr/bin/env python 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))))) # Code by Quantrimang.com 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ị phần tử 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 đ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)] # Code by Quantrimang.com 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 chấp nhận 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 chữ cái, phân tách nhau bằng dấu phẩy. Giả sử đầu 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 dữ liệu đầu vào được nhập vào chương trình nó nên được giả định là dữ liệu được người dùng nhập vào từ giao diện đ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: