Python3代码缩短

2024-05-10 06:37:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图缩短代码

代码:

inv = {'arrow': 12, 'gold coin': 42, 'rope': 2, 'torch': 4, 'dagger': 1}

def show_inv():
    print('inventory:')
    item_total = 0
    for k, v in inv.items():

        print(str(v)+ ' ' + (k) )
        item_total = item_total + v

    print('total number of items: ' + str(item_total) )


show_inv()


dragon = {'gold coin': 50, 'ruby': 15}

inv.update(dragon)

print()
print('after slaying dragon:')
show_inv()

无济于事,所以我在这里:)

这是

结果:

inventory:

12 arrow

42 gold coin

2 rope

4 torch

1 dagger

total number of items: 61

after slaying dragon:

inventory:

12 arrow

50 gold coin

2 rope

4 torch

1 dagger 15 ruby total number of items: 84


Tags: numbershowitemstorchitemtotalinventorycoin
3条回答

在你“缩短”你的代码之前,确保它是正确的。当前^{}将只覆盖条目!在

我建议使用^{}而不是dict,因为它已经实现了您想要的逻辑:

>>> from collections import Counter

>>> inv = Counter({'arrow': 12, 'gold coin': 42, 'rope': 2, 'torch': 4, 'dagger': 1})
>>> dragon = Counter({'gold coin': 50, 'ruby': 15})

>>> inv.update(dragon)
>>> inv
Counter({'arrow': 12,
         'dagger': 1,
         'gold coin': 92,    # the 42 and 50 are added!
         'rope': 2,
         'ruby': 15,
         'torch': 4})

您使用的唯一函数是show_inv。然而,这个函数的唯一目的是print一个对象的表示,没有多少可以“缩短”的。似乎是对的。在

但是如果您有一个“object”(对象)和一个用于该对象的函数,那么您应该考虑使用“class”来包装它。有一些方法允许您自定义“字符串”表示形式:^{}^{},因此可以使用这些方法来代替显式函数(或方法)调用:

^{pr2}$

您可以使用sum函数,而不是递增地增加总数,但除此之外,您不能做很多事情:

inv = {'arrow': 12, 'gold coin': 42, 'rope': 2, 'torch': 4, 'dagger': 1}

def show_inv():
    print('inventory:')
    for k, v in inv.items():
        print("%s %s" % (v,k))
    print('total number of items: %s' % sum(inv.values()))

show_inv()

dragon = {'gold coin': 50, 'ruby': 15}

inv.update(dragon)

print()
print('after slaying dragon:')
show_inv()

如果你真的想要最短的函数,你可以用这一行;)

show_inv = lambda: print('inventory:\n%s\n%s' % ('\n'.join(['%s %s' % (k,v) for k,v in inv.items()]),'total number of items: %s' % sum(inv.values())))

(请不要这样做)

相关问题 更多 >