我的代码如下:
from random import randint
Item = randint(1, 10)
def ItemName(Item):
if Item == 1:
return Hat
elif Item == 2:
return Gloves
elif Item == 3:
return Scarf
elif Item == 4:
return Top
elif Item == 5:
return Pants
elif Item == 6:
return Shoes
elif Item == 7:
return Socks
elif Item == 8:
return Sunglasses
elif Item == 9:
return Bag
else:
return Jacket
print (ItemName)
我希望程序打印出可能返回的可能值之一。例如“帽子”,“袜子”或“包”。相反,我得到“”或完全乱码的其他变种。
答案 0 :(得分:3)
您从未用Item调用过函数,只是打印了Function。您有很多未定义的变量,从上下文来看,我认为它应该是一个字符串 尝试以下
from random import randint
Item = randint(1, 10)
def ItemName(Item):
if Item == 1:
return "Hat"
elif Item == 2:
return "Gloves"
elif Item == 3:
return "Scarf"
elif Item == 4:
return "Top"
elif Item == 5:
return "Pants"
elif Item == 6:
return "Shoes"
elif Item == 7:
return "Socks"
elif Item == 8:
return "Sunglasses"
elif Item == 9:
return "Bag"
else:
return "Jacket"
print (ItemName(Item))
答案 1 :(得分:2)
函数中的项必须定义为字符串。调用函数时不要忘记包含参数。
希望这会有所帮助!
重构代码:
from random import randint
item = randint(0, 9)
def itemName(item):
arr = ["Hat", "Gloves", "Scarf", "Top",
"Pants", "Shoes", "Socks", "Sunglasses", "Bag", "Jacket"]
return(arr[item])
print(itemName(item))
答案 2 :(得分:2)
要解释您做错了什么,您需要对功能有全面的了解。
当您定义函数即
def ItemName(item)
ItemName
是函数的名称,方括号内的item
是参数。 参数/参数只是可以在代码范围内使用的变量。
例如,给出一个简单的功能:
def example(arg):
return argument
您传入参数arg
,这是您在调用函数时传递函数的任何内容。要正确调用/调用一个函数,请执行以下操作:
foo = example('I just called a function!')
这会将字符串'I just called a function!'
传递给函数。在函数调用中,它返回您传递给它的字符串。要打印字符串,只需打印函数的返回:
print(foo)
>>> I just called a function!
要修复代码,您只需要像下面这样将Items传递给ItemName:
print(ItemName(item))
我已经注意到您的代码有些重复,实际上无法读取。解决该问题的更好方法是使用列表。
import random
ITEMS = ["Hat", "Gloves", "Scarf", "Top", "Pants", "Shoes", "Socks",
"Sunglasses", "Bag"]
def itemNames(index):
if index < len(items):
return items[index]
return 'Jacket'
print(itemNames(random.randint(1,9), items))
上面的函数将打印项目列表的索引,例如,如果您要传递0,则该函数将获得列表"Hat"
中的第一个元素。
尽管这种方法相当慢,因为每次调用该函数时都必须仔细检查每个项目,直到它与您提供的索引匹配为止。一种更有效的解决方案是使用@Onyambu's
解决方案之类的字典。
如果您想要一个快速的班轮,您还可以考虑使用匿名函数或lambda表达式,因为它们在python中被调用
arr_num = lambda x: arr[x] if x < len(arr) else "Jacket"
print(arr_num(random.randint(0, 9))
也不要将变量名和函数名大写,这是为类保留的。我建议您简要了解一下PEP8 Styling Guide。
希望这有助于您对python中的函数使用有基本的了解,并修复了代码:)
答案 3 :(得分:0)
更好:
from random import randint
item = randint(0, 9)
def itemName(item):
l=["Hat", "Gloves", "Scarf", "Top", "Pants", "Shoes", "Socks", "Sunglasses", "Bag", "Jacket"]
try:return l[item]
except:return 'index not in list'
print(itemName(item))
答案 4 :(得分:0)
这是字典的用法,您可以在其中通过键调用值:
from random import randint
xx =["Hat", "Gloves", "Scarf", "Top", "Pants", "Shoes", "Socks", "Sunglasses", "Bag", "Jacket"]
dict(zip(range(1,len(xx)+1),xx)).get(randint(1,11))
每次运行上面的代码,您都会得到一个不同的值。
或者您可以这样做:
Item =randint(1,11)
vv = dict(zip(range(1,len(xx)+1),xx))
vv.get(Item)
这与上面的代码行完全相同