处理sys数据,简要回归2018校招当当的一道编程题

本文解析了一道当当校招编程题,题目要求输入一数列并找出最大插值和及相应组合数量。通过示例介绍了如何使用Python的sys模块进行输入处理,并提供了解题思路与代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前两天,题主做了下当当的校招编程题,发现当当用的编译器不支持在线debug,而自己又没掌握sys的处理输入数据,自己错失第一题的良机。

第一题可简单了,今天痛心疾首的给弄出来了,警醒自己,也给大家分享下。

当当的线上编程题和其他互联网公司一样,都是给一大段文字,后面引出重点:

输入两行数据,
第一行是一个数列的长度,第二行是此数列,以空格分开,要求找出最大插值和有几组这样的数
例:5
   1 2 3 3 1
返回结果为 2 4

思路:先把数列排序,计算出最大值,然后找出有几个最值即可
import sys
while 1:
    a = sys.stdin.readline().strip()    #strip()去除字符串首尾多余的字符(默认是空格)
    b = sys.stdin.readline().strip()
    if a == None or b == None:
        break
    a = a.split(' ')    #因为sys读的数据都是以字符读入,需要按空格分开
    b = b.split(' ')    #b列表需要转化为数字列表
    b_list = []
    for _ in b:
        b_list.append(int(_))
    b_list.sort()
    max_diff = b_list[-1] - b_list[0]
    value_min,value_max = 0,0
    for i in b_list:
        if i == b_list[-1]:
            value_max += 1
        if i == b_list[0]:
            value_min += 1
    print max_diff,value_max * value_min   

注意要点:
1.在这里,sys处理数据时,需要两两处理,这里就需要读两次,还要加上跳出条件;
2.sys.stdin.readline(),一行一行的读;
3.print的输出不是空格间隔,以逗号区分每个输出的值;
4.在pycharm中用sys时,在run窗口输入两行数据就可以处理了。

欢迎批评指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值