如何打印函数返回?

时间:2018-08-14 03:09:10

标签: python python-3.x 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)

我希望程序打印出可能返回的可能值之一。例如“帽子”,“袜子”或“包”。相反,我得到“”或完全乱码的其他变种。

5 个答案:

答案 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)

Python中的函数

要解释您做错了什么,您需要对功能有全面的了解。

当您定义函数即

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) 

这与上面的代码行完全相同