华为机试题:HJ35 蛇形矩阵(python)

news2024/11/25 23:55:52

文章目录

  • 知识点详解
    • 1、input():获取控制台(任意形式)的输入。输出均为字符串类型。
      • 1.1、input()与list(input())的区别、及其相互转换方法
    • 2、print() :打印输出。
    • 3、算术运算符
    • 4、整型int() :将字符串或数字转换为整型(强转) —— 输入可以指定进制,默认十进制。
    • 4、range() :输出指定范围内的所有值(前闭后开)。
    • 5、map():根据给定函数对指定序列进行映射。即把传入函数依次作用到序列的每一个元素,并返回新的序列。
    • 6、str.join():将序列(字符串、元组、列表、字典)中的元素以指定字符连接,并返回一个新的字符串。

描述

蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
例如,当输入5时,应该输出的三角形为:
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11

输入描述: 输入正整数N(N不大于100)

输出描述:输出一个N行的蛇形矩阵。


示例1

输入:
4

输出:
1 3 6 10
2 5 9
4 8
7

Python3

while True:
    try:
        num = int(input())			# 蛇形矩阵的元素个数 = 输入数*2 - 输入数
        for i in range(num):
            if i == 0:				# 第一行(数学公式)
                res = [(x+2)*(x+1)//2 for x in range(num)]
            else:					# 其余行
                res = [x - 1 for x in res[1:]]
                # (1)		res[1:]		当前行相对上一行少一个元素
                # (2)		x-1			且右斜对角线,当前行比上一行小1.
            print(' '.join(map(str, res)))
    except:
        break     
             

知识点详解

1、input():获取控制台(任意形式)的输入。输出均为字符串类型。

【Python】input()函数用法小结

str1 = input()
print(str1)
print('提示语句:', str1)
print(type(str1))

'''
asd123!#
提示语句: asd123!#
<class 'str'>
'''
常用的强转类型说明
int(input())强转为整型(输入必须时整型)
list(input())强转为列表(输入可以是任意类型)

1.1、input()与list(input())的区别、及其相互转换方法

  • 相同点:两个方法都可以进行for循环迭代提取字符,提取后都为字符串类型。
  • 不同点str = list(input()) 将输入字符串转换为list类型,可以进行相关操作。如: str.append()
  • 将列表转换为字符串:str_list = ['A', 'aA', 2.0, '', 1]
  • 方法一:print(''.join(str))
  • 方法二:print(''.join(map(str, str_list)))

备注:若list中包含数字,则不能直接转化成字符串,否则系统报错。

  • 方法一:print(''.join([str(ii) for ii in str_list]))
  • 方法二:print(''.join(map(str, str_list)))
    map():根据给定函数对指定序列进行映射。即把传入函数依次作用到序列的每一个元素,并返回新的序列。

(1) 举例说明:若list中包含数字,则不能直接转化成字符串,否则系统报错。

str = ['25', 'd', 19, 10]
print(' '.join(str))

'''
Traceback (most recent call last):
 File "C:/Users/Administrator/Desktop/test.py", line 188, in <module>
   print(' '.join(str))
TypeError: sequence item 3: expected str instance, int found
'''

(2)举例说明:若list中包含数字,将list中的所有元素转换为字符串。

str_list = ['A', 'aA', 2.0, '', 1]
print(''.join(str(ii) for ii in str_list))
print(''.join([str(ii) for ii in str_list]))
print(''.join(map(str, str_list))) 		# map():根据给定函数对指定序列进行映射。即把传入函数依次作用到序列的每一个元素,并返回新的序列。

'''
AaA2.01
AaA2.01
AaA2.01
'''

2、print() :打印输出。

【Python】print()函数的用法

x, y = 1, 9
print('{},{}' .format(x, y))	# 打印方法一
print('*'*10)					# 打印分割符
print(x, ',', y)				# 打印方法二

'''
1,9
**********
1 , 9
'''

3、算术运算符

序列运算符名称说明举例结果数据类型
【1】+(1)对于数字:求和。c = 1 + 2c = 3int型
【1】+(2)对于序列类型(如:字符串):拼接操作str = 'a' + 'b'str = 'ab'字符串型
2-求差值c = 1 - 2c = -1int型
【3】*(1)对于数字:求积。c = 2 * 3c = 6int型
【3】*(2)对于序列类型(如:字符串):重复操作str = 'a' * 3str = 'aaa'字符串型
4/求商(两个整数或浮点数相除,结果为float型)c = 3 / 2c = 1.5浮点型
5%取余求余数c = 3 % 2c = 1int型
6**求次幂c = 3 ** 2c = 9int型
【7】//地板除法向下取整。(1)两个整数相除,结果为int型c = 3 // 2c = 1int型
【7】//地板除法向下取整。(2)除数或被除数为float类型,则结果为float类型。c = 3 // 2.0c = 1.0浮点型

4、整型int() :将字符串或数字转换为整型(强转) —— 输入可以指定进制,默认十进制。

【Python】int()用法详解

(1)Python3 整型没有大小限制,可以当作 Long int 使用,故Python3 没有 Python2 的 Long int 类型。

整型(int)与长整型(long int)的区别:
(1)整形取值范围:-32768 ~ 32767
(2)长整形取值范围:-2147483648 ~ 2147483647
备注:Python3 没有 Python2 的 Long int 类型。

(2)布尔(bool)是整型的子类型。

函数说明:int(x, base=10)
输入参数:

  • x:字符串或数字。
  • base:参数x为(二进制、八进制、十进制、十六进制)数,默认十进制数
    备注:若带参数base,则输入必须是整数,且整数必须以字符串的形式进行输入。 如:整数12转化为16进制,int('12', base=16)

10进制转化为16进制的算法在这里插入图片描述

输入返回值举例输出
int()整数 0print(int())0
int(整数)整数print(int(2))2
int(浮点数)浮点数的整数部分print(int(-2.1))-2
int(字符串(整数))需先将字符串类型转换为float类型,再进行int转换,否则报错。print(int(float('-2')))-2
int(字符串(浮点数))需先将字符串类型转换为float类型,再进行int转换,否则报错。print(int(float('-2.1')))-2
int('整数', base=16)将输入的16进制整数转换为10进制整数(同理:其余进制)print(int('20', 16))print(int('0XAA', 16))32 和 170

4、range() :输出指定范围内的所有值(前闭后开)。

函数说明:range(start=0,stop,step=1)
输入参数:

  • start:序列的起始点,默认值0。
  • stop:序列的终止点。
  • step:滑动步长,默认为1。正数表示迭代上升,负数表示迭代下降。

备注:前闭后开[A,B),即可以取到A值,但取不到B值。

# (1)指定stop=9, start默认为0,step默认为1
for i in range(9):
    print('A =', i)
'''
A = 0
A = 1
A = 2
A = 3
A = 4
A = 5
A = 6
A = 7
A = 8
'''
# (2)指定start=2, stop=9, step默认为1
for i in range(2, 9):
    print('B =', i)
'''
B = 2
B = 3
B = 4
B = 5
B = 6
B = 7
B = 8
'''
# (3)指定start=2, stop=9, step=-2
for i in range(9, 2, -2):
    print('C =', i)
'''
C = 9
C = 7
C = 5
C = 3
'''

5、map():根据给定函数对指定序列进行映射。即把传入函数依次作用到序列的每一个元素,并返回新的序列。

函数说明:map(function, iterable)
输入参数:

  • function:自定义函数。
  • iterable:可迭代序列
print('将元组转换为list(返回一个迭代器): ', map(int, (1, 2, 3)))
print('将元组转换为list(使用list()转换为列表): ', list(map(int, (1, 2, 3))))

print('将字符串转换为list: ', list(map(int, '1234')))
print('将字典中的key转换为list: ', list(map(int, {1: 2, 2: 3, 3: 4})))

'''
将元组转换为list(返回一个迭代器):  <map object at 0x0000018507A34130>
将元组转换为list(使用list()转换为列表):  [1, 2, 3]

将字符串转换为list:  [1, 2, 3, 4]
将字典中的key转换为list:  [1, 2, 3]
'''

6、str.join():将序列(字符串、元组、列表、字典)中的元素以指定字符连接,并返回一个新的字符串。

函数说明:'Separator'.join(Sequence)
功能说明:以Separator为分隔符,对Sequence所有元素进行逐个分割,并返回一个新的字符串。
输入参数:

  • Separator:代表分隔符。 可以是单个字符(如:''、','、'.'、'-'、'*'等),也可以是字符串(如: 'abc')。
  • Sequence:代表要连接的元素序列。可以是字符串、元组、列表、字典。
    备注1:SeparatorSequence都只能是string型,不能是int型和float型,否则系统报错。
    备注2:字典的读取是随机的。
a1 = 'I Love China !'
print('字符串: ', ' '.join(a1))

a11 = 'I Love China !'
print('字符串: ', ''.join(a11))

a2 = ['I', 'Love', 'China', '!']
print('列表: ', ' '.join(a2))

a3 = ('I', 'Love', 'China', '!')
print('元祖: ', ' '.join(a3))

a4 = {'I': 1, 'Love': 2, 'China': 3, '!': 4}
print('字典: ', ' '.join(a4))

'''
字符串:  I   L o v e   C h i n a   !
字符串:  I Love China !
列表:  I Love China !
元祖:  I Love China !
字典:  I Love China !
'''
import os     	# 导入路径模块
os.getcwd()   	# 获取当前路径
data_save = os.path.join(os.getcwd(), 'data_save')  # 获取当前路径并组合新的路径
print(data_save)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/189420.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

π122M31 双通道数字隔离器 CAN通信隔离兼容ADuM7241ARZ

π122M31 双通道数字隔离器 CAN通信隔离兼容ADuM7241ARZ电路简单、稳定性更高&#xff0c;具有出色的性能特征和可靠性&#xff0c;整体性能优于光耦和基于其他原理的数字隔离器产品。 产品传输通道间彼此独立&#xff0c;可实现多种传输方向的配置&#xff0c;可实现 5.0kVrms…

excel软件应用:如何妙用Word拆分单元格数据

打仗亲兄弟&#xff0c;上阵父子兵&#xff01;Word和Excel就是一对好兄弟&#xff0c;虽然各有分工&#xff0c;但有时也能彼此帮忙。Excel中的莫名其妙问题找Word帮忙解决&#xff0c;往往有效。譬如从平台中导出的数据&#xff0c;先使用Word做一次符号处理再粘贴到Excel中处…

Go语言基础入门第五章

string 什么是stringGo中的字符串是一个字节的切片&#xff0c;可以通过将其内容封装在""中来创建字符串&#xff0c;Go中的字符串是 Unicode 兼容的&#xff0c;并且是 UTF-8 编码。 字符串是一些字节的集合。 package mainimport "fmt"func main() {st…

白盒测试用例设计-笔记

白盒测试用例设计方法白盒设计方法静态&#xff1a;桌面检查、代码审查、代码走查、代码扫描工具动态&#xff1a;逻辑覆盖法&#xff1a;语句覆盖、判断覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖基本路径测试法逻辑覆盖法&#xff1a;是通过对程序逻辑结构的遍历…

97. BERT微调、自然语言推理数据集以及代码实现

1. 微调BERT 2. 句子分类 3. 命名实体识别 4. 问题回答 5. 总结 即使下游任务各有不同&#xff0c;使用BERT微调时只需要增加输出层但根据任务的不同&#xff0c;输入的表示&#xff0c;和使用的BERT特征也会不一样 6. 自然语言推理数据集 斯坦福自然语言推断语料库&#xf…

BP神经网络算法实现

目录 一、实验数学原理 二、实验算法和实验步骤 三、结果分析 1. 均方误差变化的影响 2. 迭代次数变化的影响 3. 学习效率变化的影响 四、预测 一、实验数学原理 激活函数&#xff1a; 一般使用S形函数&#xff08;即sigmoid函数&#xff09;&#xff0c;比如可以使用log-…

【爬虫系列】Python如何实现进度条效果?

一、需求 在爬取数据过程中&#xff0c;发现不看输出日志是不知道当前的爬取进度&#xff0c;而单纯靠控制台输出日志信息也不方便判断。因此&#xff0c;就想办法给爬取过程加个进度条&#xff0c;实时展示当前的爬取进度。 有了这个需求和想法之后&#xff0c;那如何实现呢…

k8s中不同名称空间下的pod无法解析服务名

1、背景 公司的项目需要使用容器化部署&#xff0c;为了更好的维护和管理&#xff0c;我将各个项目按照命名空间进行隔离开&#xff0c;但是却发现存在一些问题 不同的系统间需要项目调用&#xff0c;而且是按照服务名进行调用&#xff0c;但是却导致不同名称空间下pod无法解析…

mac 快应用开发工具 真机调试 usb调试 提示Error:没有找到Android设备

项目场景&#xff1a; 项目场景&#xff1a;mac使用快应用开发工具连接Android手机 问题描述 显示错误没有找到Android设备 原因分析&#xff1a; adb连接的问题 解决方案&#xff1a; 1.确保手机开启开发者模式 2.确保手机与mac的连接线能传输数据&#xff0c;有的线只能…

python+moviepy音视频处理(一):基本操作

目录 视频处理 视频加载和输出 视频转换gif 视频裁剪 视频音量调节 去掉视频声音 视频中的音频提取与替换 获取视频属性 倍数播放视频 截取视频某帧为封面 多视频拼接 音频处理 替换视频文件的音频 多个音频文件拼接 安装&#xff1a;pip install moviepy 中文官…

【自学Docker】Docker stats命令

Docker stats命令 大纲 docker stats命令教程 docker stats 命令可以用于动态显示 Docker容器 的资源消耗情况&#xff0c;包括&#xff1a;CPU、内存、网络I/O。docker stats命令也可以指定已停止的容器&#xff0c;但是不会返回任何信息。 docker stats命令语法 haicoder…

Windows下载安装Nignx

下载 下载地址&#xff1a;http://nginx.org/en/download.html 下载完成以后,得到nginx压缩包; Nginx启动 方式一&#xff1a;可执行文件启动 双击nginx.exe启动 现在,我们打开任务管理器,如果发现nginx进程存在,说明启动完成; 方式二&#xff1a;命令行启动 进入nginx所在…

【Mysql第三期 基本查询语句结构】

文章目录1. SQL概述1.1 SQL背景知识1.2SQL 分类2. SQL语言的规则与规范2.1 基本规则2.2 SQL大小写规范 &#xff08;建议遵守&#xff09;2.3 注 释2.4 命名规则&#xff08;暂时了解&#xff09;3.基本的SELECT语句3.1 查询基本结构3.2 列的别名3.3 去除重复行扩展windows cmd…

同步FIFO设计verilog设计及仿真

同步FIFO设计 1.功能定义: 用16*8 RAM实现一个同步先进先出(FIFO)队列设计。由写使能端控制该数据流的写入FIFO,并由读使能控制FIFO中数据的读出。写入和读出的操作由时钟的上升沿触发。当FIFO的数据满和空的时候分别设置相应的高电平加以指示。 2.顶层信号定义: 信号名…

最小生成树问题(Prim算法和Kruskal算法)

问题引入&#xff1a; 这算是一道模板题了&#xff0c;只不过这次在做的时候感觉又学到了些新的东西&#xff0c;之前都是数据结构里学的&#xff0c;因为用惯了C&#xff0c;所以就想摆脱那些邻接数组之类的写法&#xff0c;用STL试一下&#xff0c;在其中把我遇到的一些问题写…

【论文翻译】边缘应用中加速卷积神经网络的剪枝算法综述

摘要 随着卷积神经网络&#xff08;CNN&#xff09;模型大小的增加&#xff0c;模型压缩和加速技术对于在边缘设备上部署这些模型变得至关重要。在本文中&#xff0c;我们对修剪进行了全面的调查&#xff0c;这是一种主要的压缩策略&#xff0c;可以从CNN模型中删除非关键或冗…

iOS_Memory Leak 内存泄露治理

1、内存分类 官方文档介绍 app 的内存分三类&#xff1a; Leaked memory&#xff1a;Memory unreferenced by your application that cannot be used again or freed (also detectable by using the Leaks instrument) Abandoned memory&#xff1a;Memory still referenced b…

设计模式 - 结构型模式_桥接模式

文章目录结构型模式概述CaseBad ImplBetter Impl小结结构型模式 结构型模式主要是解决如何将对象和类组装成较大的结构&#xff0c; 并同时保持结构的灵活和⾼效。 结构型模式包括&#xff1a;适配器、桥接、组合、装饰器、外观、享元、代理&#xff0c;这7类 概述 桥接模式的…

2023牛客寒假算法基础集训营4

A-清楚姐姐学信息论 链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 不同进制对于信息的表示效率不同&#xff0c;清楚姐姐最近学习了信息论中使用不同进制表示信息的方法&#xff0c;她现在想要比较两种不同进制表示信息时&#xff0c;谁的…