当前位置:  开发笔记 > 编程语言 > 正文

Python类型错误问题

如何解决《Python类型错误问题》经验,为你挑选了1个好方法。

我正在编写一个简单的程序来帮助生成我所属游戏的订单.它属于我实际上并不需要的程序.但现在我已经开始了,我希望它能够发挥作用.这一切都运行得很顺利,但我无法弄清楚如何在中途停止类型错误.这是代码;

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, in 
    materials = 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的行为将被重命名为输入).



1> bobince..:

堆栈跟踪会有所帮助,但可能错误是:

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的行为将被重命名为输入).

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有