循环语句基础

Python 中的循环语句主要包括 for 循环和 while 循环,用于重复执行代码块。循环的声明和使用可以通过以下方式实现:

# for 循环遍历序列
for i in range(5):
    print(i)

# while 循环基于条件
count = 0
while count < 5:
    print(count)
    count += 1
循环输入与输出

使用内置函数可以方便地进行循环中的输入和输出操作:

def main():
    # 循环读取用户输入直到输入 quit
    while True:
        name = input("Enter your name (or 'quit' to exit): ")
        if name.lower() == 'quit':
            break
        print(f"Hello, {name}!")

if __name__ == "__main__":
    main()
常用循环控制语句

Python 提供了丰富的循环控制关键字:

def main():
    numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    # 遍历列表
    for num in numbers:
        # 跳过偶数
        if num % 2 == 0:
            continue
        print(f"Odd number: {num}")
        
        # 找到第一个大于 5 的奇数后退出
        if num > 5:
            break
    
    # 循环正常结束时执行 else
    for i in range(3):
        print(f"Iteration {i}")
    else:
        print("Loop completed normally")

if __name__ == "__main__":
    main()
循环与迭代器

循环与迭代器密切相关,Python 的 for 循环本质上是对迭代器的遍历:

def main():
    text = "Iterator"
    # 字符串本身就是可迭代对象
    for char in text:
        print(char, end=' ')
    print()
    
    # 使用 iter() 显式创建迭代器
    iterator = iter(text)
    while True:
        try:
            char = next(iterator)
            print(char, end=' ')
        except StopIteration:
            break
    print()

if __name__ == "__main__":
    main()
嵌套循环

处理多维数据时可以使用嵌套循环:

def main():
    # 二维列表
    matrix = [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]
    ]
    
    # 嵌套 for 循环遍历二维列表
    for row in matrix:
        for element in row:
            print(element, end='\t')
        print()
    
    # 使用列表推导式(更 Pythonic 的方式)
    flat = [element for row in matrix for element in row]
    print(f"Flattened: {flat}")

if __name__ == "__main__":
    main()
循环操作示例

字符串遍历和分割是常见操作,可以使用循环配合内置方法实现:

def main():
    text = "apple,orange,banana"
    
    # 使用 for 循环手动分割字符串
    current = ""
    for char in text:
        if char == ',':
            print(current)
            current = ""
        else:
            current += char
    print(current)  # 输出最后一个部分
    
    # 更简洁的方式:使用 split()
    print("--- Using split() ---")
    for fruit in text.split(','):
        print(fruit)

if __name__ == "__main__":
    main()
安全循环处理

为防止无限循环和资源耗尽,推荐使用安全的循环写法:

def main():
    # 设置最大迭代次数防止无限循环
    max_attempts = 10
    attempts = 0
    
    while attempts < max_attempts:
        user_input = input("Enter a number: ")
        if user_input.isdigit():
            print(f"You entered: {int(user_input)}")
            break
        attempts += 1
        print(f"Invalid input. {max_attempts - attempts} attempts remaining.")
    else:
        # 循环正常结束(未触发 break)
        print("Maximum attempts reached.")
    
    # 使用 enumerate 获取索引和值,避免手动维护计数器
    items = ["apple", "banana", "cherry"]
    for index, item in enumerate(items):
        print(f"{index}: {item}")

if __name__ == "__main__":
    main()
自定义循环工具

实现自定义的循环辅助函数可以加深对迭代的理解:

def my_enumerate(iterable, start=0):
    """自定义枚举函数"""
    index = start
    for item in iterable:
        yield index, item
        index += 1

def my_range(start, stop=None, step=1):
    """自定义范围生成器"""
    if stop is None:
        stop = start
        start = 0
    current = start
    while (step > 0 and current < stop) or (step < 0 and current > stop):
        yield current
        current += step

def main():
    # 测试自定义 enumerate
    colors = ["red", "green", "blue"]
    for idx, color in my_enumerate(colors, 1):
        print(f"{idx}. {color}")
    
    # 测试自定义 range
    print("Custom range:", list(my_range(1, 10, 2)))

if __name__ == "__main__":
    main()
性能注意事项

循环操作在 Python 中需要特别注意性能和效率问题:

  • 避免在循环中进行重复计算,将不变量提取到循环外
  • 优先使用内置函数和生成器表达式处理大数据集
  • 考虑使用 map()filter() 或列表推导式替代简单循环
  • 对于数值计算,考虑使用 NumPy 等库进行向量化操作

以上代码示例涵盖了 Python3 循环语句的主要概念和操作,从基础用法到高级技巧,为开发者提供了全面的参考。

更多推荐