我需要通过使用for循环来解决这个鱼检测器问题



寻鱼器是垂钓者用来在湖中寻找鱼的一种装置。如果寻鱼器发现了一条鱼,它就会发出警报。它使用深度读数来决定是否发出警报。对于我们的目的,如果:

,寻鱼器将判定一条鱼游过:有四个连续的深度读数,它们形成一个严格递增的序列(如3,4,7,9)(我们称之为"Fish rising"),或者有3个连续的深度读数,形成一个严格递减的序列(如9 6 5 2)(我们称之为"鱼类潜水"),或者有四个连续相同的深度读数(我们称之为"恒定深度")。所有其他读数将被视为随机噪声或碎片,我们称之为"无鱼"。

你的任务是读取一系列深度读数,并确定警报是否会响起。

样本输入输入将是四个正整数,代表深度读数。每个整数将在其单独的输入行上。

输出是四种可能中的一种。如果深度读数增加,那么输出应该是鱼上升。如果深度读数在下降,那么输出应该是Fish Diving。如果深度读数是相同的,那么输出应该是Fish At Constant depth。否则,输出应为No Fish。

样本输入130.1020.20.示例输出1没有鱼样本输入21101213示例输出2

上升我已经正常解决了它,但现在我必须通过使用for循环来解决它,我完全不知道如何开始。我有一个例子,但它没有帮助。

num=int(input('Enter the number: '))
k = int(input('Enter the times the number has been shifted : '))
sum=0
sum+=num
for i in range(1,k+1):
sum+=num*10**i
print(sum)
'for i in range(1,k+1):'

我通常使用elif和else语句来解决这个问题,但对于for循环部分,我甚至不知道从哪里开始。附:这就是我解决它的方法。

d1, d2, d3 ,d4 = input("Enter first depth reading:"), input("Enter second depth reading:"), input("Enter third depth reading:"), input("Enter fourth depth reading:")
if int(d4) > int(d3) > int(d2) > int(d1):
print("Fish Rising")
elif int(d1) > int(d2) > int(d3) > int(d4):
print("Fish Diving")
elif int(d1) = int(d2) = int(d3) = int(d4):
print("Constant Depth")
else:
print("No Fish")

for循环的优点是可以处理任意数量的fish。

def fishies( depths ):
# This could be done easier with zip, but that's an advanced topic.
ups = 0
downs = 0
for i in range(len(depths)-1):
if depths[i] < depths[i+1]:
ups += 1
elif depths[i] > depths[i+1]:
downs += 1
if ups+downs == 0:
return "Constant"
elif ups == len(depths)-1:
return "Diving"
elif downs == len(depths)-1:
return "Rising"
return "No Fish"
print( fishies([3, 4, 7, 9]) )
print( fishies([9, 6, 5, 2, 1]) )
print( fishies([6, 6, 6, 6]) )
print( fishies([30, 10, 20, 20]) )

最新更新