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 + 1
2
>>> x = 0
>>> x = x + 1
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Đánh giá điều kiện, mang lại
1 hoặcn = 5 while n > 0: print[n] n = n - 1 print['Blastoff!']
2n = 5 while n > 0: print[n] n = n - 1 print['Blastoff!']
Nếu điều kiện sai thì thoát khỏi câu lệnh
2 và tiếp tục thực hiện ở câu lệnh tiếp theo>>> x = 0 >>> x = x + 1
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à quan sát thấy rằng 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ặpVò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!']
1n = 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 một tiến trình Python đang chạy trên hệ thống của bạn 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!']
1Mặ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átVí 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ếtwhile True:
line = input['> ']
if line == 'done':
break
print[line]
print['Done!']
# Code: //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 breakMỗ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
n = 10
while True:
print[n, end=' ']
n = n - 1
print['Done!']
Đô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: //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 hiện ___
n = 10
while True:
print[n, end=' ']
n = n - 1
print['Done!']
7, nó sẽ kết thúc bước lặp hiện tại và nhảy trở lại câu lệnh ____________2 để bắt đầu bước 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: //www.py4e.com/code3/copytildone1.py
2Vòng lặp xác định sử dụng while True:
line = input['> ']
if line == 'done':
break
print[line]
print['Done!']
# Code: //www.py4e.com/code3/copytildone1.py
3
while True:
line = input['> ']
if line == 'done':
break
print[line]
print['Done!']
# Code: //www.py4e.com/code3/copytildone1.py
Đô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: //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: //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: //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: //www.py4e.com/code3/copytildone1.py
3 và thân vòng lặpfriends = ['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: //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
0Dịch vòng lặp
while True:
line = input['> ']
if line == 'done':
break
print[line]
print['Done!']
# Code: //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: //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: //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!
1mẫ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: //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 quaCá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: //www.py4e.com/code3/copytildone1.py
3 sau>>> x = x + 1
NameError: name 'x' is not defined
2Chúng tôi đặt biến
while True:
line = input['> ']
if line[0] == '#':
continue
if line == 'done':
break
print[line]
print['Done!']
# Code: //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: //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: //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: //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áchTrong 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: //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: //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: //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úcMộ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
3Trong 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: //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áchKhi 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 ứngVò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
4Khi chương trình thực thi, đầu ra như sau
>>> x = x + 1
NameError: name 'x' is not defined
5Biế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: //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à 3Sau 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
6Mộ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áchMộ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ếtSau đâ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
7Trong 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: //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 Pythongỡ 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: //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ìnhNế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ặpbà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
8Bà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