【问题标题】:Python error: "TypeError: 'int' object is not callablePython 错误:“TypeError:'int' 对象不可调用
【发布时间】:2020-06-24 02:14:53
【问题描述】:
distances = {   "u":0,
                "v":0,
                "w":0,
                "x":0,
                "y":0,
                "z":0 }

Np = ["u"]
nodes = ["u","v","w","x","y","z"]
max = 20;
for node in nodes:
        if (node+"-u") in dictionary:
                distances[node] = dictionary["u-"+node]
        else:
                distances[node] = max;


while Np != nodes:
        for node in nodes:
                if node not in Np:
                        if (distances[node] < max):
                                min = distances[node]
                                minnode = node;
                                max = min;
        Np.append(minnode);
        print(Np);
        for node in nodes:
                if node not in Np:
                        if (node+"-"+minnode) in dictionary:
                                distances[node] = min(distances[node], distances[minnode] + dictionary[node+"-"+minnode]);


请帮助我哪里出错了,我在最后一行代码出现错误:

distances[node] = min(distances[node], distances[minnode] + dictionary[node+"-"+minnode]);

这是说我正在做'int'的typeError,但我追溯代码开始,我看不出有什么问题。我正在使用字典对象和列表对象,也许这就是原因?请看代码并修改

【问题讨论】:

  • min = distances[node] 你重新定义了min,所以它是一个数字,而不是计算最小值的函数。
  • 不要使用与标准函数和类型同名的变量。
  • max, min 都是内置函数。我们会避免覆盖它。

标签: python list dictionary typeerror


【解决方案1】:
min = distances[node]
minnode = node;
max = min;

从那里我们知道min 是一个数字或其他东西的变量,但是您在最后一行代码中将它用作函数。

distances[node] = min(distances[node], distances[minnode] + dictionary[node+"-"+minnode]);

尝试为您的变量使用其他名称。

【讨论】:

    猜你喜欢
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 2014-06-13
    • 2021-12-23
    • 1970-01-01
    • 2012-04-03
    相关资源
    最近更新 更多