繁体   English   中英

Python定义的功能无法正常工作

[英]Python defined functions doesn't work properly

嗨,我的学校正在python上做一个RPG项目,我遇到了一个问题,我定义了自己的函数,需要在另一个函数中调用它们中的一个,但它不起作用。 以下代码为例:

from characters1 import *

def printmana(typeofenemy):
    print typeofenemy.mana


def printmany(typeofenemy):
    print typeofenemy.damage
    print typeofenemy.health
    option = raw_input("Type something ")
    if option == 1:
        printmana(typeofenemy)

printmany(Goblin)

当我打电话给printmany(Goblin)时,一切都会好起来,直到我键入1,在这里我希望它能调用printmana(Goblin)并打印Goblin.mana,但事实并非如此。 但是,当我分别给printmana(Goblin)打电话时,它的工作原理绝对不错。 我也试过这个:

from characters1 import *

def printmana(typeofenemy):
    return (typeofenemy.mana)


def printmany(typeofenemy):
    print typeofenemy.damage
    print typeofenemy.health
    option = raw_input("Type something ")
    if option == 1:
        print (printmana(typeofenemy))

printmana(Goblin)

我以为我将printmana中的打印更改为return,并在第二个函数中调用print printmana(Goblin),但是当我键入1时它仍然不起作用。一定有些事情我还不了解python函数的性质,所以有人可以解释一下为什么我的示例代码不起作用吗? 谢谢!

您的麻烦在于,您正在将raw_input(字符串)的输出与整数进行比较。 请尝试以下方法之一:

if option == "1":
    ...

要么

if int(option) == 1:
    ...

Option是此代码中的字符串:

>>> option = raw_input("Type something ")
Type something 1
>>> print option
1
>>> print type(option)
<type 'str'>
>>> print option == 1
False
>>> print option == "1"
True 

因此,您需要将if更改为:

if option == "1":

raw_input不会将值转换为整数。 您可以将选项与字符串进行比较,即:

if option == '1':

或者您可以将选项转换为int,即:

option = int(option)

请注意,如果无法将值转换为int,则第二种选择会有一些有趣的陷阱。

您将变量“ option”设置为用户键入的内容。如果用户键入“ 1”并按回车键,则“ option”将保留字符串值“ 1”。 因此,问题出在您的“ if”语句中,在此您比较字符串和整数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM