[ATBS2nd]Chương 1 - Python cơ bản - Phần 6

Chào các bạn,
Chúng ta tiếp tục với những kiến thức cơ bản trong luồng điều khiển.
Những vòng làm for và hàm range()
Vòng lặp while tiếp tục lặp trong khi điều kiện của nó là True (đó là lý do cho tên của nó), nhưng nếu bạn muốn thực thi một khối mã chỉ một số lần nhất định thì sao? Bạn có thể làm điều này với một câu lệnh for và hàm Range ().
Trong mã, một câu lệnh for trông giống for i in range(5): và bao gồm các phần sau:

  • Từ khóa for

  • Một tên biến

  • Từ khóa in

  • Gọi hàm range() có thể có đến 3 đối số.

  • Một dấu hai chấm :

  • Hàng tiếp theo lùi vào 4 khoảng trống gọi là mệnh đề for.
    Bây giờ bạn tạo ra fiveTimes.py chứa đoạn code sau đây.

print('My name is')
for i in range(5):
    print('Jimmy Five Times (' + str(i) + ')')

Mã trong mệnh đề for được chạy năm lần. Lần đầu tiên được chạy, biến i được đặt thành 0. Cuộc gọi print () trong mệnh đề sẽ in Jimmy Five Times (0). Sau khi Python hoàn thành một lần lặp thông qua tất cả các mã bên trong mệnh đề for, việc thực thi quay trở lại đỉnh của vòng lặp và câu lệnh for tăng i lên một. Đây là lý do tại sao range(5) dẫn đến năm lần lặp qua mệnh đề, với i được đặt thành 0, rồi 1, rồi 2, rồi 3, và 4. Biến i sẽ đi lên, nhưng sẽ không bao gồm, số nguyên truyền vào range (). Hình dưới đây hiển thị sơ đồ cho chương trình fiveTimes.py.


Khi bạn chạy chương trình này, nó sẽ in Jimmy Five Times theo sau là giá trị của i năm lần trước khi rời khỏi vòng lặp for.

My name is
Jimmy Five Times (0)
Jimmy Five Times (1)
Jimmy Five Times (2)
Jimmy Five Times (3)
Jimmy Five Times (4)

Hãy xem một ví dụ khác của vòng lặp for, hãy xem xét câu chuyện này về nhà toán học Carl Friedrich Gauss. Khi Gauss còn là một cậu bé, một giáo viên muốn cho cả lớp một số công việc bận rộn. Giáo viên bảo họ cộng tất cả các số từ 0 đến 100. Gauss đã đưa ra một mẹo thông minh để tìm ra câu trả lời trong vài giây, nhưng bạn có thể viết chương trình Python với vòng lặp for để thực hiện phép tính này cho bạn.

total = 0
for num in range(101):
    total = total + num
print(total)

Kết quả phải là 5.050. Khi chương trình lần đầu tiên bắt đầu, biến total được đặt thành 0. Vòng lặp for sau đó thực hiện total = total + num 100 lần. Vào thời điểm vòng lặp đã hoàn thành tất cả 100 lần lặp của nó, mọi số nguyên từ 0 đến 100 sẽ được thêm vào tổng số. Tại thời điểm này, tổng số được in ra màn hình. Ngay cả trên các máy tính chậm nhất, chương trình này chỉ mất chưa đến một giây để hoàn thành.
(Gauss đã tìm ra cách giải quyết vấn đề trong vài giây. Có 50 cặp số cộng với 101: 1 + 100, 2 + 99, 3 + 98, v.v., cho đến 50 + 51. Kể từ 50 × 101 là 5.050, tổng của tất cả các số từ 0 đến 100 là 5.050. Đứa trẻ thông minh!)
Sử dụng vòng lặp while cho chương trình trên
Chúng ta hoàn toàn có thể sử dụng vòng lặp while để viết lại chương trình fiveTimes.py như sau.

print('My name is')
i = 0
while i < 5:
    print('Jimmy Five Times (' + str(i) + ')')
    i = i + 1

Chương trình này sẽ chạy tương tự như khi được viết bằng for và range().
Điểm bắt đầu, điểm cuối, bước trong hàm range()
Một số hàm có thể được gọi với nhiều đối số được phân tách bằng dấu phẩy và phạm vi () là một trong số đó. Điều này cho phép bạn thay đổi số nguyên được truyền sang range() để theo bất kỳ chuỗi số nguyên nào, bao gồm bắt đầu từ một số khác không.

for i in range(12, 16):
    print(i)

Đối số đầu tiên sẽ là nơi bắt đầu của biến for và đối số thứ hai sẽ lên đến, nhưng không bao gồm.

12
13
14
15

Hàm range() cũng có thể được gọi với ba đối số. Hai đối số đầu tiên sẽ là giá trị bắt đầu và dừng và thứ ba sẽ là đối số bước. Bước là số lượng mà biến được tăng lên sau mỗi lần lặp.

for i in range(0, 10, 2):
    print(i)

Vì vậy, gọi range(0, 10, 2) sẽ được tính từ 0 đến 8 theo các khoảng của 2.

0
2
4
6
8

Hàm range() linh hoạt trong chuỗi số mà nó tạo ra cho các vòng lặp. Ví dụ: (tôi không bao giờ xin lỗi vì chơi chữ của mình), bạn thậm chí có thể sử dụng số âm cho đối số bước để làm cho vòng lặp for đếm ngược thay vì đếm xuôi.

for i in range(5, -1, -1):
    print(i)

Vòng lặp for sẽ hiển thị như sau

5
4
3
2
1
0

Vòng lặp for i in range(5, -1, -1) phải hiển thị từ 5 đến 0.
importing modules
Tất cả các chương trình Python có thể gọi một tập hợp các hàm cơ bản được gọi là các hàm dựng sẵn(built-in functions), bao gồm các hàm print(), input() và len() mà bạn đã thấy trước đó. Python cũng đi kèm với một tập hợp các mô-đun gọi là thư viện chuẩn. Mỗi mô-đun là một chương trình Python chứa một nhóm các hàm liên quan có thể được nhúng trong các chương trình của bạn. Ví dụ, mô-đun math có các hàm liên quan đến toán học, mô-đun random có các hàm liên quan đến số ngẫu nhiên, v.v.
Trước khi bạn có thể sử dụng các chức năng trong một mô-đun, bạn phải nhập mô-đun bằng một câu lệnh import. Trong mã, một câu lệnh import bao gồm:

  • Từ khóa import

  • Tên của module

  • Tùy chọn, có thể thêm nhiều tên module bằng cách cách nhau một dấu phẩy.
    Khi bạn nhập một mô-đun, bạn có thể sử dụng tất cả các chức năng tuyệt vời của mô-đun đó. Hãy để thử một lần với mô-đun random, nó sẽ cho phép chúng ta truy cập vào hàm random.randint ().
    Nhập mã này vào trình chỉnh sửa tệp và lưu nó dưới dạng printRandom.py:

import random
for i in range(5):
    print(random.randint(1, 10))

Khi bạn chạy chương trình trên nó sẽ in ra tương tự(không chính xác) như thế này

4
1
8
4
1

Lệnh gọi hàm random.randint () ước tính giá trị nguyên ngẫu nhiên giữa hai số nguyên mà bạn truyền vào. Vì randint () nằm trong mô-đun random, trước tiên bạn phải nhập random. ở phía trước tên hàm để báo cho Python tìm hàm này bên trong mô-đun random.
Dưới đây, một ví dụ về một import nhập bốn khác nhau mô-đun:
`

import random, sys, os, math

Bây giờ chúng ta có thể sử dụng bất kỳ chức năng nào trong bốn mô-đun này. Chúng ta sẽ tìm hiểu thêm về chúng sau này trong cuốn sách.
Đừng đặt tên file .py trùng với tên module
Khi bạn lưu tập lệnh Python của mình dưới dạng .py file, chú ý không đặt cho chúng một tên được sử dụng bởi một trong các mô-đun Python, chẳng hạn như random.py, sys.py, os.py hoặc math.py.
Nếu bạn vô tình đặt tên cho một trong các chương trình của mình, giả sử là random.py và sử dụng câu lệnh import random, trong một chương trình khác, chương trình của bạn sẽ nhập tệp random của bạn thay vì mô-đun random của Python. Điều này có thể dẫn đến các lỗi như AttributionError: mô-đun ‘random’ không có thuộc tính ‘randint’, vì random.py của bạn không có các chức năng mà mô-đun random thực sự có.
Đừng sử dụng tên của bất kỳ hàm Python dựng sẵn nào, chẳng hạn như print() hoặc input().
Những vấn đề như thế này là không phổ biến, nhưng có thể khó giải quyết. Khi bạn có được nhiều kinh nghiệm lập trình hơn, bạn sẽ nhận thức rõ hơn về các tên tiêu chuẩn được sử dụng bởi các mô-đun và các hàm trong Python và sẽ ít gặp phải các vấn đề này.
Các lệnh from import
Một hình thức thay thế của câu lệnh import bao gồm từ khóa, theo sau là tên mô-đun, từ khóa import và dấu sao (*); ví dụ: from random import *
Với dạng câu lệnh nhập này, các lệnh gọi đến các hàm random sẽ không cần random tiếp đầu ngữ. Tuy nhiên, việc sử dụng tên đầy đủ làm cho mã dễ đọc hơn, vì vậy tốt hơn là sử dụng hình thức import random của câu lệnh.
Kết thúc sớm chương trình với hàm sys.exit()
Khái niệm điều khiển luồng cuối cùng để trình bày là làm thế nào để chấm dứt chương trình sớm.
Các chương trình luôn chấm dứt nếu việc thực hiện chương trình đạt đến cuối hướng dẫn. Tuy nhiên, bạn có thể khiến chương trình chấm dứt hoặc thoát ra trước lệnh cuối cùng bằng cách gọi hàm sys.exit (). Vì chức năng này nằm trong mô-đun sys, bạn phải import sys trước khi chương trình của bạn có thể sử dụng nó.

import sys
while True:
    print('Type exit to exit.')
    response = input()
    if response == 'exit':
        sys.exit()
    print('You typed ' + response + '.')

Chương trình này có một vòng lặp vô hạn không có câu lệnh break bên trong. Cách duy nhất mà chương trình này sẽ kết thúc là nếu việc thực thi đạt đến lệnh gọi sys.exit (). Khi phản hồi bằng với thoát, dòng chứa lệnh gọi sys.exit() được thực thi. Vì biến trả lời được đặt bởi hàm input (), người dùng phải nhập exit để dừng chương trình.
Người dịch: Hungdh

1 Like