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

Python中如何通过条件修改一组变量的取值?

你的代码存在多个问题,逐一分析并修正:

核心错误点

  • map() 使用不当:map() 不会直接修改原列表,它返回一个迭代器对象,必须将其转换为列表才能得到处理后的结果。另外,原列表存储的是 a、b、c 的值副本,修改列表元素不会同步改变原变量。
  • percentage 函数逻辑混乱:
    • 缩进错误:i += 1 写在函数体外,导致函数内的 while 循环会无限执行(i 永远是0),且循环逻辑本身不符合「按比例调整」的需求。
    • 函数内修改的是局部变量 n,整数是不可变类型,函数内的赋值只会创建新对象,无法影响传入的原始值。
  • 变量命名冲突:用 list 作为变量名会覆盖Python内置的 list 类型,容易引发后续问题。
  • 原变量与列表元素不同步:a、b、c 是独立变量,列表存储的是它们的值副本,修改列表元素不会改变这些变量的原始值。

修正后的代码示例

如果你的需求是将数值按20%比例调整(若要执行7次乘20%,可看下方补充):

# 避免使用list作为变量名,改用speed_list
speed_list = [1, 2, 3]

def percentage(n):
    # 按20%比例调整,返回处理后的值
    return n * 0.2

sample = input("Enter a string: ")

if sample == "Fox":
    # 将map返回的迭代器转为列表,覆盖原列表
    speed_list = list(map(percentage, speed_list))
    # 解包列表,同步更新a、b、c的值
    a, b, c = speed_list

cat1 = f"The fox ran at a speed of {a}."
cat2 = f"The shark swam at a speed of {b}."
cat3 = f"The bird flew at a speed of {c}."

print(cat1, cat2, cat3)
print(speed_list)

若需要执行7次乘20%的逻辑,修改 percentage 函数即可:

def percentage(n):
    result = n
    # 循环7次执行乘20%操作
    for _ in range(7):
        result *= 0.2
    return result

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:20:31