python3练习-华为机试

目录

一、HJ4 字符串分隔

二、HJ3 明明的随机数

三、HJ2 计算某字符出现次数

四、HJ1 字符串最后一个单词的长度

五、HJ17 坐标移动

六、HJ20 密码验证合格程序

七、HJ90 合法IP

八、HJ41 称砝码

九、HJ5 进制转换

十、合法IP地址

十一、矩阵

十二、字符串


一、HJ4 字符串分隔

描述

        输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;

        长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

输入描述:

        连续输入字符串(每个字符串长度小于等于100)

输出描述:

        依次输出所有分割后的长度为8的新字符串

示例1

输入:

abc

输出:

abc00000
def abc(a):
    if len(a) <=0:
        print(a)
    elif len(a) <=8:
        print(a.ljust(8,'0'))
    else:
        print(a[0:8])
        abc(a[8:])
a=input()
abc(a)

其实以下代码也可以实现,不用递归,网页编辑器就是有条测试用例不通过,郁闷。。

def yes(n):
    s =[]
    if len(n) <= 0:
        return s
    elif len(n) < 8:
        s.append(n.ljust(8,'0'))
        return s
    else:
        if len(n)%8 == 0:
            for i in range(len(n)//8):
                s.append(n[i*8:(i+1)*8])
                return s
        else:
            for i in range(len(n)//8):
                s.append(n[i*8:(i+1)*8])
            b =(len(n)//8)*8
            f = n[b:]
            s.append(f.ljust(8,'0'))
            return s

a = input()
k = yes(a)
for i in k:
    print(i)

二、HJ3 明明的随机数

 描述

        明明生成了NN个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。

        数据范围: 1≤n≤1000 1≤n≤1000  ,输入的数字大小满足 1≤val≤500 1≤val≤500 

输入描述:

        第一行先输入随机整数的个数 N 。 接下来的 N 行每行输入一个整数,代表明明生成的随机数。 具体格式可以参考下面的"示例"。

输出描述:

        输出多行,表示输入数据处理后的结果

num = int(input())
t = []
for i in range(num):
    s = int(input())
    if t.count(s) < 1:
        t.append(s)
    else:
        continue
# print(t)
s1 = sorted(t)
for j in s1:
    print(j)

三、HJ2 计算某字符出现次数

 描述

        写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)

        数据范围: 1≤n≤1000 1≤n≤1000 

输入描述:

        第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。

输出描述:

        输出输入字符串中含有该字符的个数。(不区分大小写字母)

示例1

输入:

ABCabc
A

输出:

2
a = input()
ab = input()
alist = list(a.lower())
ab_lower = ab.lower()
# print(alist)

print(alist.count(ab_lower))

四、HJ1 字符串最后一个单词的长度

描述

        计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)

输入描述:

        输入一行,代表要计算的字符串,非空,长度小于5000。

输出描述:

        输出一个整数,表示输入字符串最后一个单词的长度。

示例1

输入:

hello nowcoder

输出:

8

说明:

最后一个单词为nowcoder,长度为8   
list = input()
list1 = list.split()
print(len(list1[-1]))

五、HJ17 坐标移动

描述

        开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。

输入:

        合法坐标为A(或者D或者W或者S) + 数字(两位以内)坐标之间以;分隔。

        非法坐标点需要进行丢弃。如AA10;  A1A;  $%$;  YAD; 等。

下面是一个简单的例子 如:

         A10;S20;W10;D30;X;A1A;B10A11;;A10;

处理过程:

        起点(0,0)

        +   A10   =  (-10,0)

        +   S20   =  (-10,-20)

        +   W10  =  (-10,-10)

        +   D30  =  (20,-10)

        +   x    =  无效

        +   A1A   =  无效

        +   B10A11   =  无效

        +  一个空 不影响

        +   A10  =  (10,-10)

        结果 (10, -10)

        数据范围:每组输入的字符串长度满足 1≤n≤10000 1≤n≤10000  ,坐标保证满足         −231≤x,y≤231−1 −231≤x,y≤231−1  ,且数字部分仅含正数

输入描述:

        一行字符串

输出描述:

        最终坐标,以逗号分隔

示例1

输入:

A10;S20;W10;D30;X;A1A;B10A11;;A10;

输出:

10,-10

示例2

输入:

ABC;AKL;DA1;

输出:

0,0
import re
str = input()
list1 = str.split(";")
list2 = []
print(list1)
for i in range(len(list1)):
    list2 += re.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值