这段代码应该找到最大的数字,然后它应该打印出有多少,但由于某种原因,这个注释if语句不起作用。
#!/bin/python3
import sys
def birthdayCakeCandles(n, ar):
j=1
b=0
f=0
maxn=0
for f in range(0,n-1,1):
b=ar[f]
# if maxn==b:
j=j+1
elif b>maxn:
maxn=b
print(j)
n = 4
ar = 3, 1, 2, 3
print(birthdayCakeCandles(n, ar))
当我运行此代码时输出为:
1
1
1
None
所以,最终答案应该是2而不是None。
答案 0 :(得分:0)
在您的代码中
首先,你不是{{1}来自你的功能的任何东西,
第二件事,你正在迭代你的数字集合的return
个元素,你可以解决这个问题:使用n-1
,
第三,在range(0, n, 1)
部分,您没有将elif
的值重置为1。
所有三个修复:
j
另一个可以提供帮助的解决方案:
#!/bin/python3
import sys
def birthdayCakeCandles(n, ar):
j=1
b=0
f=0
maxn=ar[0]
for f in range(1,n,1):
b=ar[f]
if maxn==b:
j=j+1
elif b>maxn:
maxn=b
j = 1
print(j)
return j
n = 4
ar = 3, 1, 2, 3
print(birthdayCakeCandles(n, ar))
答案 1 :(得分:0)
None
输出来自您尝试打印不返回任何内容的函数。你的最后一行应该只是:
birthdayCakeCandles(n, ar)
你的范围声明中也有一个关闭。 stop
参数最多但不包括。您的数组位置为0-3,因此您的停止参数应为4.例如:
for f in range(0,n,1):
虽然start
和step
是默认值,但为了便于阅读,您可以range(n):
答案 2 :(得分:0)
如果您在StackOverflow中提出问题,最好使用有意义的变量名称,例如" counter"," num"," array&#34 ;," name_input"等。这将有助于其他人快速了解您使用该变量的原因。如果您的代码难以理解,大多数人会忽略您的问题。请重新编写您的问题并编辑您的代码示例,以便它具有更易理解和更有意义的变量名称。