Tổng python cho vòng lặp một dòng

Trong các bài học trước chúng ta đã giải quyết các chương trình tuần tự và các điều kiện. Thường thì chương trình cần lặp lại một số khối nhiều lần. Đó là nơi các vòng lặp có ích. Có các toán tử vòng lặp

for character in 'hello':
    print(character)
4 và
for character in 'hello':
    print(character)
5 trong Python, trong bài học này chúng ta sẽ đề cập đến
for character in 'hello':
    print(character)
4

for character in 'hello':
    print(character)
4 vòng lặp lặp lại trên bất kỳ chuỗi nào. Chẳng hạn, bất kỳ chuỗi nào trong Python là một chuỗi các ký tự của nó, vì vậy chúng ta có thể lặp lại chúng bằng cách sử dụng
for character in 'hello':
    print(character)
4

None
for character in 'hello':
    print(character)

Một trường hợp sử dụng khác cho vòng lặp for là lặp lại một số biến số nguyên theo thứ tự tăng hoặc giảm. Một dãy số nguyên như vậy có thể được tạo bằng hàm

for character in 'hello':
    print(character)
9

None
for i in range(5, 8):
    print(i, i ** 2)
print('end of loop')
# 5 25
# 6 36
# 7 49
# end of loop

Hàm

for character in 'hello':
    print(character)
9 tạo ra một chuỗi có các số
None
1,
None
2,. ,
None
3. Số cuối cùng không được bao gồm

Có một dạng rút gọn của phạm vi () -

None
4, trong trường hợp đó, giá trị tối thiểu được đặt hoàn toàn bằng 0

None
for i in range(3):
    print(i)
# 0
# 1
# 2

Bằng cách này, chúng ta có thể lặp lại một số hành động nhiều lần

None
for i in range(2 ** 2):
    print('Hello, world!')

Tương tự như với if-else, thụt đầu dòng là thứ xác định hướng dẫn nào được kiểm soát bởi

for character in 'hello':
    print(character)
4 và hướng dẫn nào không

Phạm vi () có thể xác định một chuỗi trống, như

None
6 hoặc
None
7. Trong trường hợp này, khối for sẽ không được thực thi

None
for i in range(-5):
    print('Hello, world!')

Hãy có ví dụ phức tạp hơn và tính tổng các số nguyên từ 1 đến n

None
for character in 'hello':
    print(character)
1

Hãy chú ý rằng giá trị lớn nhất trong phạm vi() là

None
8 để làm cho
None
9 bằng n ở bước cuối cùng

Để lặp lại một chuỗi giảm dần, chúng ta có thể sử dụng dạng mở rộng của phạm vi () với ba đối số -

for i in range(5, 8):
    print(i, i ** 2)
print('end of loop')
# 5 25
# 6 36
# 7 49
# end of loop
0. Khi bị bỏ qua, bước này hoàn toàn bằng 1. Tuy nhiên, có thể là bất kỳ giá trị khác không. Vòng lặp luôn bao gồm start_value và loại trừ end_value trong quá trình lặp

Vòng lặp

i = 1
while i <= 10:
    print(i ** 2)
    i += 1
7 lặp lại chuỗi hành động nhiều lần cho đến khi một số điều kiện ước tính thành
i = 1
while i <= 10:
    print(i ** 2)
    i += 1
8. Điều kiện được đưa ra trước thân vòng lặp và được kiểm tra trước mỗi lần thực hiện thân vòng lặp. Thông thường, vòng lặp
i = 1
while i <= 10:
    print(i ** 2)
    i += 1
7 được sử dụng khi không thể xác định trước chính xác số lần lặp của vòng lặp

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

i = 1
while i <= 10:
    print(i ** 2)
    i += 1
7 trong trường hợp đơn giản nhất trông như thế này

while some condition:
    a block of statements

Python trước hết kiểm tra điều kiện. Nếu nó là Sai, thì vòng lặp kết thúc và điều khiển được chuyển sang câu lệnh tiếp theo sau thân vòng lặp

i = 1
while i <= 10:
    print(i ** 2)
    i += 1
7. Nếu điều kiện là True, thì thân vòng lặp được thực hiện và sau đó điều kiện được kiểm tra lại. Điều này tiếp tục trong khi điều kiện là True. Khi điều kiện trở thành Sai, vòng lặp kết thúc và quyền điều khiển được chuyển sang câu lệnh tiếp theo sau vòng lặp

Ví dụ, đoạn chương trình sau in bình phương của tất cả các số nguyên từ 1 đến 10. Ở đây người ta có thể thay thế vòng lặp "while" bằng vòng lặp

5678
2

1
4
9
16
25
36
49
64
81
100
i = 1
while i <= 10:
    print(i ** 2)
    i += 1

Trong ví dụ này, biến

5678
3 bên trong vòng lặp lặp từ 1 đến 10. Một biến như vậy có giá trị thay đổi với mỗi lần lặp lại vòng lặp mới được gọi là bộ đếm. Lưu ý rằng sau khi thực hiện đoạn này, giá trị của biến
5678
3 được xác định và bằng với
5678
5, bởi vì khi
5678
6 điều kiện
5678
7 lần đầu tiên là Sai

Đây là một ví dụ khác sử dụng vòng lặp

i = 1
while i <= 10:
    print(i ** 2)
    i += 1
7 để xác định số chữ số của một số nguyên
5678
9

5678
n = int(input())
length = 0
while n > 0:
    n //= 10  # this is equivalent to n = n // 10
    length += 1
print(length)  # 4

Trên mỗi lần lặp, chúng tôi cắt chữ số cuối cùng của số bằng cách chia số nguyên cho 10 (

n = int(input())
length = 0
while n > 0:
    n //= 10  # this is equivalent to n = n // 10
    length += 1
print(length)  # 4
0). Trong biến
n = int(input())
length = 0
while n > 0:
    n //= 10  # this is equivalent to n = n // 10
    length += 1
print(length)  # 4
1, chúng tôi đếm xem chúng tôi đã làm điều đó bao nhiêu lần

Trong Python có một cách khác dễ dàng hơn để giải quyết vấn đề này.

n = int(input())
length = 0
while n > 0:
    n //= 10  # this is equivalent to n = n // 10
    length += 1
print(length)  # 4
2

Quảng cáo của Google, có thể dựa trên sở thích của bạn

Người ta có thể viết một câu lệnh

n = int(input())
length = 0
while n > 0:
    n //= 10  # this is equivalent to n = n // 10
    length += 1
print(length)  # 4
3 sau thân vòng lặp được thực hiện một lần sau khi kết thúc vòng lặp

None
i = 1
while i <= 10:
    print(i)
    i += 1
else:
    print('Loop ended, i =', i)

Thoạt nhìn, câu lệnh này dường như không có ý nghĩa gì, bởi vì phần thân câu lệnh

n = int(input())
length = 0
while n > 0:
    n //= 10  # this is equivalent to n = n // 10
    length += 1
print(length)  # 4
3 chỉ có thể được đặt sau khi kết thúc vòng lặp. Câu lệnh "else" sau một vòng lặp chỉ có ý nghĩa khi được sử dụng kết hợp với lệnh
n = int(input())
length = 0
while n > 0:
    n //= 10  # this is equivalent to n = n // 10
    length += 1
print(length)  # 4
5. Nếu trong quá trình thực thi vòng lặp, trình thông dịch Python gặp phải
n = int(input())
length = 0
while n > 0:
    n //= 10  # this is equivalent to n = n // 10
    length += 1
print(length)  # 4
5, nó sẽ ngay lập tức dừng thực thi vòng lặp và thoát khỏi vòng lặp đó. Trong trường hợp này, nhánh
n = int(input())
length = 0
while n > 0:
    n //= 10  # this is equivalent to n = n // 10
    length += 1
print(length)  # 4
3 không được thực thi. Vì vậy,
n = int(input())
length = 0
while n > 0:
    n //= 10  # this is equivalent to n = n // 10
    length += 1
print(length)  # 4
5 được sử dụng để hủy bỏ việc thực hiện vòng lặp ở giữa bất kỳ lần lặp nào

Đây là một ví dụ giống như Black Jack. một chương trình đọc các số và tính tổng cho đến khi tổng lớn hơn hoặc bằng 21. Dãy nhập kết thúc bằng 0 để chương trình có thể dừng ngay cả khi tổng của tất cả các số nhỏ hơn 21

Hãy xem nó hoạt động như thế nào trên các đầu vào khác nhau

Phiên bản 1. Vòng lặp được thoát bình thường sau khi kiểm tra điều kiện, vì vậy nhánh "else" được thực hiện

2
4
7
0
total_sum = 0
a = int(input())
while a != 0:
    total_sum += a
    if total_sum >= 21:
        print('Total sum is', total_sum)
        break
    a = int(input())
else:
    print('Total sum is less than 21 and is equal to', total_sum, '.')

Phiên bản 2. Vòng lặp bị hủy bỏ bởi

n = int(input())
length = 0
while n > 0:
    n //= 10  # this is equivalent to n = n // 10
    length += 1
print(length)  # 4
5, vì vậy nhánh "else" bị bỏ qua

9
9
5
4
0
total_sum = 0
a = int(input())
while a != 0:
    total_sum += a
    if total_sum >= 21:
        print('Total sum is', total_sum)
        break
    a = int(input())
else:
    print('Total sum is less than 21 and is equal to', total_sum, '.')

Nhánh "Else" cũng có thể được sử dụng với vòng lặp "for". Hãy xem ví dụ khi chương trình đọc 5 số nguyên nhưng dừng ngay khi gặp số nguyên âm đầu tiên

Phiên bản 1. Vòng lặp được thoát bình thường, vì vậy nhánh "else" được thực thi

1
4
9
16
25
36
49
64
81
100
1____36_______2

Phiên bản 2. Vòng lặp bị hủy bỏ, vì vậy nhánh "else" không được thực thi

1
4
9
16
25
36
49
64
81
100
3_______36_______2

Quảng cáo của Google, có thể dựa trên sở thích của bạn

Một hướng dẫn khác được sử dụng để kiểm soát việc thực hiện vòng lặp là

None
0. Nếu trình thông dịch Python đáp ứng
None
0 ở đâu đó giữa vòng lặp, nó sẽ bỏ qua tất cả các hướng dẫn còn lại và chuyển sang bước lặp tiếp theo

None
1
4
9
16
25
36
49
64
81
100
6

Nếu

n = int(input())
length = 0
while n > 0:
    n //= 10  # this is equivalent to n = n // 10
    length += 1
print(length)  # 4
5 và
None
0 được đặt bên trong một số vòng lặp lồng nhau, thì chúng chỉ ảnh hưởng đến việc thực hiện vòng lặp trong cùng. Hãy xem ví dụ khá ngớ ngẩn để chứng minh điều đó

None
1
4
9
16
25
36
49
64
81
100
8

Các hướng dẫn

n = int(input())
length = 0
while n > 0:
    n //= 10  # this is equivalent to n = n // 10
    length += 1
print(length)  # 4
5 và
None
0 không được khuyến khích, nếu bạn có thể thực hiện ý tưởng của mình mà không cần sử dụng chúng. Đây là một ví dụ điển hình về việc sử dụng sai
n = int(input())
length = 0
while n > 0:
    n //= 10  # this is equivalent to n = n // 10
    length += 1
print(length)  # 4
5. mã này đếm số chữ số trong một số nguyên

1
4
9
16
25
36
49
64
81
100
9
i = 1
while i <= 10:
    print(i ** 2)
    i += 1
0

Viết lại vòng lặp này với một điều kiện vòng lặp có ý nghĩa sẽ rõ ràng và dễ đọc hơn

1
4
9
16
25
36
49
64
81
100
9
i = 1
while i <= 10:
    print(i ** 2)
    i += 1
2

Quảng cáo của Google, có thể dựa trên sở thích của bạn

Trong Python, một câu lệnh gán có thể thay đổi giá trị của một số biến. Hãy xem nào

Hiệu ứng được chứng minh ở trên mã có thể được viết là

Sự khác biệt giữa hai phiên bản là phép gán nhiều thay đổi đồng thời giá trị của hai biến

Phép gán nhiều lần rất hữu ích khi bạn cần trao đổi giá trị của hai biến. Trong các ngôn ngữ lập trình cũ hơn mà không có sự hỗ trợ của phép gán nhiều lần, điều này có thể được thực hiện bằng cách sử dụng biến phụ trợ

None
i = 1
while i <= 10:
    print(i ** 2)
    i += 1
4

Trong Python, cùng một giao dịch hoán đổi có thể được viết trong một dòng

None
i = 1
while i <= 10:
    print(i ** 2)
    i += 1
6

Phía bên trái của "=" phải có danh sách tên biến được phân tách bằng dấu phẩy. Phía bên tay phải có thể là bất kỳ biểu thức nào, được phân tách bằng dấu phẩy. Danh sách bên trái và bên phải phải có độ dài bằng nhau