首页 > 解决方案 > openAI gym TypeError:无法解压不可迭代的NoneType对象

问题描述

抱歉,我删除了此代码,我不需要帮助

import numpy as np
import gym
import matplotlib
import matplotlib.pyplot as plt
import tensorflow as tf
from env.BeamEnv import BeamEnv

标签: pythonpython-3.xdesign-patterns

解决方案


if语句对于应用程序至关重要。因为它们是Dijkstra 1966 年结构化编程成分(序列、重复、选择)模型的一部分,今天仍然适用于 OOP、POP、FP、FRP 等其他范例。

而且您并没有过度使用它们(这可能会引发危险信号,即switch声明)。

if但是,如果您不想在要导出帧时进行渲染,我建议您合并您的两个条件。我不知道_render()函数是做什么的,但如果它只在需要导出帧时使用,你应该把它放在 mainif中以防止调用不必要的函数(init_plt()_render()

 if render and self.episode_count % self.sample_freq == 0:
        self._init_plt()
        self._render(obs)
        self.export_frames()
 self.episode_count += 1

如果您采用上述代码,我想将您的条件放入一个返回布尔值的函数中。

 if self.should_render(self.episode_count):
      self.init_plt()
      self._render(obs)
      self.export_frames()
 
 self.episode_count += 1

尽管如此,如果你总是一起使用init_plt()and _render(),你可以考虑编写一个调用它们的包装函数。只需使代码的主要逻辑更具可读性。请参阅 Robert Martin(鲍勃叔叔)关于干净代码的演讲。


推荐阅读