这个问题在python中:
battleships = [['0','p','0','s'],
['0','p','0','s'],
['p','p','0','s'],
['0','0','0','0']]
def fun(a,b,bships):
c = len(bships)
return bships[c-b][a-1]
print(fun(1,1,battleships))
print(fun(1,2,battleships))
第一次打印给出0 第二次印刷给出p
我无法理解为什么,如果你能给出解释,我将不胜感激。
感谢那些帮助的人:)
答案 0 :(得分:3)
索引从0
开始。所以战舰包含索引0
,1
,2
,3
的项目。
首先len(bships)
获取列表battleships
的长度,即4。
bships[c-b][a-1]
通过索引值访问列表中的项目。所以第一次调用函数时:
print(fun(1,1,battleships))
bships[4-1][1-1]
是bships[3][0]
,['0','0','0','0'][0]
是0
答案 1 :(得分:3)
您可以通过将计算结果替换为实际值来轻松完成:
在第一个电话中,您正在编制索引:
bships[c-b][a-1] == bships[4-1][1-1] == bships[3][0]
从0开始计数,这是最后一行,['0','0','0','0']
,第一个元素,'0'
。
第二个电话评估为:
bships[c-b][a-1] == bships[4-2][1-1] == bships[2][0]
所以倒数第二行的第一个单元格['p','p','0','s']
是'p'
。
请注意,在Python中,您可以使用负索引而不首先计算len()
;从您的函数中删除c
,它们的工作方式都相同:
>>> battleships = [['0','p','0','s'],
... ['0','p','0','s'],
... ['p','p','0','s'],
... ['0','0','0','0']]
>>> def fun(a,b,bships):
... return bships[-b][a-1]
...
>>> print(fun(1,1,battleships))
0
>>> print(fun(1,2,battleships))
p
这是因为Python将负面指数视为从最后开始计算;在内部,它将使用序列的长度(与序列一起存储)来计算相同但更快的序列。
答案 2 :(得分:1)
>>> battleships = [['0','p','0','s'],
... ['0','p','0','s'],
... ['p','p','0','s'],
... ['0','0','0','0']]
>>>
>>> a = 1
>>> b = 1
>>> c = len(battleships)
>>> c-b,a-1
(3, 0)
现在battleships[c-b][a-1]
可分为两部分:
battleships[c-b]
和[a-1]
Python首先调用battleships[c-b]
,c-b
为3
,因此它返回战列舰的最后一个列表(第4项)。即['0','0','0','0']
(索引从0
开始)
现在是第二部分:[a-1]
现在[a-1]
在返回的列表中被调用,即['0','0','0','0']
['0','0','0','0'][a-1]
a-1
为0
,因此python会返回此列表中的第一项。
所以你得到了' 0'。
同样适用于a
,b
:
>>> a = 1
>>> b = 2
>>> c-b,a-1
(2, 0)
>>> battleships[c-b]
['p', 'p', '0', 's']
>>> battleships[c-b][a-1] #calls ['p', 'p', '0', 's'][0]
'p'
答案 3 :(得分:1)
当你遇到问题时,编程中的任何新东西都会改变程序。
我会举个例子。我稍微改了一下。
battleships = [['0','p','0','s','3'],
['0','p','0','s','8'],
['p','p','0','s','2']]
print "len(battleships) =",len(battleships)
print "battleships[0] =",battleships[0]
print "battleships[1] =",battleships[1]
print "battleships[2] =",battleships[2]
print "len(battleships[0]) =", len(battleships[0])
当我运行它时,输出是
len(battleships) = 3
battleships[0] = ['0', 'p', '0', 's', '3']
battleships[1] = ['0', 'p', '0', 's', '8']
battleships[2] = ['p', 'p', '0', 's', '2']
len(battleships[0]) = 5
将输出语句与print语句匹配。这会有所帮助。
尝试print battleships[0][1]
等。
还有一个建议。搜索谷歌的Python并将其安装在您的计算机上。如果我是正确的,这是来自codecademy。仅使用codecademy是不够的。您需要编写Python脚本,运行它们并查看它们的输出。只有在那之后你才能学习。试试this。在教授编程时,他们比代码学更好。