师兄说我们的山脉数组还有点小问题,↓这是师兄写的代码
a = list(input('输入连续数字'))
Jud = []
up = 0
down = 0
#遍历列表元素判断该元素位置前是否单调递增,后是否单调递减
for j in range(len(a)-1):
judge = True
print('-'*20,j,'-'*20)
value = a[j+1]
value_p = value
for previous in range(j,-1,-1):
if a[previous] < value_p:
print('目前递增,当前元素为{},上一个为{}'.format(value_p,a[previous]))
value_p = a[previous]
else:
judge = False
value_n = value
for next_num in range(j+2,len(a)):
if a[next_num] < value_n:
print('目前递减,当前元素为{},下一个为{}'.format(value_n,a[next_num]))
value_n = a[next_num]
else:
judge = False
#若有一个元素符合山脉数组定义,append judge=True python中True=1,False=0
Jud.append(judge)
print('-'*40)
#如果有一个元素符合山脉数组,输出是,反则不是
if sum(Jud) > 0:
print('是山脉数组')
else:
print('不是山脉数组')
说实话没怎么看懂,然后发现这好像只能判断“个位数组成的数组”,最近在学字符串,想到可以将输入的字符串进行分割,再转换为整数型进行比较
a=list(input('请连续输入多个数字,并用英文逗号隔开:').split(',')) #输入多个数字,用split拆成字符串放入列表中,再转换为整数型
for i in range(0,len(a)):
a[i]=int(a[i])
for j in range(0,len(a)):
for z in range(0,len(a)):
if a[j] < a[z]: #如果这个数小于其中一个数字,则跳出循环
break
else:
print("这组数据中最大值为{}".format(a[j]))#找到最大的一个数字
for m in range(0,j):#山脉数组,先增后减
if a[m]>a[m+1]:
print("经检验,{}不是山脉数组".format(a))
break
else:
for n in range(j+1,len(a)):
if a[n-1]<a[n]:
print("经检验,{}不是山脉数组".format(a))
break
else:
print("经检验,{}是山脉数组".format(a))
请连续输入多个数字,并用英文逗号隔开:1,3,2,1
这组数据中最大值为3
经检验,[1, 3, 2, 1]是山脉数组
请连续输入多个数字,并用英文逗号隔开:1,8,24,35,68,96,153,196,250,360,985,15975,369,211,84,21,10,0
这组数据中最大值为15975
经检验,[1, 8, 24, 35, 68, 96, 153, 196, 250, 360, 985, 15975, 369, 211, 84, 21, 10, 0]是山脉数组
请连续输入多个数字,并用英文逗号隔开:1,69,84,563,145,256,369,142,36,21,3,2,1
这组数据中最大值为563
经检验,[1, 69, 84, 563, 145, 256, 369, 142, 36, 21, 3, 2, 1]不是山脉数组
啊这,写的有点简单,纯靠脑子猜想循环emmm