python nonetype iterable_无法解决“NoneType”对象不是iterable类型
类文件夹:
在游戏.py:http://pastebin.com/P7Degwna
(我没有足够的声誉发布两个以上的链接。以下断开的链接是为了完整性,但我认为它们的代码完全正确)
在魔法.py:http://pastebin.com/wpwSCDe7在
在库存.py:http://pastebin.com/8kFXJne1在
我正在努力成为一个更好的程序员,并一直遵循一个简单的战斗系统教程。目前正在实施敌方作战战术。在
我正在尝试这样的程序,如果一个敌人选择治疗,并且有超过50%的剩余,他们会重新选择一个咒语。
每当发生这种情况时,我从代码中得到以下错误Traceback (most recent call last):
File "C:/Users/Kyle/PycharmProjects/battle/main.py", line 160, in
choose_attack, spell, magic_dmg = enemy.choose_enemy_spell()
TypeError: 'NoneType' object is not iterable
以下是在此之前输出到终端的转储:
^{pr2}$
我可以看到我的玩家轮到他们了,然后敌人选择了治疗咒语,因为有太多的生命,所以选择了另一个咒语,然后我得到了非类型错误。在
当另一个不是库拉索加的咒语第一次被选中时,这个代码工作得很好。在
相关代码部分:
这是我的主程序#Create Black Magic
fire = Spell("Fire", 25, 600, "black") #create object fire from class Spell
thunder = Spell("Thunder", 25, 600, "black")
blizzard = Spell("Blizzard", 25, 600, "black")
meteor = Spell("Meteor", 40, 1200, "black")
quake = Spell("Quake", 32, 900, "black")
#Create White Magic
cure = Spell("Cure", 25, 620, "white")
cura = Spell("cura", 32, 1500, "white")
curaga = Spell("Curaga", 50, 6000, "white")
#Create lists of magic and items associated with players
player_magic = [fire, thunder, blizzard, meteor, cure, cura] #Create list of magic spell objects for object player
player_items = [{"item": potion, "quantity": 15}, {"item": hipotion, "quantity": 5}, {"item": superpotion, "quantity": 5},
{"item": elixer, "quantity": 5}, {"item": hielixer, "quantity": 2}, {"item": grenade, "quantity": 5},] #Create list of item objects for object player
#Creat lists of magic and items associated with enemies
enemy_spells = [fire, meteor, curaga]
eneny_items = []
#Istantiate Player objects
player1 = Person("Zelda", 3260, 132, 300, 34, player_magic, player_items)
#Inistantiating object player using class Person
player2 = Person("Link ", 4160, 188, 311, 34, player_magic, player_items)
player3 = Person("Sheik", 3089, 174, 288, 34, player_magic, player_items)
#Instantiate Enemy objects
enemy1 = Person("Vaati", 1250, 130, 560, 325, enemy_spells, [])
enemy2 = Person("Ganon", 18200, 701, 535, 25, enemy_spells, [])
#Instantiating object enemy using class Person
enemy3 = Person("Vaati", 1250, 130, 560, 325, enemy_spells, [])
# Enemy chose to use magic
if enemy_choice == 1:
choose_attack, spell, magic_dmg = enemy.choose_enemy_spell()
enemy.reduce_mp(spell.cost)
if spell.type == "white": # Check type of spell of object spell to determine how to handle the chosen spell.
enemy.heal(magic_dmg) # White typer means heal
print(bcolours.OKBLUE + "\n" + spell.name, " heals", enemy.name + str(magic_dmg),
"HP." + bcolours.ENDC)
elif spell.type == "black": # black type means do damage
target = random.randrange(0, 3)
players[target].take_damage(magic_dmg)
print(bcolours.OKBLUE + "\n" + enemy.name.replace(" ", "") + "'s " + spell.name, "deals",
str(magic_dmg), "points of damage to " + players[target].name + bcolours.ENDC)
if players[target].get_hp() == 0:
print(players[target].name + " has died.")
del players[target]
这来自一个包含类的文件
#Determine the spell the enemy chooses to use
def choose_enemy_spell(self):
print("Begin method")
choose_attack = 0
magic_choice = random.randrange(0, len(self.magic))
spell = self.magic[magic_choice]
magic_dmg = spell.generate_damage()
print(spell.name, "INSIDE CLASS")
pct = (self.hp / self.maxhp)*100 #percentage of health remaining
if self.mp < 25:
print("This probably isnt happening")
choose_attack = 1
return choose_attack, spell, magic_dmg
if (spell.type == "white" and pct > 50) or self.mp < spell.cost:
print("This is happening.")
self.choose_enemy_spell()
else:
print(magic_dmg, "INSIDE CLASS INSIDE METHOD INSIDE FINAL ELSE")
return choose_attack, spell, magic_dmg
python nonetype iterable_无法解决“NoneType”对象不是iterable类型相关推荐
- python (第八章)补充-可迭代对象(补充高阶函数,以及常用的高阶函数)
文章目录 可迭代对象 迭代器 什么是迭代器 什么是生成器 生成器的作用 生成器的注意事项 总结: 高阶函数 什么是高阶函数? map()函数 filter()函数 reduce()函数 参考 可迭代对 ...
- python中迭代器和可迭代对象的区别_Python 可迭代对象迭代器生成器的区别
生成器是一种特殊的迭代器,生成器自动实现了"迭代器协议"(即__iter__和next方法),不需要再手动实现两方法. 首先从字面意思来解释Iterable和Iterator的区别 ...
- Python教学课程分享9-面向对象编程
面向对象程序设计的思想主要是针对大型软件设计而提出的,它的一个关键性观念是将数据以及对数据的操作封装在一起,组成一个相互依存.不可分割的整体,即不同对象之间通过消息机制来通信或者同步.对于相同类型对象 ...
- python入门经典以解决计算问题为导向_Python入门经典 以解决计算问题为导向的Python编程 待完善...
1.4.2:python将代码分为两类:表达式和语句 表达式和语句:: 表达式(值和运算符的结合,将产生新值--返回值.如果在python shell中输入表达式将显示返回值.也就是说,如果x的值是2 ...
- python错误-新手常见Python错误及异常解决处理方案
写Python代码的小伙伴不可避免地会遇到代码执行错误和异常,这次就来详细且不失通俗地总结一下python中的错误和异常. 先抛出两个问题: 什么是Python错误和异常? 如何处理Python错误和 ...
- python装饰器函数-Python精进-装饰器与函数对象
本文为<爬着学Python>系列第四篇文章. 从本篇开始,本专栏在顺序更新的基础上,会有不规则的更新. 在Python的学习与运用中,我们迟早会遇到装饰器,这个概念对于初识装饰器的新手来说 ...
- python中函数type可以测试对象类型_python类型检测最终指南--Typing模块的使用
正文共:30429 字 预计阅读时间:76分钟 原文链接:https://realpython.com/python-type-checking/ 作者:Geir Arne Hjelle 译者:陈祥安 ...
- 怎么解决python遇到问题_新手常见Python错误及异常解决处理方案
新手常见Python错误及异常解决处理方案,异常,错误,语句,子句,代码 新手常见Python错误及异常解决处理方案 易采站长站,站长之家为您整理了新手常见Python错误及异常解决处理方案的相关内容 ...
- python手写一个迭代器_搞清楚 Python 的迭代器、可迭代对象、生成器
很多伙伴对 Python 的迭代器.可迭代对象.生成器这几个概念有点搞不清楚,我来说说我的理解,希望对需要的朋友有所帮助. 1 迭代器协议 迭代器协议是核心,搞懂了这个,上面的几个概念也就很好理解了. ...
- 孤荷凌寒自学python第四十一天python的线程同步之Event对象
孤荷凌寒自学python第四十一天python的线程同步之Event对象 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 鉴于Lock锁与RLock锁均宣告没有完全完成同步文件操作的问题,于是 ...
最新文章
- 第7件事 产品的5个要素
- python编程if语法-Python基本语法(if判断)
- SourceInsight 4.0 之三 常用宏使用、编辑、修改详解(附最新完善版本的宏)
- udp java 检测连接_简单的JAVA UDP连接测试
- Maven项目编译工具的使用
- FileZilla Server 搭建FTP服务器
- python现在时间减去过去时间等于20分钟怎么写_获取当前时间减去10分钟的话SQL语句怎么写...
- linux 查看目录下文件个数
- jquery选择器小知识点们
- 【李宏毅2020 ML/DL】P56 Transformer and its variant | New Architecture
- VS2022找不到Microsoft.Expression.Interactions.dll
- websocket替代方案_码农手记 | 前后端实时交互方案概述
- [转]How do I use variables in Oracle SQL Developer?
- 计算机安装xp蓝屏怎么办,联想笔记本装xp系统蓝屏解决方法
- 【5G核心网】5GC核心网之网元NSSF
- 创业不是 闹着玩的,水很深,
- linux中硬盘安装教程图解,硬盘安装Debian 5教程图解
- 升级版微生物16s测序报告|解读
- HbuilderX 自有证书生成
- 网络电话免费打 【推荐】
热门文章
- 【过关斩将】面试官的八个举动,暗示你已经通过了面试
- 计算机无法正常更新,电脑时间不能自动更新怎么回事?电脑时间校准同步方法介绍...
- 向jupyter notebook插入图片并控制大小和对齐方式
- pdf裁边app_PDF裁剪怎么使用?
- SQL Server索引 (原理、存储)聚集索引、非聚集索引、堆 第一篇
- Windows 10 让所有程序默认为“以管理员身份运行”并且取消“确认”按钮
- SpringBoot+Vue批量下载图片压缩包
- mall-accounts.json ES测试数据
- Asp中显示%百分比函数FormatPercent的使用
- 高效人士的七个管理习惯