培训课后作业(1)番外篇

师兄说我们的山脉数组还有点小问题,↓这是师兄写的代码

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值