草庐IT

牛客网华为机试(python)

JAPAN_is_shit 2024-02-10 原文

前言

牛客网华为机试(https://www.nowcoder.com/exam/oj/ta?tpId=37)
按难度分为入门,简单,中等,困难,较难五个等级

目录标题

一,入门

HJ7 取近似值

n = float(input())
res = lambda x:int(x+0.5)
print(res(n))

HJ9 提取不重复的整数
提取到输入字符串后就对其进行倒置,排序时直接按ls1的顺序进行排列

ls1 = list(input()[::-1])
ls2 = list(set(ls1))
ls2.sort(key=ls1.index)
print(int(''.join(ls2)))

HJ46 截取字符串
字符串切片

str1 = input()
n = int(input())
print(str1[:n])

HJ58 输入n个整数,输出其中最小的k个
map()函数是为了初始化n,k以及列表中的str类型为int类型
最后输出的*nums[:k]是对num[:k]的解包。

n, k = map(int, input().split())
nums = sorted(list(map(int, input().split())))
print(*nums[:k])

HJ101 输入整型数组和排序标识,对其元素按照升序或降序进行排序
依然是map()函数转化类型,sort()函数排序,*解包列表。

n = int(input())
ls1 = list(map(int,input().split()))
flag = int(input())
if flag == 0:
    ls1.sort()
    print(*ls1)
elif flag == 1:
    ls1.sort(reverse=True)
    print(*ls1)

二,简单

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

ls1 = input().split()
print(len(ls1[-1]))

HJ2 计算某字符出现次数
count函数

str1 = input()
str2 = input()
print(str1.lower().count(str2.lower()))

Counter类

from collections import Counter
str1 = input().lower()
str2 = input().lower()
s = Counter(str1)
if str2 in str1:
    print(s.get(str2))
else:
    print('0')

for循环

str1 = input().lower()
str2 = input().lower()
count = 0
for i in str1:
    if str2 == i:
        count+=1
print(count)

HJ4 字符串分隔
ljust()函数是一个填充函数,str1.ljust(8,“0”)是指让str1靠左对齐,不足8位时剩下的用0填充

str1 = input()
while len(str1)>8:
    print(str1[:8])
    str1 = str1[8:]
print(str1.ljust(8,"0"))

HJ5 进制转换
十六进制转10进制

str1 = input()
print(int(str1,16))

HJ6 质数因子
给一个整数求其质因子,180 = 22335,2 2 3 3 5就是180的质因子
1没有质因子,2的质因子是本身
math.sqrt(n)是一个数开平方,一个数的质数最小为2,最大也不超过平方根
%是取余,//是整除

import math
n = int(input())
for i in range(2,int(math.sqrt(n))+1):
    while n%i == 0:
        print(i,end=' ')
        n = n//i
if n >= 2:
    print(n,end=' ')

HJ8 合并表记录
dicc[i] = dicc.get(i,0) + j 的意思是向dicc中的键 i 取值,取不到就意味着该键不存在并获取到默认值0,所以dicc[i] = 0+j 。如果键 i 存在,取出值假如为10,所以重新给dicc[i]赋值10+j
sorted(dict) 操作字典类型也是返回一个列表,但是默认是键的递增列表。

num = int(input())
dicc = {}
for n in range(num):
    i,j = list(map(int,input().split()))
    dicc[i] = dicc.get(i,0) + j
for k in sorted(dicc):
    print(f'{k} {dicc[k]}')

HJ10 字符个数统计

str1 = input()
print(len(set(str1.replace('\n',''))))

HJ11 数字颠倒
数字颠倒用字符串切片很容易做到
下面是用数组来做的,思路是计算出str(num)的长度,把字符串后面的字符添加到列表前面来,然后输出

nums = str(input())
i = len(nums) - 1
ans = []
while  i>=0:
    ans.append(nums[i])
    i-=1
res = ''.join(ans)
print(res)

HJ12 字符串反转

str1 = str(input())
print(str1[::-1])

HJ13 句子逆序
切片倒置列表

list = input().split()
print(' '.join(list[::-1]))

reserve()函数倒置列表

list = input().split()
list.reverse()
print(' '.join(list))

HJ14 字符串排序

n = int(input())
lst = []
for i in range(n):
    lst.append(str(input()))
lst.sort()
for i in lst:
    print(i)

HJ15 求int型正整数在内存中存储时1的个数
这实际上是一个十进制转化二进制,然后求字符串中某个字符的出现次数

n = int(input())
n = bin(n)
print(n.count('1'))

当然也可以换进制转换的方法和字符出现次数的方法

n = int(input())
lst = []
while n != 0:
    lst.append(n%2)
    n = n//2

count = 0
for i in lst:
    if i==1:
        count+=1
print(count)

HJ21 简单密码

str1 = str(input())
dicc = {
    'abc':2,
    'def':3,
    'ghi':4,
    'jkl':5,
    'mno':6,
    'pqrs':7,
    'tuv':8,
    'wxyz':9,
}
lst = []
for i in str1:
    if i.isdigit():
        lst.append(int(i))
    elif i.isupper():
        if i == "Z":
            i = "a
        else:
            i = chr(ord(i.lower())+1)
        lst.append(i)
    elif i.islower():
        for j in dicc.keys():
            if str(i) in j:
                i = dicc[j]
                lst.append(i)
print(''.join(map(str,lst)))

HJ22 汽水瓶
两个汽水瓶也可以换一瓶汽水,最后不会剩汽水瓶。
思路:拿两个空瓶,借一个商家的空瓶,换一瓶汽水,喝完后再还给商家一个空瓶,相当于用两个空瓶换一瓶汽水,然后什么也没有得到。

for i in range(10):
    n = int(input())
    if n==0:
        break
    print(n//2)

三个汽水瓶可以换一瓶汽水,然后获得一个空瓶,最后剩余两个汽水瓶一定可以换一瓶汽水。
下面这个思路是:每次都以三个空瓶换一瓶汽水,然后得到一个空瓶,计算出最后总空瓶数,然后循环,最后剩余两个汽水瓶就再换一个,否则直接输出循环的结果。


    #count_1  换到的汽水
    #count_2  汽水瓶
    #count_3   喝到的汽水
for i in range(10):
	count_3 = 0 
    n = int(input())
    if n == 0:
        break
    while n > 2:
        count_1 = n//3
        count_2 = n%3
        count_3 = count_3 + count_1
        n = count_1 + count_2

    if n == 2:
        count_3+=1
    print(count_3)

HJ23 删除字符串中出现次数最少的字符
先求出字符出现次数,删除最少的字符,然后按原来的顺序把字符重新输出为字符串.
思路:求出字符出现次数,然后写入字典,求出字典值的最小值,循环原字符串,除了出现最少的字符,其他都输出。

str1 = input()
lst = set(list(str1))
dicc = {}
for i in lst:
    dicc[i] = str1.count(i)
MIN = min(dicc.values())
res = ''
for i in str1:
    if dicc[i] != MIN:
        res += i
print(res)           

HJ31 单词倒排
匹配字符串中的单词到列表里,然后倒置用join()方法变为字符串输出。
思路:正则表达式匹配出单词,然后倒置即可

import re
str1 = input()
lst1 = re.findall(r'\b[a-zA-Z]+\b',str1)
print(*lst1[::-1])
#print(*lst1[::-1])  解包方法

HJ34 图片整理

str1 = input()
lst = list(str1)
lst.sort(key=ord)
print(''.join(lst))

有关牛客网华为机试(python)的更多相关文章

  1. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  2. Python 相当于 Perl/Ruby ||= - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。

  3. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

  4. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  5. python - 如何读取 MIDI 文件、更改其乐器并将其写回? - 2

    我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的

  6. 「Python|Selenium|场景案例」如何定位iframe中的元素? - 2

    本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决

  7. python ffmpeg 使用 pyav 转换 一组图像 到 视频 - 2

    2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p

  8. 牛客网专项练习30天Pytnon篇第02天 - 2

    1.在Python3中,下列关于数学运算结果正确的是:(B)a=10b=3print(a//b)print(a%b)print(a/b)A.3,3,3.3333...B.3,1,3.3333...C.3.3333...,3.3333...,3D.3.3333...,1,3.3333...解析:    在Python中,//表示地板除(向下取整),%表示取余,/表示除(Python2向下取整返回3)2.如下程序Python2会打印多少个数:(D)k=1000whilek>1:    print(k)k=k/2A.1000 B.10C.11D.9解析:    按照题意每次循环K/2,直到K值小于等

  9. Python 刷Leetcode题库,顺带学英语单词(31) - 2

    ValidPalindromeGivenastring,determineifitisapalindrome,consideringonlyalphanumericcharactersandignoringcases. [#125]Example:"Aman,aplan,acanal:Panama"isapalindrome."raceacar"isnotapalindrome.Haveyouconsiderthatthestringmightbeempty?Thisisagoodquestiontoaskduringaninterview.Forthepurposeofthisproblem

  10. python - 是否可以使用 Ruby 或 Python 禁用 anchor /引用来发出有效的 YAML? - 2

    是否可以在PyYAML或Ruby的Psych引擎中禁用创建anchor和引用(并有效地显式列出冗余数据)?也许我在网上搜索时遗漏了一些东西,但在Psych中似乎没有太多可用的选项,而且我也无法确定PyYAML是否允许这样做.基本原理是我必须序列化一些数据并将其以可读的形式传递给一个不是真正的技术同事进行手动验证。有些数据是多余的,但我需要以最明确的方式列出它们以提高可读性(anchor和引用是提高效率的好概念,但不是人类可读性)。Ruby和Python是我选择的工具,但如果有其他一些相当简单的方法来“展开”YAML文档,它可能就可以了。 最佳答案

随机推荐