Trong hàm range nếu không đặt khoảng cách giữa hai số thì Python sẽ hiểu mặc định nó bằng


25 tháng 2 ,2021

Hướng dẫn sử dụng hàm Range[] trong Python. Bạn sẽ học được cách tạo dãy số liên tiếp trong python bằng hàm Range[] trong bài học này.

Cú pháp hàm range[] trong Python

Hàm range[] trong Python có hai dạng cú pháp:

range[stop]range[start, stop[, step]]

Các tham số của hàm range[]

Hàm range[] có 3 tham số:

  • start: số nguyên bắt đầu, chuỗi sẽ bắt đầu với tham số này. Giá trị mặc định là 0.
  • stop: số nguyên kết thúc, chuỗi sẽ kết thúc với tham số này.
  • step: số nguyên xác định khoảng cách giữa các số bên trong chuỗi. Giá trị mặc định là 1.

Giá trị trả về từ range[]

1. Với kiểu cú pháp dạng range[stop]:

  • Trả về một chuỗi bắt đầu từ 0 tới stop -1.
  • Trả về một chuỗi rỗng nếu stop có giá trị là 0 hoặc nhỏ hơn 0.

2. Với kiểu cú pháp dạng range[start, stop[, step]]:

  • Nếu không có tham số step, step mặc định sẽ là 1: giá trị trả về là một chuỗi bắt đầu từ start và kết thúc ở stop -1
  • Nếu step bằng 0, ngoại lệ ValueError exception sẽ được sinh ra.
  • Nếu step khác 0, kiểm tra xem các tham số có đáp ứng được ràng buộc hay không.
    • Nếu có, trả về chuỗi theo công thức, bắt đầu từ start, các số cách nhau bằng step, số cuối của chuỗi sẽ < stop.
    • Nếu không thì trả về một chuỗi rỗng.

Ví dụ 1: range[] hoạt động như thế nào?

print[list[range[0]]] # sử dụng range[stop] print[list[range[10]]] # sử dụng range[start, stop] print[list[range[1, 10]]]

Khi bạn chạy chương trình, output trả về sẽ là:

[] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [1, 2, 3, 4, 5, 6, 7, 8, 9]

Ví dụ 2: Tạo danh sách số chẵn giữa tham số truyền vào bằng cách sử dụng range[]

start = 2 stop = 14 step = 2 print[list[range[start, stop, step]]]

Khi bạn chạy chương trình, output trả về sẽ là:

[2, 4, 6, 8, 10, 12]

Ví dụ 3: range[] hoạt động với step là số âm

start = 2 stop = -14 step = -2 print[list[range[start, stop, step]]] print[list[range[start, 14, step]]]

Giá trị trả về:

[2, 0, -2, -4, -6, -8, -10, -12] []

Xem thêm: Các hàm Python tích hợp sẵn

for bien_lap in chuoi_lap: Khối lệnh của for

Trong cú pháp trên, chuoi_lap là chuỗi cần lặp, bien_lap là biến nhận giá trị của từng mục bên trong chuoi_lap trên mỗi lần lặp. Vòng lặp sẽ tiếp tục cho đến khi nó lặp tới mục cuối cùng trong chuỗi.

Khối lệnh của for được thụt lề để phân biệt với phần còn lại của code.

Ví dụ 1:

#Lặp chữ cái trong quantrimang for chu in 'quantrimang': print['Chữ cái hiện tại:', chu] #Lặp từ trong chuỗi chuoi = ['bố','mẹ','em'] for tu in chuoi: print['Anh yêu', tu]

Ta có kết quả đầu ra như sau:

Chữ cái hiện tại: q Chữ cái hiện tại: u Chữ cái hiện tại: a Chữ cái hiện tại: n Chữ cái hiện tại: t Chữ cái hiện tại: r Chữ cái hiện tại: i Chữ cái hiện tại: m Chữ cái hiện tại: a Chữ cái hiện tại: n Chữ cái hiện tại: g Anh yêu bố Anh yêu mẹ Anh yêu em

Ví dụ 2:

# Tính tổng tất cả các số trong danh sách A # Danh sách A A = [1, 3, 5, 9, 11, 2, 6, 8, 10] # Biến để lưu trữ tổng các số là tong, gán giá trị ban đầu bằng 0 tong = 0 # Vòng lặp for, a là biến lặp for a in A: tong = tong+a # Đầu ra: Tổng các số là 55 print["Tổng các số là", tong]

Khi chạy đoạn code trên, bạn sẽ nhận được kết quả là:

Tổng các số là 55

Về cơ bản, hàm range được tích hợp sẵn trong Python, hàm này cho phép trả về một chuỗi số bắt đầu từ 0 và tăng dần lên 1 cho đến khi đạt được một số cụ thể. Nói cách khác, hàm này nhận một số nguyên và trả cho bạn một range object. Hàm này thường được sử dụng để lặp lại kiểu trình tự, phổ biến nhất là for và loops.

Vòng lặp [hay Loop] là thuật ngữ để chỉ một hành động hoặc cụm hành động lặp đi lặp lại nhiều lần. Trong quá trình coding, có những khi chúng ta muốn chạy đi chạy lại một câu code nhiều lần. Đó là lúc bạn cần đến vòng lặp.

Có 2 loại vòng lặp chính trong Python, đó là: vòng lặp for và vòng lặp while.

Chúng ta cùng đi vào tìm hiểu kĩ hơn về từng loại vòng lặp này nhé!

2. Vòng lặp for trong Python

Vòng lặp for trong Python được sử dụng để lặp một biến dữ liệu qua một dãy [List, Tuple hoặc String] theo thứ tự mà chúng xuất hiện. Nếu số lần lặp cố định thì bạn nên sử dụng vòng lặp for. Còn nếu số lần lặp không cố định thì vòng lặp while sẽ là sự lựa chọn tốt hơn.

2.1. Cú pháp của vòng lặp for

for variable in sequence: Khối lệnh của for

Ở cú pháp trên, variable là các biến dùng để nhận giá trị của từng dữ liệu trên mỗi lần lặp. Sequence là chuỗi cần lặp.

Vòng lặp tiếp tục cho đến khi chúng ta đến mục cuối cùng trong chuỗi. Một lưu ý nhỏ về phần trình bày là code bên trong câu lệnh “for” sẽ được căn thụt lề để phân tách code rõ ràng và chính xác.

Ví dụ về vòng lặp for:

# Program to find the sum of all numbers stored in a list # List of numbers numbers = [4, 5, 3, 8, 6, 2, 5, 4, 11] # variable to store the sum sum = 0 # iterate over the list for val in numbers: sum = sum+val print["The sum is", sum]

Khi chạy đoạn code trên, bạn sẽ nhận được kết quả là:

The sum is 48

2.2. Hàm Range[]

Hàm range[] có thể được sử dụng để tạo ra một dãy số. Ví dụ, range[10] sẽ tạo một dãy số từ 0 đến 9 [có 10 số].

Chúng ta sử dụng hàm range[giá trị bắt đầu, giá trị kết thúc, khoảng cách giữa hai giá trị] để tạo dãy số tùy chỉnh. Python sẽ mặc định khoảng cách giữa 2 giá trị là 1 nếu bạn không cung cấp.

Hàm không lưu tất cả các giá trị trong bộ nhớ. Nó chỉ lưu giá trị bắt đầu, giá trị kết thúc và khoảng cách giữa hai số, từ đó tạo ra số tiếp theo trong dãy.

Để buộc hàm range[] xuất ra tất cả các mục, chúng ta có thể sử dụng hàm list[]. Dưới đây là ví dụ minh hoạ:

print[range[10]] print[list[range[10]]] print[list[range[2, 8]]] print[list[range[2, 20, 3]]]

Khi chạy đoạn code trên, bạn sẽ nhận được kết quả là:

range[0, 10] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [2, 3, 4, 5, 6, 7] [2, 5, 8, 11, 14, 17]

Chúng ta cũng có thể sử dụng hàm range [] trong vòng lặp for để lặp một chuỗi số. Nó có thể được kết hợp với hàm len[] để lặp bằng cách sử dụng indexing.

Ví dụ:

# Program to iterate through a list using indexing genre = ['pop', 'rock', 'jazz'] # iterate over the list using index for i in range[len[genre]]: print["I like", genre[i]]

Ta được kết quả đầu ra như sau:

I like pop I like rock ​I like jazz

2.3. Vòng lặp for với else

Khối lệnh else được thực hiện khi các mục đã được lặp hết. Dưới đây là ví dụ để miêu tả:

A = [0, 1, 5] for i in A: print[i] else: print["No items left."]

Khi chạy xong, kết quả ta được:

0 1 5 No items left.

Như vậy, vòng lặp for sẽ thực hiện print các mục của danh sách A cho đến khi hết các mục. Khi vòng lặp kết thúc, nó sẽ chạy khối lệnh else và print Đã hết số.

Ngoài ra, nếu muốn dừng vòng lặp for, bạn có thể sử dụng lệnh break. Lúc này, khối lệnh else sẽ bị bỏ qua. Như vậy, else trong for sẽ chỉ được chạy khi không có lệnh break nào được thực hiện.

Ví dụ:

# program to display student's marks from record student_name = 'Soyuj' marks = {'James': 90, 'Jules': 55, 'Arthur': 77} for student in marks: if student == student_name: print[marks[student]] break else: print['No entry with that name found.']

Output:

No entry with that name found.

Hàm range[] giúp chúng ta có thể tạo ra một list một cách nhanh chóng. range[] có cú pháp như sau:

range[[start], stop, [step]]

Trong đó:

  • start: Giá trị bắt đầu. Giá trị mặc định của start là 0. Giá trị start là tuỳ ý và nếu như không được sử dụng trong hàm thì giá trị mặc định của nó sẽ là 0.
  • stop: Giá trị dừng. Phần tử cuối cùng trong list phải nhỏ hơn stop.
  • step: Khoảng cách giữa hai phần tử liền kề trong list. Giá trị step là tuỳ ý và nếu không được sử dụng trong hàm thì giá trị mặc định của nó sẽ là 1.

Ví dụ:

list_1 = range[5] print[list_1] # [0, 1, 2, 3, 4] list_1 = range[2, 5] # [2, 3, 4] print[list_1] list_3 = range[1, 10, 3] # [1, 4, 7] print[list_3]

Hàm xrange[] tương tự như range[] với một điểm khác biệt đó là Python Compiler sẽ giải phóng dung lượng bộ nhớ mà máy tính chiếm giữ khi sử dụng hàm xrange[] ngược lại range[] thì không như vậy.

  • Lịch sử của hàm range [] của Python
  • Hãy lặp lại
    • Phạm vi Python [] Khái niệm cơ bản
    • Tăng dần theo phạm vi []
    • Đang giảm dần với phạm vi []
    • Ví dụ về cách sử dụng nâng cao cho hàm range [] của Python
  • Số nổi và phạm vi []
    • A Word on Floats
    • Sử dụng phạm vi [] Với NumPy
  • Tiến lên và lặp lại

rangeHàm tíchhợp sẵn của Pythonrất hữu ích khi bạn cần thực hiện một hành động trong một số lần cụ thể.Là một Pythonista có kinh nghiệm, bạn rất có thể đã sử dụng nó trước đây.Nhưng nó làm được gì?

Đến cuối hướng dẫn này, bạn sẽ:

  • Hiểu cáchrangehoạt động của hàmPython
  • Biết cách triển khai khác nhau trong Python 2 và Python 3
  • Đã xem một sốrange[]ví dụ thực tế
  • Được trang bị để giải quyết một số hạn chế của nó

Chúng ta hãy bắt đầu nào!

Video liên quan

Các cấu trúc lặp trong Python bao gồm hai loại: lặp với số bước xác định trước [for] và lặp với số bước không xác định [while]. Nhìn chung hai cấu trúc lặp trong Python tương đối gần gũi với các cấu trúc lặp trong C hay C#.

Cấu trúc lặp while

Hãy xem ví dụ sau:

word = '' while[word.lower[] != 'close']: word = input['Enter a word: '] print[f'You have typed "{word}"']

Trong ví dụ này chúng ta liên tục yêu cầu người dùng nhập vào một từ. Nếu người dùng nhập từ ‘close’ thì sẽ kết thúc vòng lặp [và kết thúc chương trình]. Nếu người dùng nhập từ khác thì sẽ yêu cầu nhập lại.

Chúng ta không biết khi nào người dùng sẽ nhập ‘close’, và cũng có thể là không bao giờ. Vì vậy, vòng lặp while được gọi là vòng lặp với số bước không xác định trước.

Biến word đóng vai trò là biến điều khiển cho biểu thức điều kiện.

Hãy xem một ví dụ khác:

# tính tổng các số từ 1 đến 99 sum = 0 i = 1 while i < 100: sum += i i += 1 print[sum]

Trong ví dụ này chúng ta tính tổng các số từ 1 đến 99. Để thực hiện việc này chúng ta sử dụng một biến i với vai trò biến đếm. Biến i ban đầu nhận giá trị 1. Qua mỗi vòng lặp i sẽ tăng thêm 1 đơn vị, và biến sum sẽ cộng thêm giá trị bằng i. Quá trình này sẽ lặp đi lặp lại chừng nào i vẫn nhỏ hơn 100. Đến khi i đạt giá trị 100 thì vòng lặp kết thúc.

Cấu trúc while của Python là một lệnh phức hợp với một mệnh đề. Trong đó, header là while :. Biểu thức logic là loại biểu thức mà kết quả trả về thuộc kiểu bool [giá trị True hoặc False]. Trong các ví dụ trên, biểu thức logic là i < 100 và char.lower[] != 'close'.

Chừng nào biểu thức logic còn nhận giá trị True thì sẽ thực hiện danh sách lệnh ở phần suite.

Để tránh tạo thành vòng lặp vô tận, bên trong danh sách lệnh của vòng lặp while phải có lệnh có tác dụng làm thay đổi giá trị của biểu thức logic.

Trong ví dụ thứ nhất, chúng ta liên tục yêu cầu người dùng nhập vào giá trị mới cho biến char. Điều này đảm bảo khả năng thoát khỏi vòng lặp.

Trong ví dụ thứ hai, chúng ta làm biến đổi giá trị của i qua mỗi vòng lặp [tăng thêm 1 đơn vị]. Điều này đảm bảo đến một lúc nào đó i sẽ có giá trị lớn hơn 100 và kết thúc vòng lặp.

Cấu trúc lặp for

Hãy xem các ví dụ sau

# in ra các số trong phạm vi từ 1 đến 100 for n in range[100]: print[n + 1, end = '\t'] # in ra các số trong phạm vi từ 100 đến 199 for n in range[100, 200]: print[n, end = '\t'] # in ra các số lẻ trong phạm vi từ 1 đến 99 for n in range[1, 100, 2]: print[n, end = '\t']

Cấu trúc for cho phép lặp lại việc thực hiện khối code theo một số lần xác định sẵn từ đầu.

Cấu trúc for cũng là một lệnh phức hợp với một clause [khác với cấu trúc rẽ nhánh if có nhiều clause] trong đó header có dạng for in range[]:. Suite trong các ví dụ trên chỉ chứa một hàm print[].

Số lần lặp và cách thức lặp được tạo ra bởi hàm range[].

Hàm range[] trả về một biến chứa một dãy các giá trị nằm trong một khoảng xác định theo quy luật. Hàm này có 3 dạng:

  1. range[stop]: nhận 1 tham số là giá trị cuối của dãy và trả về dãy số [0, stop – 1]. Ví dụ range[5] sẽ trả lại dãy số 0, 1, 2, 3, 4. Bước nhảy giữa các giá trị kế tiếp là 1.
  2. range[start, stop]: nhận 2 tham số là giá trị đầu và cuối của dãy, trả về dãy [start, stop-1]. Ví dụ, range[1, 5] sẽ trả lại dãy số 1, 2, 3, 4 [bước nhảy giữa các giá trị kế tiếp là 1].
  3. range[start, stop, step]: tương tự như trường hợp 2 nhưng bước nhảy được xác định bởi biến step. Ví dụ, range[1, 10, 2] sẽ trả lại dãy 1, 3, 5, 7, 9 [bước nhảy giữa các giá trị kế tiếp là 2].

Trong hàm range, start, stop và step có thể nhận cả giá trị âm và dương:

  • Nếu step nhận giá trị âm [và start > stop] sẽ tạo ra dãy giảm dần. Ví dụ range[0, -5, -1] sẽ tạo ra dãy 0, -1, -2, -3, -4.
  • Nếu stop < start và step dương, hoặc stop > start và step âm, sẽ tạo ra chuỗi trống [không có giá trị nào]. Ví dụ, range[2, -3, 1] và range[2, 3, -1] đều không tạo ra phần tử nào.

Với danh sách giá trị mà hàm range[] tạo ra như trên, cấu trúc for sẽ lần lượt lấy từng giá trị gán cho biến chạy [biến n trong các ví dụ trên] và thực hiện khối lệnh. Như vậy, số lần lặp đã xác định sẵn từ lúc gọi hàm range[].

Sử dụng vòng lặp for với các kiểu danh sách khác

Ở trên chúng ta sử dụng for với các giá trị lấy từ danh sách tạo ra bởi hàm range[]. Trong Python, nhiều loại dữ liệu tập hợp có thể sử dụng cùng vòng for.

Ví dụ:

for c in 'Hello world': print[c, end = '\t']

Trong ví dụ trên danh sách giá trị lại là xâu ký tự ‘Hello world’. Biến chạy sẽ lần lượt nhận từng ký tự từ xâu, bắt đầu từ ký tự đầu tiên ‘H’ đến ký tự cuối cùng ‘d’. Trong ví dụ trên chúng ta chỉ đơn giản là in ký tự tương ứng ra console.

Hãy xem một ví dụ khác:

companies = ['Apple', 'Google', 'Microsoft', 'Huawei', 'Yandex', 'Facebook'] for c in companies: print[c]

Trong ví dụ trên, companies là một biến kiểu danh sách [list]. Kiểu dữ liệu này chúng ta chưa học nhưng bạn có thể hình dung nó tương tự như kiểu mảng của C. Biến kiểu list cũng có thể trở thành danh sách dữ liệu cho vòng lặp for. Khi này biến chạy c sẽ lần lượt nhận các giá trị trong danh sách theo thứ tự.

Một ví dụ khác:

# tính tổng các số dương từ một tuple total = 0 for num in [-22.0, 3.5, 8.1, -10, 0.5]: if num > 0: total = total + num

Trong ví dụ này bạn tính tổng các số dương từ một tuple. Tuple cũng là một kiểu dữ liệu tập hợp mà chúng ta sẽ học chi tiết sau.

Không phải kiểu dữ liệu tập hợp nào cũng có thể làm danh sách lặp cho vòng for. Những kiểu dữ liệu sử dụng được cho vòng for được gọi là các kiểu iterable.

Điều khiển vòng lặp, break và continue

Khi làm việc với vòng lặp có thể xuất hiện hai tình huống:

[1] Bạn muốn kết thúc vòng lặp sớm hơn dự định hoặc theo điều kiện. Lấy ví dụ, bạn cầm một danh sách khách hàng và muốn tìm tên một khách trong đó. Bạn xem lần lượt từng tên từ đầu danh sách. Nếu gặp tên khách hàng cần tìm, bạn sẽ dừng lại chứ không tiếp tục xem đến hết danh sách nữa. Ở đây bạn phá vỡ hoàn toàn vòng lặp.

[2] Bạn muốn bỏ qua một chu kỳ trong vòng lặp để bắt đầu chu kỳ tiếp theo. Lấy ví dụ, bạn dự định chơi 10 ván bài. Ở ván thứ 3 bài xấu quá, bạn quyết định bỏ cuộc để chờ chơi ván tiếp theo. Ở đây bạn không dừng hoàn toàn vòng lặp mà chỉ bỏ không làm những việc nhẽ ra phải làm trong chu kỳ đó và khởi động một chu kỳ mới.

Hai tình huống này được Python giải quyết bằng hai lệnh tương ứng: break [phá vỡ vòng lặp, kết thúc sớm] và continue [bỏ qua chu kỳ hiện tại, bắt đầu một chu kỳ lặp mới]. Cả hai loại vòng lặp [for, while] đều có thể sử dụng break và continue.

Ví dụ với break:

# breaking out of a loop early for item in [1, 2, 3, 4, 5]: if item == 3: print[item, " ...break!"] break print[item, " ...next iteration"]

Ví dụ này cho ra kết quả như sau:

1 ...next iteration 2 ...next iteration 3 ...break!# demonstrating a `continue` statement in a loop x = 1 while x < 4: print["x = ", x, ">> enter loop-body

Chủ Đề