最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python for循環(huán)的完整指南(含用例)

 更新時間:2026年02月25日 09:36:13   作者:破曉之翼  
for 循環(huán)是 Python 中最核心的迭代結(jié)構(gòu),它能夠遍歷任何可迭代對象,并對每個元素執(zhí)行指定的操作,本文將系統(tǒng)講解 for 循環(huán)的基本語法、常用場景,需要的朋友可以參考下

for 循環(huán)是 Python 中最核心的迭代結(jié)構(gòu),它能夠遍歷任何可迭代對象(如列表、元組、字符串、字典、集合、文件對象等),并對每個元素執(zhí)行指定的操作。與其他語言(如 C 的 for (i=0; i<n; i++))不同,Python 的 for 更接近“foreach”風(fēng)格,專注于遍歷序列或集合中的元素,語法簡潔且功能強大。

本文將系統(tǒng)講解 for 循環(huán)的基本語法、常用場景,并通過楊輝三角打印數(shù)獨求解器兩個綜合案例,展示 for 循環(huán)在實際編程中的靈活應(yīng)用。

1. 基本語法與常用場景

1.1 語法結(jié)構(gòu)

for 變量 in 可迭代對象:
    循環(huán)體
else:                # 可選,當(dāng)循環(huán)正常結(jié)束(沒有被 break 中斷)時執(zhí)行
    語句塊
  • 變量:每次迭代從可迭代對象中取出一個元素賦值給該變量。
  • 可迭代對象:包括列表、元組、字符串、字典、集合、range 對象、文件對象、生成器等。
  • 循環(huán)體:需要重復(fù)執(zhí)行的代碼塊,注意縮進。
  • else 子句:可選,當(dāng)循環(huán)未被 break 終止時執(zhí)行。

1.2 常用遍歷場景

遍歷列表

fruits = ["蘋果", "香蕉", "橙子"]
for fruit in fruits:
    print(f"我喜歡吃 {fruit}")
# 輸出:
# 我喜歡吃 蘋果
# 我喜歡吃 香蕉
# 我喜歡吃 橙子

遍歷元組

coordinates = (10, 20, 30)
for coord in coordinates:
    print(f"坐標(biāo)值: {coord}")

遍歷字符串(字符序列)

message = "Python"
for char in message:
    print(char, end="-")   # 輸出:P-y-t-h-o-n-

遍歷字典

person = {"name": "張三", "age": 30, "city": "北京"}

# 遍歷鍵(默認)
for key in person:
    print(key)          # 輸出:name age city

# 遍歷值
for value in person.values():
    print(value)        # 輸出:張三 30 北京

# 同時遍歷鍵和值
for key, value in person.items():
    print(f"{key}: {value}")

使用range()生成數(shù)字序列

# 生成 0 到 4
for i in range(5):
    print(i, end=" ")   # 輸出:0 1 2 3 4

# 生成 2 到 8,步長為 2
for i in range(2, 9, 2):
    print(i, end=" ")   # 輸出:2 4 6 8

# 使用索引遍歷列表
fruits = ["蘋果", "香蕉", "橙子"]
for i in range(len(fruits)):
    print(f"索引 {i}: {fruits[i]}")

使用enumerate()同時獲取索引和元素

fruits = ["蘋果", "香蕉", "橙子"]
for index, fruit in enumerate(fruits):
    print(f"索引 {index}: {fruit}")

使用zip()并行遍歷多個可迭代對象

names = ["張三", "李四", "王五"]
scores = [85, 92, 78]

for name, score in zip(names, scores):
    print(f"{name} 的分數(shù)是 {score}")

循環(huán)控制:break和continue

# 查找第一個偶數(shù)
numbers = [1, 3, 5, 8, 9, 10]
for num in numbers:
    if num % 2 == 0:
        print(f"找到偶數(shù): {num}")
        break          # 立即退出循環(huán)

# 跳過偶數(shù),打印奇數(shù)
for num in numbers:
    if num % 2 == 0:
        continue       # 跳過本次循環(huán)剩余部分
    print(num)

for...else結(jié)構(gòu)

# 檢查列表中是否有偶數(shù)
numbers = [1, 3, 5, 7, 9]
for num in numbers:
    if num % 2 == 0:
        print("發(fā)現(xiàn)偶數(shù)!")
        break
else:
    print("沒有偶數(shù)。")   # 因為循環(huán)未被 break,所以執(zhí)行

列表推導(dǎo)式(簡潔的for循環(huán))

# 生成 0~9 的平方列表
squares = [x**2 for x in range(10)]
print(squares)   # 輸出:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 帶條件的推導(dǎo)式(只保留偶數(shù))
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares)  # 輸出:[0, 4, 16, 36, 64]

遍歷文件對象

with open("example.txt", "r", encoding="utf-8") as f:
    for line in f:
        print(line, end="")   # 逐行打印

2. 案例一:打印楊輝三角(數(shù)字金字塔)

楊輝三角(Pascal’s Triangle)是一個經(jīng)典的數(shù)學(xué)圖形,每一行由組合數(shù)構(gòu)成,滿足:

  • 第 n 行有 n+1 個數(shù)字(行號從 0 開始)。
  • 首尾數(shù)字為 1。
  • 內(nèi)部數(shù)字等于上一行相鄰兩數(shù)之和:triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]

2.1 使用組合數(shù)公式(math.comb)

import math

def print_pascal_comb(n):
    """打印 n 行的楊輝三角,使用組合數(shù)公式"""
    for row in range(n):
        # 打印前導(dǎo)空格,使三角形居中
        print(" " * (n - row - 1) * 3, end="")  # 每個數(shù)字占3位,乘3對齊
        for col in range(row + 1):
            num = math.comb(row, col)
            print(f"{num:3}", end=" ")
        print()

print_pascal_comb(6)

輸出:

               1 
             1   1 
           1   2   1 
         1   3   3   1 
       1   4   6   4   1 
     1   5  10  10   5   1 

for 循環(huán)點睛:

  • 外層 for row 控制行數(shù)。
  • 內(nèi)層 for col 遍歷每一行的元素,用組合數(shù)計算值。
  • 前導(dǎo)空格數(shù)量隨行數(shù)遞減,實現(xiàn)居中效果。

2.2 使用迭代生成(遞推關(guān)系)

def print_pascal_iter(rows):
    """打印 rows 行的楊輝三角,使用迭代生成"""
    triangle = []  # 存儲整個三角形
    for i in range(rows):
        row = [1] * (i + 1)          # 初始化為全1,首尾已正確
        for j in range(1, i):        # 從第2個到倒數(shù)第2個
            row[j] = triangle[i-1][j-1] + triangle[i-1][j]
        triangle.append(row)

    # 打印三角形
    max_width = len(str(max(triangle[-1])))  # 最大數(shù)字寬度
    for i, row in enumerate(triangle):
        print(" " * (rows - i - 1) * (max_width + 1), end="")
        for num in row:
            print(f"{num:{max_width}d}", end=" ")
        print()

print_pascal_iter(8)

輸出:

                1 
               1 1 
              1 2 1 
             1 3 3 1 
            1 4 6 4 1 
           1 5 10 10 5 1 
          1 6 15 20 15 6 1 
         1 7 21 35 35 21 7 1 

for 循環(huán)點睛:

  • 外層 for i 逐行構(gòu)建。
  • 內(nèi)層 for j 根據(jù)上一行計算當(dāng)前行中間值。
  • 打印部分再次使用嵌套 for 控制對齊。

3. 案例二:數(shù)獨求解器(回溯算法)

數(shù)獨是 9×9 的網(wǎng)格,每行、每列和每個 3×3 宮(共 9 個)必須包含 1-9 各一次。我們將用 for 循環(huán)實現(xiàn)回溯法求解。

3.1 數(shù)獨的表示

空白格用 0 表示,示例數(shù)獨:

5 3 . | . 7 . | . . .
6 . . | 1 9 5 | . . .
. 9 8 | . . . | . 6 .
------+-------+------
8 . . | . 6 . | . . 3
4 . . | 8 . 3 | . . 1
7 . . | . 2 . | . . 6
------+-------+------
. 6 . | . . . | 2 8 .
. . . | 4 1 9 | . . 5
. . . | . 8 . | . 7 9

3.2 合法性檢查函數(shù)

def is_valid(board, row, col, num):
    """檢查在 (row, col) 處填入 num 是否合法"""
    # 檢查行
    for j in range(9):
        if board[row][j] == num:
            return False

    # 檢查列
    for i in range(9):
        if board[i][col] == num:
            return False

    # 檢查所在 3x3 宮
    start_row, start_col = 3 * (row // 3), 3 * (col // 3)
    for i in range(start_row, start_row + 3):
        for j in range(start_col, start_col + 3):
            if board[i][j] == num:
                return False

    return True

for 循環(huán)點睛:

  • 三個獨立的 for 循環(huán)分別掃描行、列、宮。
  • 宮內(nèi)使用雙重 for 遍歷 3×3 區(qū)域。

3.3 回溯求解函數(shù)

def solve_sudoku(board):
    """使用回溯法求解數(shù)獨(修改原 board),返回是否找到解"""
    for i in range(9):
        for j in range(9):
            if board[i][j] == 0:          # 找到空白格
                for num in range(1, 10):  # 嘗試 1-9
                    if is_valid(board, i, j, num):
                        board[i][j] = num
                        if solve_sudoku(board):  # 遞歸求解剩余部分
                            return True
                        board[i][j] = 0          # 回溯
                return False               # 無解,回溯
    return True                             # 無空白格,求解完成

for 循環(huán)點睛:

  • 雙重 for 遍歷整個棋盤,定位空白格。
  • 內(nèi)層 for num 枚舉所有候選數(shù)字,依次嘗試。
  • 遞歸調(diào)用自身繼續(xù)求解,利用 for 循環(huán)實現(xiàn)深度優(yōu)先搜索。

3.4 打印函數(shù)

def print_sudoku(board):
    """美觀打印數(shù)獨棋盤"""
    for i in range(9):
        if i % 3 == 0 and i != 0:
            print("-" * 21)               # 每三行打印橫線
        for j in range(9):
            if j % 3 == 0 and j != 0:
                print("|", end=" ")       # 每三列打印豎線
            print(board[i][j] if board[i][j] != 0 else ".", end=" ")
        print()

for 循環(huán)點睛:

  • 外層 for i 控制行,內(nèi)層 for j 控制列。
  • 利用 % 運算符在適當(dāng)位置添加分隔符,使棋盤清晰。

3.5 完整測試

# 定義數(shù)獨(同上)
sudoku = [
    [5, 3, 0, 0, 7, 0, 0, 0, 0],
    [6, 0, 0, 1, 9, 5, 0, 0, 0],
    [0, 9, 8, 0, 0, 0, 0, 6, 0],
    [8, 0, 0, 0, 6, 0, 0, 0, 3],
    [4, 0, 0, 8, 0, 3, 0, 0, 1],
    [7, 0, 0, 0, 2, 0, 0, 0, 6],
    [0, 6, 0, 0, 0, 0, 2, 8, 0],
    [0, 0, 0, 4, 1, 9, 0, 0, 5],
    [0, 0, 0, 0, 8, 0, 0, 7, 9]
]

print("原始數(shù)獨:")
print_sudoku(sudoku)

if solve_sudoku(sudoku):
    print("\n解出的數(shù)獨:")
    print_sudoku(sudoku)
else:
    print("無解")

輸出(節(jié)選):

原始數(shù)獨:
5 3 . | . 7 . | . . . 
6 . . | 1 9 5 | . . . 
. 9 8 | . . . | . 6 . 
------+-------+------
8 . . | . 6 . | . . 3 
4 . . | 8 . 3 | . . 1 
7 . . | . 2 . | . . 6 
------+-------+------
. 6 . | . . . | 2 8 . 
. . . | 4 1 9 | . . 5 
. . . | . 8 . | . 7 9 

解出的數(shù)獨:
5 3 4 | 6 7 8 | 9 1 2 
6 7 2 | 1 9 5 | 3 4 8 
1 9 8 | 3 4 2 | 5 6 7 
------+-------+------
8 5 9 | 7 6 1 | 4 2 3 
4 2 6 | 8 5 3 | 7 9 1 
7 1 3 | 9 2 4 | 8 5 6 
------+-------+------
9 6 1 | 5 3 7 | 2 8 4 
2 8 7 | 4 1 9 | 6 3 5 
3 4 5 | 2 8 6 | 1 7 9 

4. 總結(jié)

通過上述案例,我們可以看到 for 循環(huán)在 Python 編程中的核心地位:

  • 遍歷數(shù)據(jù):無論是簡單的列表、字典,還是復(fù)雜的二維網(wǎng)格,for 循環(huán)都能輕松遍歷。
  • 枚舉嘗試:在數(shù)獨求解中,for num in range(1,10) 枚舉所有可能數(shù)字,是回溯算法的基石。
  • 模式生成:楊輝三角的每一行都通過 for 循環(huán)遞推構(gòu)建,體現(xiàn)了循環(huán)與數(shù)學(xué)規(guī)律的結(jié)合。
  • 格式化輸出:利用 for 循環(huán)控制打印格式,可以輸出美觀的圖形(如數(shù)獨棋盤、楊輝三角)。

掌握 for 循環(huán),是通往 Python 編程高手的重要一步。希望本文的講解和案例能幫助你更深入地理解并靈活運用這一強大的工具。

以上就是Python for循環(huán)的完全指南(含用例)的詳細內(nèi)容,更多關(guān)于Python for循環(huán)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python3實現(xiàn)SMTP發(fā)送郵件的實戰(zhàn)指南

    Python3實現(xiàn)SMTP發(fā)送郵件的實戰(zhàn)指南

    ,本文詳細介紹 Python3 借助smtplib和email庫實現(xiàn) SMTP 郵件發(fā)送的方法,從基礎(chǔ)到實戰(zhàn)覆蓋多場景,先講解 SMTP 協(xié)議定義及兩核心庫功能,再說明創(chuàng)建 SMTP 對象和使用sendmail方法的核心語法與參數(shù),需要的朋友可以參考下
    2025-10-10
  • Python實現(xiàn)復(fù)雜的事件驅(qū)動架構(gòu)

    Python實現(xiàn)復(fù)雜的事件驅(qū)動架構(gòu)

    事件驅(qū)動架構(gòu)(Event-Driven?Architecture,?EDA)是一種軟件設(shè)計模式,它基于事件的產(chǎn)生、傳播和處理進行系統(tǒng)的構(gòu)建,下面我們來看看如何在?Python?中實現(xiàn)復(fù)雜的事件驅(qū)動架構(gòu)吧
    2024-12-12
  • 優(yōu)化Python代碼的實用技巧分享

    優(yōu)化Python代碼的實用技巧分享

    有時候,寫代碼就像是一場馬拉松,盡管已經(jīng)盡全力跑了很久,但依然覺得離目標(biāo)遙不可及,今天就讓我們一起來探討一下,如何讓Python代碼跑得更快,給它加速,本文將從幾個實用的角度出發(fā),帶你了解如何優(yōu)化Python代碼,提升其執(zhí)行效率,需要的朋友可以參考下
    2025-08-08
  • python實現(xiàn)拼接圖片

    python實現(xiàn)拼接圖片

    這篇文章主要為大家詳細介紹了python實現(xiàn)拼接圖片,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 一文掌握6種Python中常用數(shù)據(jù)庫操作及代碼

    一文掌握6種Python中常用數(shù)據(jù)庫操作及代碼

    在數(shù)據(jù)處理和管理領(lǐng)域,Python作為一種高效、易用的編程語言,擁有豐富的數(shù)據(jù)庫操作模塊,可以輕松實現(xiàn)對關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)操作,本文將介紹六種常見的Python數(shù)據(jù)庫操作模塊,需要的可以參考下
    2023-12-12
  • 用django-allauth實現(xiàn)第三方登錄的示例代碼

    用django-allauth實現(xiàn)第三方登錄的示例代碼

    這篇文章主要介紹了用django-allauth實現(xiàn)第三方登錄的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • Python SQLAlchemy簡介及基本用法

    Python SQLAlchemy簡介及基本用法

    SQLAlchemy是一個基于Python實現(xiàn)的ORM對象關(guān)系映射框架,該框架建立在DB API之上,使用關(guān)系對象映射進行數(shù)據(jù)庫操作,這篇文章主要介紹了SQLAlchemy簡介以及基本使用,需要的朋友可以參考下
    2023-08-08
  • 一篇文章搞懂Python的文件路徑操作

    一篇文章搞懂Python的文件路徑操作

    這篇文章主要給大家介紹了關(guān)于Python文件路徑操作的相關(guān)資料,在python中我們會經(jīng)常的對文件使用路徑,文件路徑通常有兩種,分別為絕對路徑、相對路徑,需要的朋友可以參考下
    2023-07-07
  • python?tkinter實現(xiàn)彈窗的輸入輸出

    python?tkinter實現(xiàn)彈窗的輸入輸出

    這篇文章主要為大家詳細介紹了python?tkinter實現(xiàn)彈窗的輸入輸出,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Python協(xié)程操作之gevent(yield阻塞,greenlet),協(xié)程實現(xiàn)多任務(wù)(有規(guī)律的交替協(xié)作執(zhí)行)用法詳解

    Python協(xié)程操作之gevent(yield阻塞,greenlet),協(xié)程實現(xiàn)多任務(wù)(有規(guī)律的交替協(xié)作執(zhí)行)用法詳解

    這篇文章主要介紹了Python協(xié)程操作之gevent(yield阻塞,greenlet),協(xié)程實現(xiàn)多任務(wù)(有規(guī)律的交替協(xié)作執(zhí)行)用法,結(jié)合實例形式較為詳細的分析了協(xié)程的功能、原理及gevent、greenlet實現(xiàn)協(xié)程,以及協(xié)程實現(xiàn)多任務(wù)相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10

最新評論

宣武区| 永川市| 柳林县| 息烽县| 乌鲁木齐市| 商南县| 贵定县| 汝南县| 金昌市| 奉贤区| 凤庆县| 新乐市| 漳平市| 平安县| 寿宁县| 祁东县| 罗田县| 昭通市| 疏附县| 天祝| 四子王旗| 鹰潭市| 黄梅县| 宿松县| 卢湾区| 宝山区| 达尔| 紫阳县| 屯昌县| 奉新县| 三穗县| 扶绥县| 乐清市| 澳门| 玉田县| 阿图什市| 卢湾区| 玉溪市| 虹口区| 屯昌县| 于田县|