20190403华为笔试题

第一题:
输入整数n,
输入多行数组,
对于每个数组,取前n个数,添加至结果数组中。直至数组为空。
输出结果数组。

例,输入:
2
1,1,1,1,1
2
3,3,3
输出:
1,1,2,3,3,1,1,3,1
此次题目输入,跟以往输入不同,没有告诉我们要输入多少行数组,所以需要一个结束输入条件,经过测试,当输入为空字符时,结束输入

gap = eval(input()) # 取数间隔
nums = [] 
total = 0 # 结果数组的长度
result = []
try:
    while True:
        num = input()
        if num == '':
            break
        total += len(num.split(','))
        nums.append(num.split(','))
except:
    pass
    
while len(result) < total:
# 当所有数组元素还没取完的时候,继续遍历,取数
    for i,j in enumerate(nums):
        if len(j):
            result.extend(nums[i][:gap])
            nums[i][:gap] = []  

print(','.join(result))print(','.join(result))

第二题:
对字符串进行处理。
太长了,忘记了。。。

def left_move(s, n):
	'''将字符串s循环左移n位'''
    if len(s) == 0:
        return ''
    shift = n%len(s)
    move = s[0:shift]
    re = s[shift:]
    return ''.join([re,move])

def check(s):
	'''检测字符串s是否为有效字符串,即只包含字母和数字'''
	formal = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    for i in s:
        if i not in formal:
            return False        
    return True

import sys
res_t,res_f = [],[]

while 1:
    try:
        s = input().strip()
        if s == '':
            break
        if check(s):
            if s not in res_t:  # 去重
                res_t.append(s)
        else:
            res_f.append(s)
    except:
        pass

print(' '.join(res_t))
print(' '.join(res_f))
for i,j in enumerate(res_t):
    res_t[i] = left_move(j, 10)
print(' '.join(res_t))
print(' '.join(sorted(res_t)))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值