【问题标题】:Why is (x,y) NoneType?为什么是 (x,y) NoneType?
【发布时间】:2021-12-29 16:24:47
【问题描述】:

我的代码 (Jupyter) 有问题。有障碍物的有序图案真空吸尘器。我正在从文件中加载一个数组(如果需要,请参见图片)

那么我有一个函数:

 x_lim = 9 
 y_lim = 9
 
 def ordered_move(x,y,gulv):
     if gulv[x,y] == 0:
         if x < 9:
             x +=1
             return (x,y)
         if x == x_lim: 
             y +=1
             return (x,y) 

     if gulv[x, y] > 0:
         x == 0
         y += 1
         return (x,y)
     
     if x == 9 and y == 9:
         x == 6
         y == 3
         x += 1
         return (x,y)
     
     if x == 9 and y == 3:
         x == 7
         y == 4
         x += 1
         return (x,y)
         
     if x == 9 and y == 4:
         x == 6
         y == 5
         x += 1
         return (x,y)
         
     if x == 9 and y == 5:
         x == 7
         y == 6
         x += 1
         return (x,y)
         
     if x == 9 and y == 6:
         x == 6
         y == 7
         x += 1
         return (x,y)

然后我使用以下代码:

x = 0
y = 0
time = 0
dust_in_room = 100 
dust_removed = 0
time_passed_vec = []
dust_in_room_vec = range(100)

while dust_in_room > 7: 
    if array_from_file[x,y] == -1:
        dust_in_room -= 1
        array_from_file[x,y] = -2
        time_passed_vec = time_passed_vec + [time]
        dust_removed +=1
        print(time)
    time += 1 
    (x,y)=ordered_move(x,y,array_from_file)

我收到类型错误

“无法解压不可迭代的 NoneType 对象”

在最后一行。 从代码中您可以看出我是 python 新手,所以也许您可以提供一个简单的解释。谢谢。

【问题讨论】:

  • 你并不总是从你的函数返回一个结果。如果不满足任何条件怎么办?
  • 如果您的 ordered_move 函数中没有任何条件为 True,则该函数将隐式返回 None。就是这样
  • 另外,请确保您的作业正确。 x == 6,例如不是分配,但似乎你想要x = 6。它在您的代码中多次发生。
  • 感谢您的回答。 :)

标签: python jupyter-notebook nonetype


【解决方案1】:

解释是没有验证if 条件。 如果函数在没有return 语句的情况下结束,结果就像有return None 一样。

【讨论】:

    猜你喜欢
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多