Skip to document

luyện tập bài tập về python

bài tập luyện thêm, nâng cao kinh nghiệm
Course

Tin học cơ sở (INT19)

398 Documents
Students shared 398 documents in this course
Academic year: 2015/2016

Comments

Please sign in or register to post comments.

Preview text

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(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.

Code mẫu:

values=input("Nhập vào các giá trị:")

l=values(",")

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 thì đầu ra phải là: QUANTRIMANG

Gợi ý:

 Sử dụng init để xây dựng các tham số.

Code mẫu:

class InputOutString(object):

def init(self):

self = ""

def getString(self):

self = input("Nhập chuỗi:")

# Code by Quantrimang

def printString(self):

print (self.s())

strObj = InputOutString()

strObj()

strObj()

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

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

 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(str(int(round(math( 2 cfloat(d)/h)))))

# Code by Quantrimang

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(',')]

rowNum=dimensions[ 0 ]

colNum=dimensions[ 1 ]

multilist = [[ 0 for col in range(colNum)] for row in range(rowNum)]

# Code by Quantrimang

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()

print (','.join(items))

Bài 12:

Câu hỏi:

Viết một chương trình chấp nhận chuỗi là các dòng được nhập vào, chuyển các

dòng này thành chữ in hoa và in ra màn hình. Giả sử đầu 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 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:

lines = []

while True:

s = input()

if s:

lines(s())

else:

break;

# Bài Python 12, Code by Quantrimang

for sentence in lines:

print (sentence)

Bài 13:

Câu hỏi:

Viết một chương trình chấp nhận đầu vào là một chuỗi các từ tách biệt bởi khoảng

trắng, loại bỏ các từ trùng lặp, sắp xếp theo thứ tự bảng chữ cái, rồi in chúng.

Giả sử đầu vào là: hello world and practice makes perfect and hello world again

Thì đầu ra là: again and hello makes perfect practice 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.

 Sử dụng set để loại bỏ dữ liệu trùng lặp tự động và dùng sorted() để sắp xếp dữ

liệu.

Code mẫu:

s = input("Nhập chuỗi của bạn: ")

words = [word for word in s(" ")]

print (" ".join(sorted(list(set(words)))))

Bài 14:

Câu hỏi:

Viết một chương trình chấp nhận đầu vào là chuỗi các 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 các số

chia hết cho 5 thành dãy phân tách bởi dấu phẩy.

Ví dụ đầu vào là: 0100,0011,1010,

Đầu ra sẽ là: 1010

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.

Viết một chương trình chấp nhận đầu vào là một câu, đếm chữ hoa, chữ thường.

Giả sử đầu vào là: Quản Trị Mạng

Thì đầu ra là:

Chữ hoa: 3

Chữ thường: 8

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:

s = input("Nhập câu của bạn: ")

d={"UPPER CASE": 0 , "LOWER CASE": 0 }

Code by Quantrimang

for c in s:

if c():

d["UPPER CASE"]+= 1

elif c():

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à: 1234

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:

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) )

Bài tập Python 18, Code by Quantrimang

print ("Tổng cần tính là: ",n1+n2+n3+n4)

Bài 19:

Câu hỏi:

Sử dụng một danh sách để lọc các số lẻ từ danh sách được người dùng nhập vào.

Giả sử đầu vào là: 1,2,3,4,5,6,7,8,9 thì đầu ra phải là: 1,3,5,7,

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:

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(",") 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 tài khoản ngân hàng dựa trên nhật ký

giao dịch được nhập vào từ giao diện điều khiển.

Đị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ử đầu vào được cung cấp là:

D 300

D 300

W 200

D 100

Thì đầu ra sẽ là:

500

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:

import sys

netAmount = 0

Bài tập Python 20, Code by Quantrimang

while True:

s = input("Nhập nhật ký giao dịch: ")

if not s:

break

values = s(" ")

operation = values[ 0 ]

amount = int(values[ 1 ])

if operation=="D":

netAmount+=amount

elif operation=="W":

netAmount-=amount

else:

pass

print (netAmount)

5. Bài tập Python level 3

Bài 21:

Câu hỏi:

Một website yêu cầu người dùng nhập tên người dùng và mật khẩu để đăng ký. Viết

chương trình để kiểm tra tính hợp lệ của mật khẩu mà người dùng nhập vào.

Các tiêu chí kiểm tra mật khẩu bao gồm:

Thì đầu ra sẽ là:

[('John', '20', '90'), ('Jony', '17', '91'), ('Jony', '17', '93'), ('Json', '21', '85'), ('Tom', '19',

'80')]

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.

Sử dụng itemgetter để chấp nhận nhiều key sắp xếp.

Code mẫu:

from operator import itemgetter, attrgetter

# Bài tập Python 22 Code by Quantrimang

l = []

while True:

s = input()

if not s:

break

l(tuple(s(",")))

print (sorted(l, key=itemgetter( 0 , 1 , 2 )))

Bài 23:

Câu hỏi:

Xác định một class với generator có thể lặp lại các số nằm trong khoảng 0 và n, và

chia hết cho 7.

Gợi ý:

Sử dụng yield.

Code mẫu:

def putNumbers(n):

i = 0

while i<n:

j=i

i=i+ 1

if j% 7 == 0 :

yield j

# Bài tập Python 23 Code by Quantrimang

for i in putNumbers ( 100 ):

print (i)

Bài 24:

Câu hỏi:

Một Robot di chuyển trong mặt phẳng bắt đầu từ điểm đầu tiên (0,0). Robot có thể di

chuyển theo hướng UP, DOWN, LEFT và RIGHT với những bước nhất định. Dấu di

chuyển của robot được đánh hiển thị như sau:

UP 5

DOWN 3

LEFT 3

RIGHT 3

Các con số sau phía sau hướng di chuyển chính là số bước đi. Hãy viết chương

trình để tính toán khoảng cách từ vị trí hiện tại đến vị trí đầu tiên, sau khi robot đã di

chuyển một quãng đường. Nếu khoảng cách là một số thập phân chỉ cần in só

nguyên gần nhất.

Ví dụ: Nếu tuple sau đây là input của chương trình:

UP 5

DOWN 3

LEFT 3

RIGHT 2

thì đầu ra sẽ là 2.

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:

import math

pos = [ 0 , 0 ]

while True:

s = input()

if not s:

break

movement = s(" ")

direction = movement[ 0 ]

steps = int(movement[ 1 ])

if direction=="UP":

pos[ 0 ]+=steps

elif direction=="DOWN":

pos[ 0 ]- =steps

elif direction=="LEFT":

pos[ 1 ]- =steps

elif direction=="RIGHT":

pos[ 1 ]+=steps

else:

pass

# Bài tập Python 24 Code by Quantrimang

print (int(round(math(pos[ 1 ]** 2 +pos[ 0 ]** 2 ))))

Bài 25:

Câu hỏi:

Viết chương trình tính tần suất các từ từ input. Output được xuất ra sau khi đã sắp

xếp theo bảng chữ cái.

Giả sử input là: New to Python or choosing between Python 2 and Python 3? Read

Python 2 or Python 3.

Thì output phải là:

2:

3.:

3?:

New:

Python:

Read:

and:

between:

choosing:

or:

to:

Định nghĩa hàm có thể nhận 2 chuỗi từ input và nối chúng sau đó in ra giao diện điều

khiển

Gợi ý:

Sử dụng + để nối các chuỗi.

Code mẫu:

def printValue(s1,s2):

print (s1+s2)

printValue("3","4") #Kết quả là 34

Bài 30:

Câu hỏi:

Định nghĩa một hàm có input là 2 chuỗi và in chuỗi có độ dài lớn hơn trong giao diện

điều khiển. Nếu 2 chuỗi có chiều dài như nhau thì in tất cả các chuỗi theo dòng.

Gợi ý:

Sử dụng hàm len() để lấy chiều dài của một chuỗi

Code mẫu:

def printValue(s1,s2):

# Bài tập Python 30 Code by Quantrimang

len1 = len(s1) len2 = len(s2) if len1>len2: print (s1) elif len2>len1: print (s2) else: print(s1)

print (s2)

printValue("one","three")

Bài 31:

Câu hỏi:

Định nghĩa hàm có thể chấp nhận input là số nguyên và in "Đây là một số chẵn" nếu

nó chẵn và in "Đây là một số lẻ" nếu là số lẻ.

Gợi ý:

Sử dụng toán tử % để kiểm tra xem số đó chẵn hay lẻ.

Code mẫu:

def checkValue(n):

if n% 2 == 0 :

print ("Đây là một số chẵn")

else:

print ("Đây là một số lẻ")

checkValue( 7 )

Bài 32:

Câu hỏi:

Định nghĩa một hàm có thể in dictionary chứa key là các số từ 1 đến 3 (bao gồm cả

hai số) và các giá trị bình phương của chúng.

Gợi ý:

 Sử dụng dict[key]=value để nhập mục vào dictionary.

 Sử dụng toán từ ** để lấy bình phương của một số.

Code mẫu:

def printDict(): d=dict() d[ 1 ]= 1 d[ 2 ]= 2 ** 2 d[ 3 ]= 3 ** 2 print (d)

Bài tập Python 32, Code by Quantrimang

printDict()

Chạy code trên bạn sẽ được kết quả là một dictionary như sau: {1: 1, 2: 4, 3: 9}. Nếu

chưa hiểu lắm về kiểu dữ liệu dictionary này bạn hãy đọc lại bài: Kiểu dữ liệu trong

Python: chuỗi, số, list, tuple, set và dictionary

Bài 33:

Câu hỏi:

Định nghĩa một hàm có thể in dictionary chứa các key là số từ 1 đến 20 (bao gồm cả

1 và 20) và các giá trị bình phương của chúng.

Gợi ý:

 Sử dụng dict[key]=value để nhập mục vào dictionary.

 Sử dụng toán từ ** để lấy bình phương của một số.

 Sử dujnng range() cho các vòng lặp.

Code mẫu:

def printDict():

d=dict()

for i in range( 1 , 21 ):

d[i]=i** 2

print (d)

Bài tập Python 33, Code by Quantrimang

printDict()

Kết quả khi chạy code trên là: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81,

10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225, 16: 256, 17: 289, 18: 324, 19:

361, 20: 400}

Bài 34 :

Câu hỏi:

Định nghĩa một hàm có thể tạo dictionary, chứa các key là số từ 1 đến 20 (bao gồm

cả 1 và 20) và các giá trị bình phương của chúng. Hàm chỉ in các giá trị mà thôi.

Gợi ý:

 Sử dụng dict[key]=value để nhập mục vào dictionary.

 Sử dụng toán từ ** để lấy bình phương của một số.

 Sử dụng range() cho các vòng lặp.

 Sử dụng keys() để di lặp các key trong dictionary. Có thể sử dụng item() để nhận

cặp key/value.

Code mẫu:

def printDict():

d=dict()

for i in range( 1 , 21 ):

d[i]=i** 2

for (k,v) in d():

print (v)

Bài tập Python 34, Code by Quantrimang

printDict()

Kết quả bạn nhận được khi chạy code trên là các giá trị bình phương của số từ 1

đến 20.

Bài 35:

Bài Python 37, Code by Quantrimang

printList()

Chạy code trên bạn sẽ nhận được một list chứa giá trị bình phương của các số từ 1

đến 5.

Bài 38:

Câu hỏi:

Định nghĩa một hàm có thể tạo ra list chứa các giá trị bình phương của các số từ 1

đến 20 (bao gồm cả 1 và 20), rồi in 5 mục cuối cùng trong list.

Gợi ý:

Tương tự bài 37.

Code mẫu:

def printList(): li=list() for i in range( 1 , 21 ): li(i** 2 )

print li[- 5 :]

Bài Python 38, Code by Quantrimang

printList()

Khi chạy code trên bạn sẽ nhận được list chứa giá trị bình phương của 16, 17, 18,

19, 20.

Bài 39:

Câu hỏi:

Định nghĩa một hàm có thể tạo list chứa giá trị bình phương của các số từ 1 đến 20

(bao gồm cả 1 và 20). Sau đó in tất cả các giá trị của list, trừ 5 mục đầu tiên.

Gợi ý:

Tương tư bài 37, 38.

Code mẫu:

def printList(): li=list() for i in range( 1 , 21 ): li(i** 2 )

print (li[ 5 :])

printList()

Kết quả:

[ 36 , 49 , 64 , 81 , 100 , 121 , 144 , 169 , 196 , 225 , 256 , 289 , 324 , 361 , 400 ]

Bài 40:

Câu hỏi:

Định nghĩa 1 hàm có thể tạo và in một tuple chứa các giá trị bình phương của các số

từ 1 đến 20 (tính cả 1 và 20).

Gợi ý:

 Sử dụng toán tử ** để lấy giá trị bình phương.

 Sử dụng range() cho vòng lặp.

 Sử dụng list() để thêm giá trị vào list.

 Sử dụng tuple() để lấy giá tuple từ list.

Code mẫu:

def printTuple(): li=list()

for i in range( 1 , 21 ): li(i** 2 ) print (tuple(li))

printTuple()

Kết quả:

( 1 , 4 , 9 , 16 , 25 , 36 , 49 , 64 , 81 , 100 , 121 , 144 , 169 , 196 , 225 , 256 , 289 ,

324 , 361 , 400 )

Bài 41:

Câu hỏi:

Với tuple (1,2,3,4,5,6,7,8,9,10) cho trước, viết một chương trình in một nửa số giá trị

đầu tiên trong 1 dòng và 1 nửa số giá trị cuối trong 1 dòng.

Gợi ý:

Sử dụng [n1:n2] để lấy một phần từ tuple.

Code mẫu:

tp=( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 )

tp1=tp[: 5 ]

tp2=tp[ 5 :]

print (tp1)

print (tp2)

Kết quả:

( 1 , 2 , 3 , 4 , 5 )

( 6 , 7 , 8 , 9 , 10 )

Bài 42:

Câu hỏi:

Viết một chương trình để tạo tuple khác, chứa các giá trị là số chẵn trong

tuple (1,2,3,4,5,6,7,8,9,10) cho trước.

Gợi ý:

 Sử dụng for để lặp tuple.

 Sử dụng tuple() để tạo tuple từ list.

Code mẫu:

tp=( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ) li=list() for i in tp: if tp[-i]% 2 == 0 :

li(tp[i])

tp2=tuple(li)

print (tp2)

Kết quả:

( 2 , 4 , 6 , 8 , 10 )

Bài 43:

Câu hỏi:

Viết một chương trình để tạo ra và in tuple chứa các số chẵn được lấy từ tuple

(1,2,3,4,5,6,7,8,9,10).

Gợi ý:

 Sử dụng "for" để lặp lại tuple.

 Sử dụng tuple() để tạo ra một tuple từ một danh sách.

Code mẫu:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

Bài 47:

Yêu cầu:

Viết chương trình Python dùng map() và filter() để tạo list chứa giá trị bình phương

của các số chẵn trong [1,2,3,4,5,6,7,8,9,10].

Gợi ý:

 Dùng map() để tạo list.

 Dùng filter() để lọc thành phần trong list.

 Dùng lambda để định nghĩa hàm chưa biết.

Code mẫu:

li = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]

squareOfEvenNumbers = list (map (lambda x: x ** 2 , filter (lambda x: x% 2

== 0 , li)))

print (squareOfEvenNumbers)

Kết quả:

[4, 16, 36, 64, 100]

Bài 48:

Yêu cầu:

Viết chương trình Python dùng filter() để tạo danh sách chứa các số chẵn trong đoạn

[1,20].

Gợi ý:

 Giống bài 45.

Code mẫu:

evenNumbers = list(filter (lambda x: x% 2 == 0 , range ( 1 , 21 )))

print (evenNumbers)

Kết quả:

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

Bài 49:

Yêu cầu:

Viết chương trình Python sử dụng map() để tạo list chứa giá trị bình phương của các

số trong đoạn [1,20].

Gợi ý:

 Giống bài 46.

Code mẫu:

squaredNumbers = list(map(lambda x: x ** 2 , range ( 1 , 21 )))

print (squaredNumbers)

Kết quả:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361,

400]

Bài 50:

Yêu cầu:

Định nghĩa một class có tên là Vietnam, với static method là printNationality.

Gợi ý:

Sử dụng @staticmethod để định nghĩa class với static method.

Code mẫu:

class Vietnam (object):

@staticmethod

def printNationality ():

print ("Vietnam")

# Bài Python 50, Code by Quantrimang

VietnamVodich = Vietnam () VietnamVodich ()

Vietnam ()

Bài 51:

Yêu cầu:

Định nghĩa một class tên Vietnam và class con của nó là Hanoi.

Gợi ý:

 Sử dụng Subclass(ParentClass) để định nghĩa một class con.

Code mẫu:

class Vietnam(object):

pass

class Hanoi(Vietnam):

pass

# Bài Python 51, Code by Quantrimang

VietnamVodich = Vietnam()

NguoiHanoi = Hanoi()

print (VietnamVodich)

print (NguoiHanoi)

Bài 52:

Yêu cầu:

Định nghĩa một class có tên là Circle có thể được xây dựng từ bán kính. Circle có

một method có thể tính diện tích.

Gợi ý:

Sử dụng def methodName(self) để định nghĩa method.

Code mẫu:

class Circle(object):

def init(self, r):

self = r

# Bài Python 52, Code by Quantrimang

def area(self):

return self** 2 *3.

aCircle = Circle( 2 )

print (aCircle())

Trong code trên, ta thực hiện khai báo lớp Circle, và method tính diện tích cho hình

tròn, với bán kính r=2, kết quả khi chạy code sẽ được là: 12.

Bài 53:

Yêu cầu:

Định nghĩa class có tên là Hinhchunhat được xây dựng bằng chiều dài và chiều rộng.

Class Hinhchunhat có method để tính diện tích.

Gợi ý:

 Như bài 52.

Code mẫu:

class Hinhchunhat(object):

def init(self, l, w):

self = l

Was this document helpful?

luyện tập bài tập về python

Course: Tin học cơ sở (INT19)

398 Documents
Students shared 398 documents in this course
Was this document helpful?
Tài liệu được chia s ti: 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.