python代码嵌套字典不产生输出?没有错误



我正在尝试运行下面的代码。它只是简单的列表和字典,我正在试验,但它似乎没有产生任何输出时,我运行它,我不知道我哪里出了问题。

我明白代码没有多大意义。我只是在寻找像top trumps这样的任意值,看看我是否能做出一些东西。

bikes = {'mtb':{'sus':2, 'wheels':4},
'bmx':{'sus':0, 'wheels':2},
'road': {'sus':1,'wheels':4}}
def totalItems(bikes,item):
numItems =0
for k, v in bikes.items():
numItems= numItems +v.get(item, 0)
return numItems
print('number of items:')
print('-sus  '+ str(totalItems(bikes,'sus')))
print('-wheels  +str(totalItems(bikes,'wheels')))

你的代码行没有对齐好:

bikes = {'mtb':{'sus':2, 'wheels':4},
'bmx':{'sus':0, 'wheels':2},
'road': {'sus':1,'wheels':4}}
def totalItems(bikes,item):
numItems =0
for k, v in bikes.items():
numItems= numItems +v.get(item, 0)
return numItems  # <- HERE
print('number of items:')  # <- HERE
print('-sus ' + str(totalItems(bikes,'sus')))  # <- HERE
print('-wheels ' + str(totalItems(bikes,'wheels')))  # <- HERE

输出:

number of items:
-sus 3
-wheels 10

你可以用f-strings来代替你最后的2个print调用来获得更多的可读性:

print(f"-sus {totalItems(bikes,'sus')}")
print(f"-wheels {totalItems(bikes,'wheels')}")

我猜在你的代码结束时你必须调用函数?…

totalItems(bikes, item)

对于这个例子,你的意思是?

bikes = {'mtb':{'sus':2, 'wheels':4},
'bmx':{'sus':0, 'wheels':2},
'road': {'sus':1,'wheels':4}}
def totalItems(bikes,item):
numItems =0
for k, v in bikes.items():
numItems= numItems +v.get(item, 0)
return numItems
print('number of items:')
print('-sus  ' + str(totalItems(bikes,'sus')))
print('-wheels ' + str(totalItems(bikes,'wheels')))

将打印函数移出函数?

输出:

number of items:
-sus  3
-wheels 10

代码在一些行之前有问题的空格,最后一行缺少引号,returnfor loop内部,因此它在第一次迭代后终止并返回而没有完成添加数字。

下面是适当缩进的代码,每个固定行后面都有解释,

bikes = {'mtb':{'sus':2, 'wheels':4},
'bmx':{'sus':0, 'wheels':2},
'road': {'sus':1,'wheels':4}}
def totalItems(bikes, item): # There was a space before 'def'
numItems =0
for k, v in bikes.items():
numItems = numItems + v.get(item, 0)
return numItems # The return needs to be outside of the loop
# so it won't terminate after the first iteration
print('number of items:') # There were 4 spaces before 'print'
print('-sus  '+ str(totalItems(bikes,'sus'))) # There were 5 spaces before 'print'
print('-wheels '  + str(totalItems(bikes,'wheels'))) # There were 4 spaces before 'print'
# There was only one quotation mark before the word '-wheels' so it wasnt running correcly

Sugesstion:在最后两行中,您可以使用.format()方法将函数输出包含在字符串中。这是它的样子

print('-sus {}'.format(str(totalItems(bikes,'sus'))))
print('-wheels {}'.format(str(totalItems(bikes,'wheels'))))

.format()方法在字符串的花括号{}内格式化输入。

最新更新