我正在尝试运行下面的代码。它只是简单的列表和字典,我正在试验,但它似乎没有产生任何输出时,我运行它,我不知道我哪里出了问题。
我明白代码没有多大意义。我只是在寻找像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
代码在一些行之前有问题的空格,最后一行缺少引号,return
在for 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()
方法在字符串的花括号{}
内格式化输入。