我正在编写一个简单的程序来帮助生成我所属游戏的订单.它属于我实际上并不需要的程序.但现在我已经开始了,我希望它能够发挥作用.这一切都运行得很顺利,但我无法弄清楚如何在中途停止类型错误.这是代码;
status = 1 print "[b][u]magic[/u][/b]" while status == 1: print " " print "would you like to:" print " " print "1) add another spell" print "2) end" print " " choice = input("Choose your option: ") print " " if choice == 1: name = raw_input("What is the spell called?") level = raw_input("What level of the spell are you trying to research?") print "What tier is the spell: " print " " print "1) low" print "2) mid" print "3) high" print " " tier = input("Choose your option: ") if tier == 1: materials = 1 + (level * 1) rp = 10 + (level * 5) elif tier == 2: materials = 2 + (level * 1.5) rp = 10 + (level * 15) elif tier == 3: materials = 5 + (level * 2) rp = 60 + (level * 40) print "research ", name, "to level ", level, "--- material cost = ", materials, "and research point cost =", rp elif choice == 2: status = 0
有人可以帮忙吗?
编辑
我得到的错误是;
Traceback (most recent call last): File "C:\Users\Mike\Documents\python\magic orders", line 27, inmaterials = 1 + (level * 1) TypeError: unsupported operand type(s) for +: 'int' and 'str'
bobince.. 13
堆栈跟踪会有所帮助,但可能错误是:
materials = 1 + (level * 1)
'level'是一个字符串,你不能对字符串进行算术运算.Python是一种动态类型语言,但不是弱类型语言.
level= raw_input('blah') try: level= int(level) except ValueError: # user put something non-numeric in, tell them off
在程序的其他部分,您使用input(),它将输入的字符串评估为Python,因此对于"1"将给出数字1.
但!这是非常危险的 - 想象一下如果用户键入"os.remove(filename)"而不是数字会发生什么.除非用户只是你并且你不在乎,否则永远不要使用input().它将在Python 3.0中消失(raw_input的行为将被重命名为输入).
堆栈跟踪会有所帮助,但可能错误是:
materials = 1 + (level * 1)
'level'是一个字符串,你不能对字符串进行算术运算.Python是一种动态类型语言,但不是弱类型语言.
level= raw_input('blah') try: level= int(level) except ValueError: # user put something non-numeric in, tell them off
在程序的其他部分,您使用input(),它将输入的字符串评估为Python,因此对于"1"将给出数字1.
但!这是非常危险的 - 想象一下如果用户键入"os.remove(filename)"而不是数字会发生什么.除非用户只是你并且你不在乎,否则永远不要使用input().它将在Python 3.0中消失(raw_input的行为将被重命名为输入).