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

如何从4个变量中随机修改2个变量的值为'—'?

解决方法

你遇到的问题核心在于:random.choice()返回的是变量的值而非变量本身,所以无法直接对返回值赋值。下面提供两种兼顾高效性与可读性的实现方案:

方案一:基于列表的简洁实现

这种方法利用列表存储变量值,通过随机选择索引修改值,最后重新映射回原变量,逻辑清晰且高效:

from random import sample

# 初始化变量
a = 10
b = 18
c = 15
d = 92

# 将变量存入列表便于批量操作
var_list = [a, b, c, d]
# 随机挑选2个不重复的索引(避免重复修改同一个变量)
target_indices = sample(range(4), 2)
# 修改选中位置的值
for idx in target_indices:
    var_list[idx] = '—'
# 将修改后的值重新赋值给原变量
a, b, c, d = var_list

print(a, b, c, d)

方案二:基于字典的直观实现

如果希望更明确地关联变量名与值,可使用字典存储,可读性更强:

from random import sample

# 用字典存储变量名与对应值
var_dict = {
    'a': 10,
    'b': 18,
    'c': 15,
    'd': 92
}

# 随机选择2个变量名
target_keys = sample(var_dict.keys(), 2)
# 修改选中变量的值
for key in target_keys:
    var_dict[key] = '—'

# 提取修改后的值到原变量
a, b, c, d = var_dict['a'], var_dict['b'], var_dict['c'], var_dict['d']

print(a, b, c, d)

关键说明

  • 使用random.sample()而非choice():sample()可以一次性选出不重复的2个目标,避免两次choice()可能选中同一个变量的问题。
  • 两种方案都保持了代码的可读性:步骤拆分明确,没有复杂的嵌套或魔法操作;同时效率很高,仅需常数时间的操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:40:43