D:\anaconda3\python.exe C:/Users/ying/Desktop/pythonProject5/main.py Traceback (most recent call last): File "C:\Users\ying\Desktop\pythonProject5\main.py", line 85, in <module> end_times = {node: max(end_times.get(child, 0) for child in G.successors(node)) + weight for node, weight in G.nodes(data="weight")} File "C:\Users\ying\Desktop\pythonProject5\main.py", line 85, in <dictcomp> end_times = {node: max(end_times.get(child, 0) for child in G.successors(node)) + weight for node, weight in G.nodes(data="weight")} TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'
时间: 2023-06-12 11:04:14 浏览: 44
这个错误的原因是在执行字典推导式时,end_times.get(child, 0) 返回了 NoneType 而不是 int 类型,导致无法与 weight 相加。你可以在执行字典推导式时添加一个判断语句,如果 end_times.get(child, 0) 返回 NoneType,则将其默认值设置为 0。例如:
```
end_times = {node: max(end_times.get(child, 0) for child in G.successors(node)) + weight
for node, weight in G.nodes(data="weight")
if all(end_times.get(child) is not None for child in G.successors(node))}
```
这里用了 all() 函数来判断所有子节点的 end_times 值都不为 NoneType,如果有任意一个子节点的 end_times 为 NoneType,则该节点的 end_times 也为 NoneType,不会加入到字典中。
相关问题
E:\Anaconda\python.exe C:\Users\86137\PycharmProjects\pythonProject\main.py
根据你的描述,问题出现在运行命令"E:\Anaconda\python.exe C:\Users\86137\PycharmProjects\pythonProject\main.py"时。你遇到了"Fatal error in launcher: Unable to create process using '“E:\Anaconda\python.exe”"的报错信息。这个错误通常是由于安装的Anaconda与Python路径发生了变化导致的。
为了解决这个问题,你可以尝试以下几种方法:
1. 确保你已经正确安装了Anaconda,并且确保Anaconda的路径和Python的路径设置正确。
2. 如果你之前安装了旧版本的Python,你可以尝试卸载旧版本的Python,并重新安装最新版本的Anaconda。这样可以确保Anaconda和Python的路径都是正确的。
3. 如果你的Python路径已经更改,你需要在Pycharm中进行相应的更改。你可以关闭当前项目,新建一个项目,并在新项目中指定正确的Python路径。或者,你也可以在当前项目中进行修改,将Python路径指向正确的位置。
4. 确保你正确执行了运行命令。对于你提供的命令,需要注意文件路径的正确性和命令的正确格式。你可以按照下面的示例运行命令:"python3 main.py inputFileLocation",其中"inputFileLocation"需要替换为你实际的文件路径。
希望以上方法可以帮助你解决问题。如果问题仍然存在,请提供更多详细信息,以便我可以更好地帮助你解决。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
D:\anaconda3\python.exe C:/Users/ying/Desktop/pythonProject5/main.py Traceback (most recent call last): File "C:\Users\ying\Desktop\pythonProject5\main.py", line 84, in <module> end_times = nx.dag_late_finish(G, start_times) AttributeError: module 'networkx' has no attribute 'dag_late_finish'如何修改
`dag_late_finish` 已在 NetworkX 版本 2.6.1 中被删除。相反,您可以使用 `dag_longest_path` 函数来实现相同的功能。您可以按照以下步骤进行修改:
1. 首先检查您的 NetworkX 版本。您可以在命令行中输入以下命令来检查您的版本:
```
pip show networkx
```
2. 如果您的版本低于 2.6.1,请升级您的 NetworkX 版本。您可以使用以下命令来升级:
```
pip install --upgrade networkx
```
3. 如果您的版本已经是 2.6.1 或更高版本,并且仍然遇到此错误,请将以下代码:
```
end_times = nx.dag_late_finish(G, start_times)
```
改为:
```
end_times = {v: max(end_times) for v, end_times in nx.dag_longest_path(G, weight='weight').items()}
```
这应该可以解决您的问题。