Cách cập nhật một biến trong vòng lặp while (Python)

Vòng lặp while yêu cầu các biến liên quan phải sẵn sàng, trong ví dụ này chúng ta cần xác định một biến chỉ mục, i, mà chúng ta đặt thành 1


Tuyên bố phá vỡ

Với câu lệnh break, chúng ta có thể dừng vòng lặp ngay cả khi điều kiện trong khi là đúng

Ví dụ

Thoát khỏi vòng lặp khi tôi lên 3

tôi = 1
trong khi tôi < 6
in(i)
nếu tôi == 3
phá vỡ
tôi += 1

Tự mình thử »


Học cách lọc dữ liệu bằng Python như một nhà phân tích dữ liệu

Cách cập nhật một biến trong vòng lặp while (Python)

Thử tham gia các buổi đào tạo thực hành với hướng dẫn từng bước từ chuyên gia. Hãy thử dự án có hướng dẫn được thực hiện với sự cộng tác của Coursera ngay bây giờ

Điều này dường như không hoạt động vì ist tạo ra một Vòng lặp vô hạn. (bỏ phần “for” vì không quan trọng)

var loopcondition = “0”;

while(điều kiện vòng lặp < 5){ console. log(“Vòng lặp WHILE đang lặp. Điều kiện vòng lặp là “ + điều kiện vòng lặp +”. ”);

làm {bảng điều khiển. log(“Dù sao thì câu này cũng sẽ được ghi lại”);

Lý do cho điều này là, phần “while” ở dòng cuối cùng tiếp tục Lặp lại vì điều kiện vòng lặp là 5 SAU KHI chạy vòng lặp while. Tôi có thể kiểm tra điều này với bảng điều khiển. nhật ký (điều kiện vòng lặp). Nhưng tại sao điều kiện được cập nhật thành 5 nếu tôi chạy nó trong vòng lặp while?

Một mẫu phổ biến trong các câu lệnh gán là một câu lệnh gán cập nhật một biến, trong đó giá trị mới của biến phụ thuộc vào giá trị cũ

x = x + 1

Điều này có nghĩa là “lấy giá trị hiện tại của

>>> x = x + 1
NameError: name 'x' is not defined
9, thêm 1, sau đó cập nhật
>>> x = x + 1
NameError: name 'x' is not defined
9 với giá trị mới. ”

Nếu bạn cố cập nhật một biến không tồn tại, bạn sẽ gặp lỗi vì Python đánh giá phía bên phải trước khi gán giá trị cho

>>> x = x + 1
NameError: name 'x' is not defined
9

>>> x = x + 1
NameError: name 'x' is not defined

Trước khi bạn có thể cập nhật một biến, bạn phải khởi tạo nó, thường bằng một phép gán đơn giản

>>> x = 0
>>> x = x + 1

Cập nhật một biến bằng cách thêm 1 được gọi là số gia;

Tuyên bố >>> x = 0 >>> x = x + 12

Máy tính thường được sử dụng để tự động hóa các công việc lặp đi lặp lại. Lặp lại các tác vụ giống hệt hoặc tương tự nhau mà không mắc lỗi là điều mà máy tính làm tốt còn con người thì làm kém. Bởi vì phép lặp rất phổ biến, Python cung cấp một số tính năng ngôn ngữ để làm cho nó dễ dàng hơn

Một dạng lặp trong Python là câu lệnh

>>> x = 0
>>> x = x + 1
2. Đây là một chương trình đơn giản đếm ngược từ năm và sau đó nói “Blastoff. ”

________số 8_______

Bạn gần như có thể đọc câu nói

>>> x = 0
>>> x = x + 1
2 như thể nó là tiếng Anh. Nó có nghĩa là, “Trong khi
>>> x = 0
>>> x = x + 1
5 lớn hơn 0, hãy hiển thị giá trị của
>>> x = 0
>>> x = x + 1
5 và sau đó giảm giá trị của
>>> x = 0
>>> x = x + 1
5 đi 1. Khi bạn về 0, thoát khỏi câu lệnh
>>> x = 0
>>> x = x + 1
2 và hiển thị từ
>>> x = 0
>>> x = x + 1
9”

Chính thức hơn, đây là quy trình thực thi cho câu lệnh

>>> x = 0
>>> x = x + 1
2

  1. Đánh giá điều kiện, mang lại

    n = 5
    while n > 0:
        print(n)
        n = n - 1
    print('Blastoff!')
    1 hoặc
    n = 5
    while n > 0:
        print(n)
        n = n - 1
    print('Blastoff!')
    2

  2. Nếu điều kiện sai thì thoát khỏi câu lệnh

    >>> x = 0
    >>> x = x + 1
    2 và tiếp tục thực hiện ở câu lệnh tiếp theo

  3. Nếu điều kiện là đúng, hãy thực hiện phần thân và sau đó quay lại bước 1

Loại dòng chảy này được gọi là vòng lặp vì bước thứ ba vòng ngược trở lại đỉnh. Chúng tôi gọi mỗi lần chúng tôi thực hiện phần thân của vòng lặp là một lần lặp. Đối với vòng lặp trên, chúng tôi sẽ nói, "Nó có năm lần lặp lại", có nghĩa là phần thân của vòng lặp được thực hiện năm lần

Phần thân của vòng lặp sẽ thay đổi giá trị của một hoặc nhiều biến để cuối cùng điều kiện trở thành sai và vòng lặp kết thúc. Ta gọi biến thay đổi mỗi khi vòng lặp thực hiện và điều khiển khi vòng lặp kết thúc là biến lặp. Nếu không có biến lặp thì vòng lặp sẽ lặp mãi dẫn đến vòng lặp vô hạn

vòng lặp vô hạn

Một nguồn thú vị bất tận cho các lập trình viên là việc quan sát thấy các hướng dẫn trên dầu gội đầu, “Xoa, xả, lặp lại,” là một vòng lặp vô hạn vì không có biến lặp nào cho bạn biết số lần thực hiện vòng lặp

Trong trường hợp của

n = 5
while n > 0:
    print(n)
    n = n - 1
print('Blastoff!')
4, chúng ta có thể chứng minh rằng vòng lặp kết thúc bởi vì chúng ta biết rằng giá trị của
>>> x = 0
>>> x = x + 1
5 là hữu hạn và chúng ta có thể thấy rằng giá trị của
>>> x = 0
>>> x = x + 1
5 sẽ nhỏ hơn mỗi lần qua vòng lặp, vì vậy cuối cùng chúng ta phải về 0. Đôi khi, một vòng lặp rõ ràng là vô hạn vì nó không có biến lặp nào cả

Đôi khi bạn không biết đã đến lúc kết thúc một vòng lặp cho đến khi bạn đi được một nửa cơ thể. Trong trường hợp đó, bạn có thể cố tình viết một vòng lặp vô hạn và sau đó sử dụng câu lệnh

n = 5
while n > 0:
    print(n)
    n = n - 1
print('Blastoff!')
7 để nhảy ra khỏi vòng lặp

Vòng lặp này rõ ràng là một vòng lặp vô hạn vì biểu thức logic trong câu lệnh

>>> x = 0
>>> x = x + 1
2 chỉ đơn giản là hằng số logic
n = 5
while n > 0:
    print(n)
    n = n - 1
print('Blastoff!')
1

n = 10
while True:
    print(n, end=' ')
    n = n - 1
print('Done!')

Nếu bạn mắc lỗi và chạy mã này, bạn sẽ nhanh chóng học được cách dừng quá trình Python đang chạy trên hệ thống của mình hoặc tìm vị trí của nút tắt nguồn trên máy tính của bạn. Chương trình này sẽ chạy mãi mãi hoặc cho đến khi hết pin vì biểu thức logic ở đầu vòng lặp luôn đúng do biểu thức là giá trị không đổi

n = 5
while n > 0:
    print(n)
    n = n - 1
print('Blastoff!')
1

Mặc dù đây là một vòng lặp vô hạn rối loạn chức năng, nhưng chúng ta vẫn có thể sử dụng mẫu này để xây dựng các vòng lặp hữu ích miễn là chúng ta cẩn thận thêm mã vào phần thân của vòng lặp để thoát khỏi vòng lặp một cách rõ ràng bằng cách sử dụng

n = 5
while n > 0:
    print(n)
    n = n - 1
print('Blastoff!')
7 khi chúng ta đạt đến điều kiện thoát

Ví dụ: giả sử bạn muốn lấy thông tin đầu vào từ người dùng cho đến khi họ nhập

n = 10
while True:
    print(n, end=' ')
    n = n - 1
print('Done!')
2. bạn có thể viết

while True:
    line = input('> ')
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone1.py

Điều kiện vòng lặp là

n = 5
while n > 0:
    print(n)
    n = n - 1
print('Blastoff!')
1, luôn luôn đúng, vì vậy vòng lặp sẽ chạy lặp đi lặp lại cho đến khi gặp câu lệnh break

Mỗi lần đi qua, nó sẽ nhắc người dùng bằng một dấu ngoặc nhọn. Nếu người dùng gõ

n = 10
while True:
    print(n, end=' ')
    n = n - 1
print('Done!')
2, câu lệnh
n = 5
while n > 0:
    print(n)
    n = n - 1
print('Blastoff!')
7 sẽ thoát khỏi vòng lặp. Nếu không, chương trình lặp lại bất cứ điều gì người dùng nhập và quay lại đầu vòng lặp. Đây là một lần chạy mẫu

> hello there
hello there
> finished
finished
> done
Done!

Cách viết vòng lặp

>>> x = 0
>>> x = x + 1
2 này phổ biến vì bạn có thể kiểm tra điều kiện ở bất kỳ đâu trong vòng lặp (không chỉ ở đầu) và bạn có thể diễn đạt điều kiện dừng một cách khẳng định (“dừng khi điều này xảy ra”) thay vì phủ định (“hãy tiếp tục cho đến khi điều đó xảy ra . ”)

Kết thúc các lần lặp lại với n = 10 while True: print(n, end=' ') n = n - 1 print('Done!')7

Đôi khi bạn đang lặp lại một vòng lặp và muốn kết thúc vòng lặp hiện tại và ngay lập tức chuyển sang bước lặp tiếp theo. Trong trường hợp đó, bạn có thể sử dụng câu lệnh

n = 10
while True:
    print(n, end=' ')
    n = n - 1
print('Done!')
7 để chuyển sang lần lặp tiếp theo mà không kết thúc phần thân của vòng lặp cho lần lặp hiện tại

Đây là một ví dụ về một vòng lặp sao chép đầu vào của nó cho đến khi người dùng gõ “xong”, nhưng coi các dòng bắt đầu bằng ký tự băm là các dòng không được in (giống như nhận xét của Python)

while True:
    line = input('> ')
    if line[0] == '#':
        continue
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone2.py

Đây là một lần chạy mẫu của chương trình mới này với

n = 10
while True:
    print(n, end=' ')
    n = n - 1
print('Done!')
7 được thêm vào

> hello there
hello there
> # don't print this
> print this!
print this!
> done
Done!

Tất cả các dòng đều được in ngoại trừ dòng bắt đầu bằng dấu thăng vì khi thực thi

n = 10
while True:
    print(n, end=' ')
    n = n - 1
print('Done!')
7, nó kết thúc lần lặp hiện tại và nhảy trở lại câu lệnh
>>> x = 0
>>> x = x + 1
2 để bắt đầu lần lặp tiếp theo, do đó bỏ qua câu lệnh
while True:
    line = input('> ')
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone1.py
2

Vòng lặp xác định sử dụng while True: line = input('> ') if line == 'done': break print(line) print('Done!') # Code: http://www.py4e.com/code3/copytildone1.py3

Đôi khi chúng ta muốn lặp qua một tập hợp những thứ như danh sách từ, dòng trong tệp hoặc danh sách số. Khi chúng ta có một danh sách những thứ cần lặp, chúng ta có thể xây dựng một vòng lặp xác định bằng cách sử dụng câu lệnh

while True:
    line = input('> ')
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone1.py
3. Chúng ta gọi câu lệnh
>>> x = 0
>>> x = x + 1
2 là một vòng lặp không xác định bởi vì nó chỉ đơn giản là lặp cho đến khi một số điều kiện trở thành
n = 5
while n > 0:
    print(n)
    n = n - 1
print('Blastoff!')
2, trong khi vòng lặp
while True:
    line = input('> ')
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone1.py
3 đang lặp qua một tập hợp các phần tử đã biết nên nó chạy qua bao nhiêu lần lặp tùy theo số phần tử trong tập hợp đó.

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

while True:
    line = input('> ')
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone1.py
3 tương tự như vòng lặp
>>> x = 0
>>> x = x + 1
2 ở chỗ có một câu lệnh
while True:
    line = input('> ')
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone1.py
3 và thân vòng lặp

friends = ['Joseph', 'Glenn', 'Sally']
for friend in friends:
    print('Happy New Year:', friend)
print('Done!')

Theo thuật ngữ Python, biến

> hello there
hello there
> finished
finished
> done
Done!
1 là một danh sách gồm ba chuỗi và vòng lặp
while True:
    line = input('> ')
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone1.py
3 đi qua danh sách và thực thi phần thân một lần cho mỗi chuỗi trong số ba chuỗi trong danh sách dẫn đến kết quả này

>>> x = x + 1
NameError: name 'x' is not defined
0

Dịch vòng lặp

while True:
    line = input('> ')
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone1.py
3 này sang tiếng Anh không trực tiếp như vòng lặp
>>> x = 0
>>> x = x + 1
2, nhưng nếu bạn coi bạn bè là một tập hợp, thì nó sẽ như thế này. “Chạy các câu lệnh trong phần thân của vòng lặp for một lần cho mỗi người bạn trong tập hợp có tên là bạn bè. ”

Nhìn vào vòng lặp

while True:
    line = input('> ')
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone1.py
3, for và in là các từ khóa Python dành riêng, và
> hello there
hello there
> finished
finished
> done
Done!
6 và
> hello there
hello there
> finished
finished
> done
Done!
1 là các biến

>>> x = x + 1
NameError: name 'x' is not defined
1

Đặc biệt,

> hello there
hello there
> finished
finished
> done
Done!
6 là biến lặp của vòng lặp for. Biến
> hello there
hello there
> finished
finished
> done
Done!
6 thay đổi cho mỗi lần lặp của vòng lặp và điều khiển khi vòng lặp
while True:
    line = input('> ')
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone1.py
3 hoàn thành. Biến lặp bước liên tiếp qua ba chuỗi được lưu trữ trong biến
> hello there
hello there
> finished
finished
> done
Done!
1

mẫu vòng lặp

Thông thường, chúng tôi sử dụng vòng lặp

while True:
    line = input('> ')
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone1.py
3 hoặc
>>> x = 0
>>> x = x + 1
2 để duyệt qua danh sách các mục hoặc nội dung của tệp và chúng tôi đang tìm kiếm thứ gì đó chẳng hạn như giá trị lớn nhất hoặc nhỏ nhất của dữ liệu mà chúng tôi quét qua

Các vòng lặp này thường được xây dựng bởi

  • Khởi tạo một hoặc nhiều biến trước khi vòng lặp bắt đầu

  • Thực hiện một số tính toán trên từng mục trong thân vòng lặp, có thể thay đổi các biến trong thân vòng lặp

  • Nhìn vào các biến kết quả khi vòng lặp hoàn thành

Chúng tôi sẽ sử dụng một danh sách các số để minh họa các khái niệm và cách xây dựng các mẫu vòng lặp này

Vòng lặp đếm và tính tổng

Ví dụ: để đếm số mục trong danh sách, chúng ta sẽ viết vòng lặp

while True:
    line = input('> ')
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone1.py
3 sau

>>> x = x + 1
NameError: name 'x' is not defined
2

Chúng tôi đặt biến

while True:
    line = input('> ')
    if line[0] == '#':
        continue
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone2.py
5 thành 0 trước khi vòng lặp bắt đầu, sau đó chúng tôi viết một vòng lặp
while True:
    line = input('> ')
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone1.py
3 để chạy qua danh sách các số. Biến lặp của chúng tôi được đặt tên là
while True:
    line = input('> ')
    if line[0] == '#':
        continue
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone2.py
7 và mặc dù chúng tôi không sử dụng
while True:
    line = input('> ')
    if line[0] == '#':
        continue
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone2.py
7 trong vòng lặp, nhưng nó sẽ điều khiển vòng lặp và khiến thân vòng lặp được thực thi một lần cho mỗi giá trị trong danh sách

Trong phần thân của vòng lặp, chúng tôi thêm 1 vào giá trị hiện tại của

while True:
    line = input('> ')
    if line[0] == '#':
        continue
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone2.py
5 cho mỗi giá trị trong danh sách. Trong khi vòng lặp đang thực thi, giá trị của
while True:
    line = input('> ')
    if line[0] == '#':
        continue
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone2.py
5 là số giá trị mà chúng ta đã thấy “cho đến nay”

Khi vòng lặp hoàn tất, giá trị của

while True:
    line = input('> ')
    if line[0] == '#':
        continue
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone2.py
5 là tổng số mục. Tổng số "rơi vào lòng chúng tôi" ở cuối vòng lặp. Chúng tôi xây dựng vòng lặp để chúng tôi có những gì chúng tôi muốn khi vòng lặp kết thúc

Một vòng lặp tương tự khác tính tổng của một bộ số như sau

>>> x = x + 1
NameError: name 'x' is not defined
3

Trong vòng lặp này, chúng tôi sử dụng biến lặp. Thay vì chỉ thêm một vào

while True:
    line = input('> ')
    if line[0] == '#':
        continue
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone2.py
5 như trong vòng lặp trước, chúng tôi thêm số thực (3, 41, 12, v.v. ) vào tổng số đang chạy trong mỗi lần lặp lại vòng lặp. Nếu bạn nghĩ về biến
> hello there
hello there
> # don't print this
> print this!
print this!
> done
Done!
3, thì nó chứa “tổng giá trị đang chạy cho đến nay”. Vì vậy, trước khi vòng lặp bắt đầu
> hello there
hello there
> # don't print this
> print this!
print this!
> done
Done!
3 bằng 0 vì chúng tôi chưa thấy bất kỳ giá trị nào, trong vòng lặp
> hello there
hello there
> # don't print this
> print this!
print this!
> done
Done!
3 là tổng chạy và ở cuối vòng lặp
> hello there
hello there
> # don't print this
> print this!
print this!
> done
Done!
3 là tổng chung của tất cả các giá trị trong danh sách

Khi vòng lặp thực thi,

> hello there
hello there
> # don't print this
> print this!
print this!
> done
Done!
3 cộng dồn tổng các phần tử;

Cả vòng lặp đếm và vòng tính tổng đều không đặc biệt hữu ích trong thực tế vì có các hàm tích hợp sẵn là

> hello there
hello there
> # don't print this
> print this!
print this!
> done
Done!
8 và
> hello there
hello there
> # don't print this
> print this!
print this!
> done
Done!
9 tính toán số lượng mục trong danh sách và tổng số mục trong danh sách tương ứng

Vòng lặp tối đa và tối thiểu

Để tìm giá trị lớn nhất trong một danh sách hoặc dãy, chúng ta xây dựng vòng lặp sau

>>> x = x + 1
NameError: name 'x' is not defined
4

Khi chương trình thực thi, đầu ra như sau

>>> x = x + 1
NameError: name 'x' is not defined
5

Biến

friends = ['Joseph', 'Glenn', 'Sally']
for friend in friends:
    print('Happy New Year:', friend)
print('Done!')
0 được coi là “giá trị lớn nhất mà chúng tôi đã thấy cho đến nay”. Trước vòng lặp, chúng tôi đặt
friends = ['Joseph', 'Glenn', 'Sally']
for friend in friends:
    print('Happy New Year:', friend)
print('Done!')
0 thành hằng số
friends = ['Joseph', 'Glenn', 'Sally']
for friend in friends:
    print('Happy New Year:', friend)
print('Done!')
2.
friends = ['Joseph', 'Glenn', 'Sally']
for friend in friends:
    print('Happy New Year:', friend)
print('Done!')
2 là một giá trị hằng số đặc biệt mà chúng ta có thể lưu trữ trong một biến để đánh dấu biến đó là “trống”

Trước khi vòng lặp bắt đầu, giá trị lớn nhất mà chúng tôi đã thấy cho đến nay là

friends = ['Joseph', 'Glenn', 'Sally']
for friend in friends:
    print('Happy New Year:', friend)
print('Done!')
2 vì chúng tôi chưa thấy bất kỳ giá trị nào. Trong khi vòng lặp đang thực thi, nếu
friends = ['Joseph', 'Glenn', 'Sally']
for friend in friends:
    print('Happy New Year:', friend)
print('Done!')
0 là
friends = ['Joseph', 'Glenn', 'Sally']
for friend in friends:
    print('Happy New Year:', friend)
print('Done!')
2 thì chúng tôi lấy giá trị đầu tiên mà chúng tôi thấy là lớn nhất cho đến nay. Bạn có thể thấy trong lần lặp đầu tiên khi giá trị của
while True:
    line = input('> ')
    if line[0] == '#':
        continue
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone2.py
7 là 3, vì
friends = ['Joseph', 'Glenn', 'Sally']
for friend in friends:
    print('Happy New Year:', friend)
print('Done!')
0 là
friends = ['Joseph', 'Glenn', 'Sally']
for friend in friends:
    print('Happy New Year:', friend)
print('Done!')
2, chúng tôi ngay lập tức đặt
friends = ['Joseph', 'Glenn', 'Sally']
for friend in friends:
    print('Happy New Year:', friend)
print('Done!')
0 là 3

Sau lần lặp đầu tiên,

friends = ['Joseph', 'Glenn', 'Sally']
for friend in friends:
    print('Happy New Year:', friend)
print('Done!')
0 không còn là
friends = ['Joseph', 'Glenn', 'Sally']
for friend in friends:
    print('Happy New Year:', friend)
print('Done!')
2 nữa, do đó, phần thứ hai của biểu thức logic phức hợp kiểm tra
>>> x = x + 1
NameError: name 'x' is not defined
03 chỉ kích hoạt khi chúng ta thấy một giá trị lớn hơn giá trị “lớn nhất cho đến nay”. Khi chúng tôi thấy một giá trị mới “thậm chí còn lớn hơn”, chúng tôi lấy giá trị mới đó cho
friends = ['Joseph', 'Glenn', 'Sally']
for friend in friends:
    print('Happy New Year:', friend)
print('Done!')
0. Bạn có thể thấy trong đầu ra của chương trình rằng
friends = ['Joseph', 'Glenn', 'Sally']
for friend in friends:
    print('Happy New Year:', friend)
print('Done!')
0 tiến triển từ 3 đến 41 đến 74

Ở cuối vòng lặp, chúng tôi đã quét tất cả các giá trị và biến

friends = ['Joseph', 'Glenn', 'Sally']
for friend in friends:
    print('Happy New Year:', friend)
print('Done!')
0 hiện chứa giá trị lớn nhất trong danh sách

Để tính số nhỏ nhất, mã rất giống với một thay đổi nhỏ

>>> x = x + 1
NameError: name 'x' is not defined
6

Một lần nữa,

>>> x = x + 1
NameError: name 'x' is not defined
07 là “nhỏ nhất cho đến nay” trước, trong và sau khi vòng lặp thực thi. Khi vòng lặp hoàn thành,
>>> x = x + 1
NameError: name 'x' is not defined
07 chứa giá trị nhỏ nhất trong danh sách

Một lần nữa, như khi đếm và tính tổng, các hàm có sẵn

>>> x = x + 1
NameError: name 'x' is not defined
09 và
>>> x = x + 1
NameError: name 'x' is not defined
10 khiến việc viết các vòng lặp chính xác này trở nên không cần thiết

Sau đây là phiên bản đơn giản của hàm

>>> x = x + 1
NameError: name 'x' is not defined
10 tích hợp trong Python

>>> x = x + 1
NameError: name 'x' is not defined
7

Trong phiên bản hàm của mã nhỏ nhất, chúng tôi đã loại bỏ tất cả các câu lệnh

while True:
    line = input('> ')
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone1.py
2 để tương đương với hàm
>>> x = x + 1
NameError: name 'x' is not defined
13 đã được tích hợp sẵn trong Python

gỡ lỗi

Khi bạn bắt đầu viết các chương trình lớn hơn, bạn có thể thấy mình dành nhiều thời gian hơn để gỡ lỗi. Nhiều mã hơn có nghĩa là có nhiều cơ hội mắc lỗi hơn và nhiều chỗ để lỗi ẩn hơn

Một cách để giảm thời gian gỡ lỗi của bạn là “gỡ lỗi bằng cách chia đôi. ” Ví dụ, nếu có 100 dòng trong chương trình của bạn và bạn kiểm tra từng dòng một, thì sẽ mất 100 bước

Thay vào đó, hãy cố gắng chia đôi vấn đề. Nhìn vào giữa chương trình hoặc gần nó để biết giá trị trung gian mà bạn có thể kiểm tra. Thêm câu lệnh

while True:
    line = input('> ')
    if line == 'done':
        break
    print(line)
print('Done!')

# Code: http://www.py4e.com/code3/copytildone1.py
2 (hoặc thứ gì khác có tác dụng có thể kiểm chứng) và chạy chương trình

Nếu kiểm tra điểm giữa không chính xác, vấn đề phải ở nửa đầu của chương trình. Nếu đúng thì vấn đề nằm ở nửa sau

Mỗi khi bạn thực hiện kiểm tra như thế này, bạn sẽ giảm được một nửa số dòng bạn phải tìm kiếm. Sau sáu bước (ít hơn nhiều so với 100), bạn sẽ chỉ còn một hoặc hai dòng mã, ít nhất là trên lý thuyết

Trong thực tế, không phải lúc nào cũng rõ ràng "phần giữa của chương trình" là gì và không phải lúc nào cũng có thể kiểm tra nó. Không có ý nghĩa gì khi đếm các dòng và tìm điểm giữa chính xác. Thay vào đó, hãy nghĩ về những nơi trong chương trình có thể có lỗi và những nơi dễ kiểm tra. Sau đó, chọn một vị trí mà bạn nghĩ rằng khả năng xảy ra lỗi trước hoặc sau khi kiểm tra là như nhau

Bảng chú giải

accumulatorMột biến được sử dụng trong một vòng lặp để cộng hoặc tích lũy một kết quả. biến đếm được sử dụng trong một vòng lặp để đếm số lần điều gì đó đã xảy ra. Chúng tôi khởi tạo một bộ đếm bằng 0 và sau đó tăng bộ đếm mỗi khi chúng tôi muốn "đếm" thứ gì đó. decrementMột bản cập nhật làm giảm giá trị của một biến. khởi tạoMột phép gán cung cấp giá trị ban đầu cho một biến sẽ được cập nhật. gia tăngMột cập nhật làm tăng giá trị của một biến (thường là một). vòng lặp vô hạn Một vòng lặp trong đó điều kiện kết thúc không bao giờ được thỏa mãn hoặc không có điều kiện kết thúc. lặp Thực hiện lặp lại một tập hợp các câu lệnh bằng cách sử dụng một hàm gọi chính nó hoặc một vòng lặp

bài tập

bài tập 1. Viết chương trình đọc các số liên tục cho đến khi người dùng nhập “xong”. Sau khi nhập xong, hãy in ra tổng, số lượng và trung bình cộng của các số. Nếu người dùng nhập bất kỳ thứ gì khác ngoài số, hãy phát hiện lỗi của họ bằng cách sử dụng

>>> x = x + 1
NameError: name 'x' is not defined
15 và
>>> x = x + 1
NameError: name 'x' is not defined
16 rồi in thông báo lỗi và chuyển sang số tiếp theo

>>> x = x + 1
NameError: name 'x' is not defined
8

Bài tập 2. Viết một chương trình khác nhắc nhập danh sách các số như trên và cuối cùng in ra cả giá trị lớn nhất và giá trị nhỏ nhất của các số thay vì giá trị trung bình

Bạn có thể cập nhật một biến trong vòng lặp while không?

Cách tốt nhất để làm cho điều kiện thay đổi từ Đúng thành Sai là sử dụng một biến như một phần của biểu thức Boolean. Sau đó, chúng ta có thể thay đổi biến bên trong vòng lặp while . Ví dụ: biến i thay đổi trong vòng lặp bên dưới.

Điều gì xảy ra nếu biến kiểm tra trong vòng lặp while không được cập nhật?

Bạn chỉ in đầu ra của test() , không cập nhật biến a nên giá trị này sẽ luôn bằng 0 ở mỗi lần lặp lại vòng lặp của bạn. khi bạn gọi test(a) bạn chỉ cần in kết quả, a không bao giờ được cập nhật - tôi. e. nó vẫn là 0, bạn chỉ cần loại bỏ giá trị trả về .

Bạn có thể sửa đổi một biến trong Python không?

Một số giá trị trong python có thể sửa đổi được, còn một số thì không . Điều này không có nghĩa là chúng ta không thể thay đổi giá trị của một biến – nhưng nếu một biến chứa giá trị thuộc loại bất biến, chúng ta chỉ có thể gán cho nó một giá trị mới. Chúng tôi không thể thay đổi giá trị hiện tại theo bất kỳ cách nào.

Tôi có thể thay đổi tên biến trong vòng lặp Python không?

Để thay đổi tên biến trong vòng lặp trong Python, bạn chỉ cần gán lại giá trị mới cho biến . Ví dụ. cho tôi trong phạm vi (10). x = tôi.