du_chuan 2019-10-29 21:33 采纳率: 0%
浏览 613

为啥会显示name error错误啊?

[Clang 6.0 (clang-600.0.57)]
Type "help", "copyright", "credits" or "license" for more information.
[evaluate elevation.py]
update_elevation(THREE_BY_THREE_COPY, [1, 0], [1, 1], -2)
Traceback (most recent call last):
Python Shell, prompt 2, line 1
builtins.NameError: name 'THREE_BY_THREE_COPY' is not defined

def update_elevation(elevation_map: List[List[int]], start: List[int],
stop: List[int], delta: int) -> None:
"""Modify elevation map elevation_map so that the elevation of each
cell between cells start and stop, inclusive, changes by amount
delta.

Precondition: elevation_map is a valid elevation map.
              start and stop are valid cells in elevation_map.
              start and stop are in the same row or column or both.
              If start and stop are in the same row,
                  start's column <=  stop's column.
              If start and stop are in the same column,
                  start's row <=  stop's row.
              elevation_map[i, j] + delta >= 1
                  for each cell [i, j] that will change.

>>> THREE_BY_THREE_COPY = [[1, 2, 1],
...                        [4, 6, 5],
...                        [7, 8, 9]]
>>> update_elevation(THREE_BY_THREE_COPY, [1, 0], [1, 1], -2)
>>> THREE_BY_THREE_COPY
[[1, 2, 1], [2, 4, 5], [7, 8, 9]]
>>> FOUR_BY_FOUR_COPY = [[1, 2, 6, 5],
...                      [4, 5, 3, 2],
...                      [7, 9, 8, 1],
...                      [1, 2, 1, 4]]
>>> update_elevation(FOUR_BY_FOUR_COPY, [1, 2], [3, 2], 1)
>>> FOUR_BY_FOUR_COPY
[[1, 2, 6, 5], [4, 5, 4, 2], [7, 9, 9, 1], [1, 2, 2, 4]]

"""
THREE_BY_THREE_COPY = [[1, 2, 1],
...                    [4, 6, 5],
...                    [7, 8, 9]]
FOUR_BY_FOUR_COPY =  [[1, 2, 6, 5],
...                   [4, 5, 3, 2],
...                   [7, 9, 8, 1],
...                   [1, 2, 1, 4]]
if start[0]==stop[0]:
    for num in range(stop[1]-start[1]):
        elevation_map[start[0]][start[1+i]]=elevation_map[start[0]][start[1+i]]+delta
else:
    for num in range(stop[0]-start[0]):
        elevation_map[start[0]][start[1+i]]=elevation_map[start[0+i]][start[1]]+delta
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-29 20:52
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在你的代码中,你尝试将一个二维列表 elevation_map 中的元素更新为 delta 的值。但是,在 update_elevation() 函数中,当你试图修改 elevation_map 列表中的元素时,它抛出了 builtins.NameError: name 'THREE_BY_THREE_COPY' is not defined 错误。

    这是因为你在调用函数之前没有定义变量 THREE_BY_THREE_COPY。为了修复这个问题,你需要先定义这个变量:

    THREE_BY_THREE_COPY = [[1, 2, 1],
                           [4, 6, 5],
                           [7, 8, 9]]
    

    然后才能继续执行函数体中的代码。如果你已经定义了这个变量,请确保它已经被正确地赋值,并且在函数内部使用了正确的名称。如果没有定义,你应该添加适当的语句来定义它。

    评论

报告相同问题?