华为机考1-20

本文包含了华为机考的部分编程题目,涵盖字符串处理、数字操作、进制转换、正则匹配、错误记录等多个方面。题目涉及计算字符串最后一个单词长度、查找字符串中特定字符的个数、去重与排序整数、按长度拆分字符串、转换十六进制数为十进制等。同时,讨论了错误处理和密码验证等逻辑问题。
摘要由CSDN通过智能技术生成

得到的数据个数一定先转化为int

1、计算字符串最后一个单词的长度,单词以空格隔开。

print(len(input().split()[-1])) 
hello world
5

2、题目描述

写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。

import re
x1 = input()
x2 = input()
print(len(re.findall(x2, x1, re.I)))
hello WorLd
l
3

3、题目描述

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),

对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按

照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。

import sys
while True:
    try:
        data = []
        num = sys.stdin.readline()    
        for i in range(int(num)):
            data.append(int(sys.stdin.readline()))
        # b = set(data)
        c = list(set(data))
        d = sorted(c) 
        for i in range(len(d)):
            print(d[i])
    except:
        break
def q_sort(lst, l, r):  # 失败的原因未知
    if l >= r:
        return
    i, j = l, r
    pivot = lst[i]
    while i < j:
        while i < j and lst[j] >= pivot:
            j -= 1
        if i < j:a
            lst[i] = lst[j]  # i的步进统一在下面
        while i < j and lst[i] <= pivot:
            i += 1
        if i < j:
            lst[j] = lst[i]
    lst[i] = pivot
    q_sort(lst, l, i-1)  # 两个边界可以取到
    q_sort(lst, i+1, r)
    
import sys
while True:
    try:
        data = []
        num = sys.stdin.readline()    
        for i in range(int(num)):
            data.append(int(sys.stdin.readline()))
        q_sort(data, 0, len(data)-1)
        data = set(data)
        for i in data:
            print(i)
    except:
        break

4、题目描述

•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;

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

a = input()
b = input()
res = []
def recons(data):
    l = 0
    while l<len(data):
        res.append(data[l:l+8])
        l += 8
    if len(res[-1]) < 8:
        res[-1] += '0'*(8-len(res[-1]))
if a:
    recons(a)
if b:
    recons(b)
for i in res:
    print(i)
abc
123
abc00000
12300000

5、题目描述

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。(多组同时输入 )

def parse(char):
    try:
        return int(char)
    except:
        return ord(char)-55
while True:
    try:
        data = input()[2:]
        le = len(data)
        res = 0
        n = 0
        for i in range(le-1, -1, -1):
            d = data[i]
            d = parse(d)
            res += pow(16, n) * d
            n += 1
        print(res)
    except:
        break

其他答案:

string = input()  # 是零不是欧
print(int(string, 16))
0XA5
165

6、题目描述

功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(如180的质因子为2 2 3 3 5 )

最后一个数后面也要有空格

num = int(input("请输入要分解的正整数:"))
 
temp = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值