[英]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.