Python中for循环的用法与常见问题

number=33
for i in range(3):
while i:
guess=int(input(‘Enter an integer :’))
if guess==number:
print(‘Congratulations, you guessed it.’)
print(’(but you do not win any prizes!)’)
break
elif guess<=number-5:
print(‘No, it is a little higher than that’)
elif abs(guess-number)<5:
print(‘很接近了!’)
else:
print(‘No, it is a little lower than that’)
else:
print(‘test’)
print(‘Done’)
------------------------------------------------------------
第一次执行什么参数都没输入为什么会执行>>print(‘test’)
>>print(‘test’)的缩进级别与 while 一致
Python中for循环的用法与常见问题


14 回复

Python里的for循环是遍历序列(列表、元组、字符串)或可迭代对象的利器,核心是for item in iterable:。新手常见几个坑:

  1. 遍历时修改列表:这会导致意外跳过元素或错误。比如想删除列表中的偶数:

    # 错误示范
    numbers = [1, 2, 3, 4, 5]
    for num in numbers:
        if num % 2 == 0:
            numbers.remove(num)  # 直接修改原列表,迭代会出问题
    print(numbers)  # 输出可能是 [1, 3, 5],但也可能出错或结果不对
    

    正确做法:遍历副本或使用列表推导式。

    # 方法1:遍历副本
    numbers = [1, 2, 3, 4, 5]
    for num in numbers[:]:  # 使用切片创建副本
        if num % 2 == 0:
            numbers.remove(num)
    print(numbers)  # 输出 [1, 3, 5]
    
    # 方法2:列表推导式(更Pythonic)
    numbers = [1, 2, 3, 4, 5]
    numbers = [num for num in numbers if num % 2 != 0]
    print(numbers)  # 输出 [1, 3, 5]
    
  2. 忘记缩进:Python严格依赖缩进定义循环体,没缩进的代码不会在循环内执行。

    # 错误
    for i in range(3):
    print(i)  # 会报IndentationError
    
    # 正确
    for i in range(3):
        print(i)  # 必须缩进
    
  3. 混淆range的用法range(start, stop, step)生成从startstop-1的整数。range(5)是0到4,不包括5。

  4. 需要索引时没用enumerate:遍历时既要元素又要索引,用enumerate最方便。

    fruits = ['apple', 'banana', 'cherry']
    for index, fruit in enumerate(fruits):
        print(f"Index {index}: {fruit}")
    
  5. 遍历字典:直接遍历字典得到的是键。用.items()同时获取键值对。

    my_dict = {'a': 1, 'b': 2}
    for key in my_dict:
        print(key)  # 输出 'a', 'b'
    for key, value in my_dict.items():
        print(key, value)  # 输出 'a' 1, 'b' 2
    

总结:遍历别改原列表,缩进要对,善用enumerate.items()

代码不是这样贴的啊。

关键字,循环语句 else,百度下?

难得你还知道补一句
缩进

你让我怎么面向游标卡尺编程

我有百度过,答案都不是我想要的,我把最后一个[else 的缩进级别提升到 for]&[从 1 开始 for]就不会出现这种情况;就是不太明白为什么 0 就会先执行与 while 缩进级别一致的 else

新人哈,不太懂怎么 V2EX 的编辑功能
PS.我连提问后编辑都找不到在哪

建议撤了,重新贴代码

while i 是啥,是 while 1 么?

while 变量 i (字母 i)

明白,谢谢

请问如何避免这种 0 与布尔型变量混用,在这个语句中有哪些方法可以实现

回到顶部