有形之手 2024-06-20 12:07 采纳率: 100%
浏览 1
已结题

for循环的一个小问题,python练习

#菜鸟练习题

fruits = ['banana', 'apple',  'mango']
for i in fruits:        # 第二个实例
   print ('当前水果: %s'% i)
结果:
当前水果: banana
当前水果: apple
当前水果: mango

#当我修改了一下

fruits = ['banana', 'apple',  'mango']
for i in fruits:        # 第二个实例
   print ('当前水果: %s'% fruits)
```python

结果是:
当前水果: ['banana', 'apple', 'mango']
当前水果: ['banana', 'apple', 'mango']
当前水果: ['banana', 'apple', 'mango']
fruits = ['banana', 'apple',  'mango']
for i in fruits:        # 第二个实例
   print ('当前水果: %s'% fruit)
```python

结果是
当前水果: mango
当前水果: mango
当前水果: mango

这就不理解了,最后一组代码为什么没有报错,为什么结果是最后的mango?


  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-20 12:07
    关注

    引自免费微信小程序:皆我百晓生

    这个问题的关键在于你对于 for 循环和变量引用的理解。在 Python 中,当你在 for 循环中迭代一个列表时,你其实是在迭代列表中的每一个元素,而不是列表本身。而在你的最后一组代码中,你试图打印 fruit 这个变量,但这个变量并没有在循环中被定义或赋值。所以这里的行为实际上并不是你所期望的。在每次循环迭代时,由于 fruit 没有被定义,Python 会引发一个错误,但由于这个错误没有被捕获,所以程序会继续运行并尝试打印 fruit 变量的值。因为在这个情况下没有定义 fruit,所以它会打印出最后一个在 fruits 列表中的元素,也就是 'mango'。这就是为什么你看到的结果是 'mango' 被重复打印三次。但是实际上这是不正确的行为,并且在实际的编程环境中会引发错误。如果你想打印出列表中的每一个元素,你应该使用 %s 和循环变量 i,就像你在第一个例子中那样。这样你就能得到正确的结果了:

    fruits = ['banana', 'apple',  'mango']
    for i in fruits:        # 第二个实例
       print ('当前水果: %s'% i)
    

    至于你修改后的代码:

    fruits = ['banana', 'apple',  'mango']
    for i in fruits:        # 第二个实例
       print ('当前水果: %s'% fruits)
    

    这里你打印的是整个 fruits 列表而不是循环中的单个元素。由于列表在整个循环过程中并未改变,所以你得到的打印结果是一样的列表。如果你想要在每次循环时打印不同的元素,你应该使用 %s 和循环变量 i。如果你想要打印整个列表的话,你的代码是正确的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月28日
  • 已采纳回答 6月20日
  • 创建了问题 6月20日

悬赏问题

  • ¥15 三分类机器学习模型可视化分析
  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
  • ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
  • ¥30 python,LLM 文本提炼
  • ¥15 关于将inet引入的相关问题
  • ¥15 关于一个倒计时的操作和显示设计
  • ¥15 提问STK的问题,哪位航天领域的同学会啊
  • ¥15 苹果系统的mac m1芯片的笔记本使用ce修改器使用不了
  • ¥15 单相逆变的电压电流双闭环中进行低通滤波PID算法改进
  • ¥15 关于#java#的问题,请各位专家解答!