【问题标题】:How to replace element with random elements? [closed]如何用随机元素替换元素? [关闭]
【发布时间】:2020-11-13 09:26:19
【问题描述】:

我想实现迷宫中的每个元素都是随机选择的,但在我的代码中,它总是只有 A、B 或 C。我做错了什么?

import random
new_entry = random.choice(['A ', 'B', 'C'])

def generate(size):
  y =[' '] * size
  #print(y)
  list=[' '] * size
  for i, n in enumerate(list):
    maze[i]= y
  for i in range(len(list)):
    for j in range(len(list)):
      list[i][j]= new_entry
  print(list)

例如,如果 size=2,我希望得到这样的列表: 列表= [[A,B],[C,A]]

【问题讨论】:

  • new_entry 是一个变量,您只需在程序顶部分配一次。之后,您只需重用该值。为了让它每次都给出不同的值,把它变成一个函数(def new_entry)并调用它new_entry()

标签: python arrays list


【解决方案1】:

更新

问题是迷宫的创建方式,请查看以下代码-

import random


def generate(size):
  maze= []
  for i in range(size):
    maze.append([])
    for j in range(size):
      maze[i].append(random.choice(['A ', 'B', 'C']))
  print(maze)

您应该在每个迭代中选择随机值 -

def generate(size):
  y =[' '] * size
  #print(y)
  list=[' '] * size
  for i, n in enumerate(list):
    maze[i]= y
  for i in range(len(list)):
    for j in range(len(list)):
      list[i][j]= random.choice(['A ', 'B', 'C'])
  print(list)

【讨论】:

  • 谢谢!它有效,但是列表中的所有内部列表都相同,我可以以某种方式避免这种情况吗? (比如 list=[[A,B],[A,B]],但我希望得到 list=[[A,C],[B,A]] 或类似的东西。我试图删除 for j部分,但后来我的列表不再是 2D 列表。
  • @Anonym 请看我的更新
  • 建议添加不使用关键字list
  • 我同意,反正修改后的解决方案中没有用到
【解决方案2】:

您在开始时选择了 new_entry 的值,并且每次在 for 循环中使用它时它都应该改变。此代码只是添加了您在函数外部定义的相同值。

【讨论】:

    猜你喜欢
    • 2020-11-30
    • 1970-01-01
    • 2018-02-19
    • 2021-12-31
    • 2023-04-08
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 2019-08-24
    相关资源
    最近更新 更多