You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整嵌套for循环实现训练重量计算器的练习与重量对应输出?

解决方案

你的核心问题是循环结构错误——原代码在外层遍历训练最大值时,内层会把所有练习都打印一遍,导致每个重量组前都输出全部练习。要实现练习与对应训练最大值一一绑定的输出,需要同时遍历两个列表的对应元素,而非嵌套循环。

调整后的代码如下:

# 假设exercises和training_max已经是用户输入后的列表
for count, (exercise, tm) in enumerate(zip(exercises, training_max), 1):
    print(count, ') ', exercise, sep='')
    # 提前转换为浮点型,避免重复计算
    tm_float = float(tm)
    print(f'Week 1 -  {round(0.65 * tm_float, 2)}x5, {round(0.75 * tm_float, 2)}x5, {round(0.85 * tm_float, 2)}x5+')
    print(f'Week 2 -  {round(0.70 * tm_float, 2)}x3, {round(0.80 * tm_float, 2)}x3, {round(0.90 * tm_float, 2)}x3+')
    print(f'Week 3 -  {round(0.75 * tm_float, 2)}x5, {round(0.85 * tm_float, 2)}x3, {round(0.95 * tm_float, 2)}x1+')
    print(f'Week 4 -  {round(0.40 * tm_float, 2)}x5, {round(0.50 * tm_float, 2)}x5, {round(0.60 * tm_float, 2)}x5')
    # 添加空行分隔不同练习,提升可读性
    print()

关键调整说明:

  • 用zip(exercises, training_max)将两个列表的对应元素配对,确保每次循环拿到的是同一个练习及其对应的训练最大值。
  • 通过enumerate直接获取练习的序号,无需单独维护计数变量。
  • 提前转换tm为浮点型,减少重复计算;改用f-string简化打印语句(也可保留原写法,f-string更简洁直观)。

修改后的输出示例:

1) 卧推
Week 1 -  65.0x5, 75.0x5, 85.0x5+
Week 2 -  70.0x3, 80.0x3, 90.0x3+
Week 3 -  75.0x5, 85.0x3, 95.0x1+
Week 4 -  40.0x5, 50.0x5, 60.0x5

2) 硬拉
Week 1 -  130.0x5, 150.0x5, 170.0x5+
...

内容的提问来源于stack exchange,提问作者Privlak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 02:25:27