华为OD机考-构建输入和输出

2023-11-10

华为OD机考-ACM模式下创建输入

概述:下文列举机考过程中常见输入的构造方法,如字符串、多维数组等,并对用到的函数进行详细讲解,最后通过真题实操巩固知识点。

一、机考中常见的输入

1. 输入字符串

# 输入一行字符串
str1 = input()
print(str1)
# 运行程序输入 hello ~566~
输出:hello ~566~

2. 输入一个或多个数字

方法1:分别输入整数a,b
# 输入整数a 
# 输入整数b,求a+b
# 方法1:先输入a,在输入b
a = int(input())
b = int(input())
print(a + b)
C:\Users\JUNE\AppData\Local\Continuum\anaconda3\python.exe C:/python基础语法练习/csdn.py
4
3
7
Process finished with exit code 0
方法2:使用MAP函数在一行同时输入a,b,以空格分开
#方法2:输入a b(在一行)
a,b = map(int,input().split())
print(a + b)
C:\Users\JUNE\AppData\Local\Continuum\anaconda3\python.exe C:/python基础语法练习/csdn.py
4 6
10
Process finished with exit code 0

3. 输入多个数据(一维数组)

博主对列表操作比较熟练,因此会在输入过程中将输入转换为列表

类型1:有限制输入数据数量
n = int(input())
lst = []
for i in range(n):
	lst.append(int(input()))
print(n)
print(lst)
C:\Users\JUNE\AppData\Local\Continuum\anaconda3\python.exe C:/python基础语法练习/csdn.py
5
1
2
3
4
5
5
[1, 2, 3, 4, 5]
Process finished with exit code 0
类型2:无数量限制且输入以空格分隔
# 方法2:无数量限制,且输入以空格分割时
lst = list(map(int,input().split()))
print(lst)
C:\Users\JUNE\AppData\Local\Continuum\anaconda3\python.exe C:/python基础语法练习/csdn.py
1 2 3 4 5
[1, 2, 3, 4, 5]
Process finished with exit code 0

4. 构建二维矩阵

类型1:创建m*n的矩阵,矩阵中的值为#
m,n = map(int(input().split()))
dp = [["#"] * n for _ in range(m)]
print(dp)
C:\Users\JUNE\AppData\Local\Continuum\anaconda3\python.exe C:/python基础语法练习/csdn.py
5 6
[['#', '#', '#', '#', '#', '#'], ['#', '#', '#', '#', '#', '#'], ['#', '#', '#', '#', '#', '#'], ['#', '#', '#', '#', '#', '#'], ['#', '#', '#', '#', '#', '#']]

Process finished with exit code 0
类型2:创建m*n的矩阵,矩阵中的值为随机输入
m,n = map(int,input().split())
dp = []
for i in range(m):
	dp.append([int(x) for x in input().split()])
print(dp)
C:\Users\JUNE\AppData\Local\Continuum\anaconda3\python.exe C:/python基础语法练习/csdn.py
5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
[[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6]]
Process finished with exit code 0
类型3:输入蛇形矩阵(行数确定,列输入数量不确定)
m = int(input())
dp = []
for i in range(m):
	dp.append(list(map(int,input().split())))
print(dp)
C:\Users\JUNE\AppData\Local\Continuum\anaconda3\python.exe C:/python基础语法练习/csdn.py
5
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
[[1], [1, 2], [1, 2, 3], [1, 2, 3, 4], [1, 2, 3, 4, 5]]
Process finished with exit code 0

二、函数说明

1. input()

文字讲解

函数input()让程序暂停运行,等待用户输入一些文本。获取用户输入后,Python将其存储在一个变量中
变量类型默认为字符串
建议:使用函数时,指定清晰而易于明白的提示**(在考试中不用输入提示)**
引用自《python编程从入门到实践》Eric Matthes著

示例
name = input("Please enter your name: ")
print("Hello, " + name +)
C:\Users\JUNE\AppData\Local\Continuum\anaconda3\python.exe C:/python基础语法练习/csdn.py
Please enter your name: ~566~
Hello, ~566~!

Process finished with exit code 0

2. list()

(1)作为python的内置函数,可以将任何可迭代数据转化为列表类型,并返回转化后的列表。列表符号[]
(2) 列表常见的操作:排序,删除元素,插入元素,修改元素,遍历列表,切片等
(3)列表的索引从0开始

语法示例
#语法
list(object)  # object带转化为列表的数据类型
# 将student = ("xiaoming","zhangsan","lisi")
student = ("xiaoming","zhangsan","lisi")
print(list(student))
C:\Users\JUNE\AppData\Local\Continuum\anaconda3\python.exe C:/python基础语法练习/csdn.py
['xiaoming', 'zhangsan', 'lisi']
Process finished with exit code 0

3. split()

指定分隔符对字符串进行切片,如果参数num有指定值,则分割num+1个字符串

语法示例
# 语法
str.split(str = "",num = string.count(str))
# 示例
str1 = input()
result = str1.split("a",3)
print(result)
C:\Users\JUNE\AppData\Local\Continuum\anaconda3\python.exe C:/python基础语法练习/csdn.py
abcdfagedary
['', 'bcdf', 'ged', 'ry']
Process finished with exit code 0
输入示例
lst = list(map(int,input().split(",")))
print(lst)
C:\Users\JUNE\AppData\Local\Continuum\anaconda3\python.exe C:/python基础语法练习/csdn.py
1,2,3,4,5,6
[1, 2, 3, 4, 5, 6]
Process finished with exit code 0

4. strip()

移除字符串头尾指定的字符(默认为空格或换行)或字符序列

语法示例
#语法
str.strip([chars])  # char移除字符串头尾指定序列
# 示例
str1 = " qwertyuiop "
result = str1.strip(" ")
print(result)
C:\Users\JUNE\AppData\Local\Continuum\anaconda3\python.exe C:/python基础语法练习/csdn.py
qwertyuiop
Process finished with exit code 0

5. map()

根据提供的函数对指定序列做映射
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
python3.X返回迭代器

语法示例
# 语法
map(function,iterable,...)  # function 函数,iterable 一个或多个序列。

>>> def square(x) :         # 计算平方数
...     return x ** 2
...
>>> map(square, [1,2,3,4,5])    # 计算列表各个元素的平方
<map object at 0x100d3d550>     # 返回迭代器
>>> list(map(square, [1,2,3,4,5]))   # 使用 list() 转换为列表
[1, 4, 9, 16, 25]
>>> list(map(lambda x: x ** 2, [1, 2, 3, 4, 5]))   # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]

本案例引用https://www.runoob.com/python/python-func-map.html

三、示例

给定一个非空字符串S,其被N个‘-’分隔成N+1的子串,给定正整数K,要求除第一个子串外,其余的子串每K个字符组成新的子串,并用‘-’分隔。对于新组成的每一个子串,如果它含有的小写字母比大写字母多,则将这个子串的所有大写字母转换为小写字母;反之,如果它含有的大写字母比小写字母多,则将这个子串的所有小写字母转换为大写字母;大小写字母的数量相等时,不做转换。
输入描述:
输入为两行,第一行为参数K,第二行为字符串S。
输出描述:
输出转换后的字符串。
示例1
输入
3
12abc-abCABc-4aB@
输出
12abc-abc-ABC-4aB-@
作者:yaozi
链接:https://leetcode.cn/circle/discuss/niKSMZ/

k = int(input())   #输入整数K,按照K分隔 3
str1 = input()     # 输入字符串12abc-abCABc-4aB@
lst = str1.split("-")  # 将字符串按照“-”分割
#print(lst)       # 输出:['12abc', 'abCABc', '4aB@']
result = []     # 定义一个空列表
result.append(lst[0]) # 第一个字符串不变,先加到result中
for i in lst[1:]: #第一次找到了abCABc
    for j in range(0,len(i),k):  # 遍历i
        uppers = []   # 大写
        lowers = []   # 小写
        for m in i[j:j+k]:   # 截取abCABc,间隔k
            if m.isupper():
                uppers.append(m) # 判断是否大写
            if m.islower():   # 判断是否小写
                lowers.append(m)
        if len(uppers) > len(lowers):  # 判断小写字符多还是大写字符多
            result.append(i[j:j+k].upper())
        elif len(uppers) < len(lowers):
            result.append(i[j:j + k].lower())
        else:
            result.append(i[j:j + k])
print("-".join(result))    # 用-拼接字符串
C:\Users\JUNE\AppData\Local\Continuum\anaconda3\python.exe C:/python基础语法练习/1.字符串分割.py
3
12abc-abCABc-4aB@
12abc-abc-ABC-4aB-@

Process finished with exit code 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

华为OD机考-构建输入和输出 的相关文章

  • scikit-learn 中 ColumnTransformer 的自定义 Transformer 出现问题

    我想在 scikit learn 中创建一个稳定的管道来预处理数据 我试图完成的第一步是估算None对数据框中不同列应用不同策略的值 即用平均值 中位数或其他描述性统计数据替换 但是 我 我开始使用SimpleImputer变压器连同Col
  • for 循环在 Python 中生成/导出输出所需的时间太长

    这个问题是上一个问题的延续for 循环花费太长时间才能产生输出 https stackoverflow com questions 41339200 for loop taking too long to produce output no
  • UnicodeDecodeError:“charmap”编解码器无法解码位置 2483 中的字节 0x81:字符映射到 <未定义>

    我正在解析 csv 文件 但收到以下错误 import os import csv from collections import defaultdict demo data defaultdict list if os path exis
  • Flask - 如何从 JSON GET 请求获取参数

    我有一个发出以下 GET 请求的客户端 api GET tasks 5fe7eabd 842e 40d2 849e 409655e0891d 22task 22 22hello 22 22url 22 22 tasks 5fe7eabd 8
  • matplotlib 的 pcolor 中的白线

    在某些 pdf 查看器 例如 OSX 上的 Preview 中 使用以下命令绘制的图matplotlib的 pcolor 有白线 见下图 我怎样才能摆脱它们 源代码非常简单 选择任何数据x y z import matplotlib mat
  • Python绕相机轴旋转图像

    假设我有一个图像 是在对某些原始图像应用单应性变换 H 后获得的 未显示原始图像 将单应性 H 应用于原始图像的结果是该图像 我想围绕合适的轴 可能是相机所在的位置 如果有的话 将此图像旋转 30 度以获得此图像 如果我不知道相机参数 如何
  • Python中非常大的整数的math.pow是错误的[重复]

    这个问题在这里已经有答案了 我试图通过计算一个整数的非常大的幂来打印一个非常大的数字 尽管我的代码是正确的 但我没有观察到所需的输出 一般来说 Python解释器可以打印系统内存支持的非常大的整数 考虑到这个假设 下面是我正在运行的代码 a
  • PRAW 出现 SSLError?

    我正在尝试开始使用 PRAW 但在使用 login 时遇到问题 我有以下代码 import praw r praw Reddit This is a test bot r login myRedditUsername password 我收
  • 简单 CAE 的问题

    看起来简单的 CAE 不适用于 Carvana 数据集 我正在尝试对 Carvana 数据集进行简单的 CAE 你可以下载它here https www kaggle com c carvana image masking challeng
  • 提取二值图像中的最中心区域

    我正在处理二进制图像 之前使用此代码来查找二进制图像中的最大区域 Use the hue value to convert to binary thresh 20 thresh thresh img cv2 threshold h thre
  • 即使使用标头和 Session 对象,Python requests.get 也会失败并出现 403 禁止

    我正在发出 GET 请求来获取 JSON 它在任何设备上的任何浏览器中都可以正常工作 但不能通过 python 请求 url https angel co autocomplete new tags params query sci tag
  • Kivy错误(python 2.7):sdl2导入错误

    我尝试在我的 Python 2 7 项目 在 PyCharm Windows 10 环境中 上使用 kivy 但出现以下错误 如果有人可以帮助我吗 谢谢 PS 我多次尝试卸载 重新安装库等 并按照像这样的帖子上的建议进行操作 但它不起作用
  • 更改 Windows 上的 virtualenv 文件夹

    计算机修复后 我的 python 项目目录 Windows 发生了变化 比如从 d 到 f 现在我所有的 virtualenv 都坏了 激活 env 后 virtualenv 中的项目无法找到依赖项 并且自定义脚本 来自 env scrip
  • Python:使用Excel CSV文件仅读取某些列和行

    虽然我可以读取 csv 文件而不是读取整个文件 但如何仅打印某些行和列 想象一下这是 Excel A B C D E State Heart Disease Rate Stroke Death Rate HIV Diagnosis Rate
  • 有什么理由不在Python中混合使用多处理和线程模块

    我正在考虑使用Python来实现一个需要大量多线程的程序 另一个要求是它将在桌面上运行 因此拥有许多进程将使应用程序显得混乱且难以杀死 在任务管理器中 因此 我正在考虑使用线程和多处理模块来减少进程数量 据我了解 GIL 仅适用于单个进程
  • 类型错误:不可散列的类型:pandas 的“切片”

    我有一个 pandas 数据结构 我这样创建 test inputs pd read csv input test csv delimiter 它的形状 print test inputs shape is this 28000 784 我
  • 如何在Python中仅列出顶级目录?

    我希望能够仅列出某个文件夹内的目录 这意味着我不需要列出文件名 也不需要其他子文件夹 让我们看看一个例子是否有帮助 在当前目录中我们有 gt gt gt os listdir os getcwd cx Oracle doc DLLs Doc
  • 编写 CherryPy 装饰器以进行授权

    我有一个cherrypy应用程序 在某些视图上我想开始只允许某些用户查看它们 并将其他任何人发送到需要授权的页面 有没有办法使用自定义装饰器来做到这一点 我认为这将是最优雅的选择 这是我想做的一个基本示例 class MyApp autho
  • 如何找到 JAR:/home/hadoop/contrib/streaming/hadoop-streaming.jar

    我正在练习有关 Amazon EMR 的复数视角视频教程 我被困住了 因为我收到此错误而无法继续 Not a valid JAR home hadoop contrib streaming hadoop streaming jar 请注意
  • Django 表单中的只读字段

    如何在 Django 表单中将字段设置为只读 我知道如何禁用某个字段 但这不是我想要的 任何帮助 将不胜感激 您可以使用可选的attrs定义时的参数Field 以机智 somefield forms CharField widget for

随机推荐

  • TFS淘宝分布式文件核心存储引擎源码架构剖析实现

    这里写目录标题 相关背景介绍 相关设计思路介绍 项目基础 文件系统接口 扇区 文件结构 关于inode 为什么淘宝不用小文件存储 淘宝网为什么不用普通文件存储海量小数据 设计思路 关键数据结构哈希表 代码日志 mmp file h mmap
  • 31_access 日志

    文章目录 过滤模块的位置 返回响应 加工响应内容 过滤模块的位置 接收 http 头部 gt pre access 阶段 gt limit req 模块 gt limit conn 模块 gt access 阶段 gt access 模块
  • Java java.lang.NumberFormatException: For input string: ““问题解决

    问题描述 java lang NumberFormatException For input string 问题分析 1 使用Long parseLong Integer parseInt Double parseDouble Float
  • BP神经网络理解原理——用Python编程实现识别手写数字(翻译英文文献)

    BP神经网络理解原理 用Python编程实现识别手写数字 备注 这里可以用这个方法在csdn中编辑公式 https www zybuluo com codeep note 163962 一 前言 本文主要根据一片英文书籍进行学习 并且尝试着
  • CCProxy网络共享代理服务端配置使用

    CCProxy是一个局域网络共享工具 可用于VPN共享等 1 解压安装CCProxy工具 双击CCProxy exe启动 打开如下界面 2 打开设置界面 设置对外共享的IP地址和端口号 如下 点击确定 最后再点击启动即可
  • OAuth2扩展access_token(二)

    接着上一篇继续展示其他功能 2 1 如何拿着生成的access token获取用户详情信息 有的小伙伴可能好奇这个jti是合适呢么东西 这个是jwt生成令牌的唯一标识 后期我们还要拿它来整合redis哦 因为他是唯一的 我们可以把它作为ke
  • Mac系统CLion中C语言EOF如何结束输入(楼主亲测有效)

    今日发现在mac系统CLion中C语言EOF没有办法结束输入 如下代码 我写了一个C语言程序 以EOF结束 include
  • 《Thinking in Java》读后总结与感想

    作为Java界的四大名著之一 Thinking in Java 一直备受推崇 我很早就知道了这本书 当时只是初涉Java 粗略的翻了翻之后觉得看起来这本书讲的比较深就没有再去碰它 后来Java基础学完之后又忙着学Android开发的知识 就
  • 如何打开mysql_MySQL教程

    MySQL经常和 数据库 连在一起读 这很容易对新手造成误解 认为MySQL就是一个数据库 其实不是这样 MySQL是数据库的集合 MySQL里面有很多数据库 那么数据是直接存在数据库里的吗 并不 数据库底下还有一个叫做数据表的存储单元 数
  • 无需公网IP,安全访问云端资源,3步搞定

    某企业将OA ERP Git代码库等业务资源 分别部署在了公有云和私有云 但随着业务发展 分部和移动办公人员逐渐增多 如何高效实现50名员工安全远程访问云端资源成了难题 使用MPLS专线 IPSec VPN等传统方案实现远程访问 不仅实施费
  • Spring的入门及案例----Ioc

    一 Spring的核心 Spring的核心是控制反转 IoC 和面向切面 AOP 简单来说 Spring是一个分层的JavaSE EEfull stack 一站式 轻量级开源框架 IoC 控制反转 对于Spring来说 Spring创建对象
  • 通过css内修改input框placeholder样式

    使用css内修改input框placeholder样式 需求将input框内placeholder属性文字设置颜色及字体大小 修改前 修改后 代码 input webkit input placeholder WebKit Blink Ed
  • 利用std::async实现异步功能

    c 11标准推出了多线程功能 其中我比较喜欢的是把async和future联合起来使用 实现异步功能 目录 首先介绍async的使用办法 输入参数 返回值 std future的使用办法 异步结果的获取 等待异步结果的返回 wait wai
  • Android图像开源视图:SmartImageView

    项目需要 开发中需要加载图片 自己要写图片从网上下载的方法 还要写缓存 等等 在网上找到一个开源项目 smartImageVIew 支持从URL和通讯录中获取图像 可以替代Android标准的ImageView 特征 根据URL地址装载图像
  • C# ---Constructor, Object Initializer, Property, Constant, and readonly

    C Constructor Object Initializer Property Constant and Readonly Constructor and Object Initializer Fields and Property 如
  • queue使用方法

    queue使用方法 提示 如果队列满了 那么使用put放入数据会等待 直到队列有空闲位置才可以放入 放入消息的时候不会进行等待 如果发现队列满了不能放入数据 那么会直接崩溃 import multiprocessing import tim
  • Spring Boot使用@Async实现异步调用

    1 Spring Boot使用 Async实现异步调用 链接 link 原文 http blog csdn net a286352250 article details 53157822 项目GitHub地址 https github co
  • 大数据背景下如何加强高校财务管理水平

    1 建立软 硬件平台 智能的软件平台是大数据技术实施的主要依托 必须加强与大数 据相适应的平台建设 才能充分发挥大数据技术的优势 服务好高校 财务管理工作 云平台存储便捷 处理高效 管理智能 是与大数据技术适应的 最佳软件平台 因此 高校要
  • python宽度学习训练后模型的持久化存储和快速调用

    在模型训练完成后 我们需要对我们训练出来的模型进行持久性储存 这样既能将我们调参后得到的最佳模型进行存储 还可以方便后期同团队的人进行调用预测 1 原理 此处用到的是sklearn库中的joblib包进行存储和加载 因为宽度学习的类属于自定
  • 华为OD机考-构建输入和输出

    华为OD机考 ACM模式下创建输入 概述 下文列举机考过程中常见输入的构造方法 如字符串 多维数组等 并对用到的函数进行详细讲解 最后通过真题实操巩固知识点 一 机考中常见的输入 1 输入字符串 输入一行字符串 str1 input pri