Python每日一练 07

news/2024/3/29 9:42:49/文章来源:https://blog.csdn.net/qq_52417436/article/details/128112888

Python每日一练 07

文章目录

  • Python每日一练 07
    • 一、切片
    • 二、实例:回文字符串
    • 三、实例:回文素数
    • 四、实例:输出成绩
    • 五、实例:提取身份号码中的日期与性别

一、切片

字符串序列及列表、元组和range等序列类型数据都支持切片操作,切片是从一个序列中获取一个子序列,切片结果的数据类型与原序列相同
切片的方法是:

seq[start: end: step]

seq:为字符串及列表、元组或range等序列类型数据对象名。

start:表示切片开始的位置元素序号,是第一个要返回的元素的索引号,即切片结果包含seq[start]元素。

正向索引start缺省值为0,切片从第一个元素开始时,start可以省略。逆向索引start缺省值为负的序列长度,即 -len(seq);

s = 'Hello World!'
print(s[6:12])  # 根据序号[6:12]切片,输出不包括序号12的字符串'World!'
print(s[:5])    # 从起点到序号为5的位置切片,不包括5,'Hello'
print(s[:-7])   # 从序号-12向后到-7切片,输出'Hello'
World!
Hello
Hello

end:表示是切片结束位置元素序号。正向索引最后一个元素序号为序列长度减1,即: len(seq)-1; 逆向索引最后一个元素序号为 -1;切片结果不包括seq[end]元素,即切片取不到右边界。

s = 'Hello World!'
print(s[:-7])    # 从序号-12向后到-7切片,输出'Hello'
print(s[-6:-1])  # 负向索引,不包含右边界元素,输出'World'
print(s[6:-1])   # 混用正负索引,输出'World'
print(len(s))    # 字符串长度12,最后一个元素序号11
print(s[:11])    # Hello World,未切取到最后字符 “!”
Hello
World
World
12
Hello World

切片到最后一个元素时,end 省略设为序列长度(确保取到最后一个元素)。想返回包含最后一个元素(len(s)-1)的切片时,结束位置的序号end应该设为len(s)或省略结束位置序号,即应该使用切片seq[start: len(s)] 或seq[start: ]。

s = 'Hello World!'
print(len(s))  # 字符串长度12,最后一个元素序号11
print(s[:12])  # Hello World!
print(s[:])    # Hello World!
print(s[6:])   # World!,未切取到最后字符 “!”
12
Hello World!
Hello World!
World!
s = 'Hello World!'
print(s[:-7])    # 从序号-12向后到-7切片,输出'Hello'
print(s[6:])     # 从序号6向后到最后一个字符切片,输出'World!'
print(s[-6:-1])  # 负向索引,不包含右边界元素,输出'World'
print(s[6:-1])   # 混用正负索引,输出'World'
Hello
World!
World
World

step:表示取值的步长,默认为1,步长值可以为负值,但步长不能为0。步长为正时正向切片,步长为负时逆向切片

s = 'Hello World!'
print(s[::2])  # 步长为2,输出序号为偶数的元素,输出'HloWrd'
print(s[1::2])  # 步长为2,输出序号为奇数的元素,输出'el ol!'
HloWrd
el ol!

设置步长为 -1可实现逆向切片,可用于字符串的逆序

s = 'Hello World!'
print(s[-1::-1])  # 按步长为-1进行切片,输出'!dlroW olleH'
print(s[::-1])    # 按步长为-1进行切片,输出'!dlroW olleH'
!dlroW olleH
!dlroW olleH

二、实例:回文字符串

一个字符串,如果各字符逆序排列与原字符串相同,则称为回文,如“12321”、“上海自来水来自海上”,用户输入一个字符串,判断该字符串是否为回文,如是回文输出“True”,否则输出“False”。

判断输入的字符串是否是回文,可以从前到后将字符串的每一个字符与从后向前每一个字符一一比较,如果都一一相同,则是回文。Python在处理字符串方面有更灵活的方法,可以利用切片方法(s [start: end: step]),令步长step值为-1,从最后一个字符开始,到字符串开始字符结束进行切片,即构造切片s[-1::-1]或s[::-1] ,可以获得反转后的字符串。比较反转后的字符串与原字符串是否相同,相同则是回文。

s = input()            # 输入一个字符串
if s == s[-1::-1]:     # s[-1::-1]将字符串反转,判断反转后是否与原字符串相等print('True')
else:print('False')

可以将其定义为函数,利用比较运算结果为布尔值的特性,直接返回比较运算表达式,避免使用分支语句。

def palindromic(s):"""接收一个字符串为参数,判定其是否为回文,返回布尔值。"""return s == s[::-1]  # 比较运算结果为布尔值True或False,可直接做为函数返回值

三、实例:回文素数

回文素数是指一个数既是素数又是回文数。例如,131,既是素数又是回文数。 用户输入一个正整数 n , 编程在一行内从小到大输出小于n的回文素数,数字后后面用一个空格进行分隔。

输入:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬

输入一个正整数

‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬输出:

‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬符合要求的回文素数

def is_prime(n):"""判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False减小判定区间,减少循环次数,提升效率。"""if n < 2:return Falsefor i in range(2, n):if n % i == 0:return Falseelse:return Truedef palindromic(num):"""接收一个数字为参数,判定其是否为回文数,返回布尔值。"""return str(num) == str(num)[::-1]def output_prime(num):"""接收一个正整数num为参数,在一行中从小到大输出小于n的回文素数。函数无返回值"""for i in range(num):if palindromic(i) is True and is_prime(i):print(i, end=' ') # 主函数   
if __name__ == "__main__":n = int(input())output_prime(n)
200
2 3 5 7 11 101 131 151 181 191 

切片的过程是从第一个要返回的元素开始,到第一个不想返回的元素结束。切片操作会将按照给定的索引和步长,截取序列中的对象组成的新的片段。

# 列表类型
scores = ['李明', 84, 80, 95, 88, 96, 76, 65, 85, 98, 55]
print(scores[5:])       # 从5到序列结束的元素,输出[96, 76, 65, 85, 98, 55]
print(scores[1:-1])     # 混用索引[84, 80, 95, 88, 96, 76, 65, 85, 98]
print(scores[1::2])     # 步长为2,隔一个,输出[84, 95, 96, 65, 98]
print(max(scores[1:]))  # 切片返回除序号0的列表,max返回其最大值
print(sum(scores[1:]))  # 利用sum()函数对切片获取的序列求和,输出822
# len()获得切片后的列表元素个数,输出切片后的序列元素的平均值82.2
print(sum(scores[1:])/len(scores[1:]))
[96, 76, 65, 85, 98, 55]
[84, 80, 95, 88, 96, 76, 65, 85, 98]
[84, 95, 96, 65, 98]
98
822
82.2

四、实例:输出成绩

列表[‘李明’, 84, 80, 95, 88, 96, 76, 65, 85, 98, 55]中存储的是李明同学若干门课程的成绩。按输出示例格式输出该同学的最高分、最低分、总分和平均分。

提示:

max()、min()可获得序列的最大值和最小值

sum()可获得序列元素的和

len()可获得序列长度,即元素的个数

注意:

计算成绩和统计时,要略过姓名,可用切片方法实现。

输出格式控制可用以下格式,第一个大括号中加入姓名对象,第二个大括号中加入成绩对象:f’{}同学成绩最高分为{}’

ls = ['李明', 84, 80, 95, 88, 96, 76, 65, 85, 98, 55]
name = ls[0]
score = ls[1:]
max_score = max(score)
min_score = min(score)
sum_score = sum(score)
avg_score = sum_score/len(score)
print(f'{name}同学成绩最高分为{max_score}')
print(f'{name}同学成绩最低分为{min_score}')
print(f'{name}同学成绩总分为{sum_score}')
print(f'{name}同学平均成绩为{avg_score}')
李明同学成绩最高分为98
李明同学成绩最低分为55
李明同学成绩总分为822
李明同学平均成绩为82.2
# range类型,切片结果仍为range
r = range(10)                     # 获得0,1,2,3,4,5,6,7,8,9的序列
print(r[3:6])                     # 对range(10)切片,返回新对象range(3, 6)
print(sum(r[1::2]))               # 输出序号为奇数的元素的和 25
print(sum(r[0::2])/len(r[0::2]))  # 输出序号为偶数的元素的平均值 4.0
range(3, 6)
25
4.0
# 包含字符串、数字、元组和列表等多种类型数据的列表
# 无论元素是什么,列表切片结果一定是列表cv = ['李明', 35, ('博士','副教授'), [96, 92, 85]]
print(cv[2:4])   # 切片得到新列表[('博士', '副教授'), [96, 92, 85]]
[('博士', '副教授'), [96, 92, 85]]
[]
[]

切片的序号不存在越界的问题,超出范围的序号或是步长为正时start大于end值时,结果都是空序列

print('Hello World!'[100:4])  # 切片得到空字符串''
print(cv[10:4])            # 切片得到空列表[]
print(cv[10:20])           # 切片得到空列表[]
print(range(10)[100:200])  # 从最大序号向后切片到最大序号,结果range(10, 10),空
[]
[]
range(10, 10)

五、实例:提取身份号码中的日期与性别

中国的居民身份证号是一个18个字符的字符串::

第7–14位数字表示出生年、月、日

第17位数字表示性别,奇数表示男性,偶数表示女性。

输入一个合法的身份证号,输出其出生年月日。(注:本书测试所用身份证号是用程序模拟生成的虚拟号码)

id_number = input()           # 测试数据是合法的18位身份证号
year = id_number[6:10]        # 序号6-9的字符串,年份
month = id_number[10:12]      # 序号为10-11的字符串,月份
date = id_number[12:14]       # 序号为12-13的字符串,日期
if id_number[16] in '13579':  # 若第17位数字在'13579'中存在,为奇数gender = '男'
else:gender = '女'
print('出生:  ' + year + '年' + month + '月' + date + '日')  # 字符串拼接
print(f'出生:  {year}{int(month)}{int(date)}日')         # int()转整数去除前导0
print(f'性别:  {gender}')
530126193303150409
出生:  19330315日
出生:  1933315日
性别:  女

在这个程序中,通过字符串切片id_number[6:10]、id_number[10:12]、id_number[12:14]分别获取出生年份、月份和日期。

在切片时,切分出来的子字符串包括左边界,但不包括右边界。

语句print(‘出生于’+year+‘年’+month+‘月’+day+‘日’)的括号里,采用6个“+”将4个字符串和3个字符串变量拼接成一个新的字符串并输出。

这里也可以用“f”前缀格式化字符串输出,这种方法不限制变量类型,使用更为方便。

此处可用int()函数转为整数,去除月份或日期前导0,保持与身份证上的输出一致。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebDAV之葫芦儿·派盘+静读天下

静读天下 支持webdav方式连接葫芦儿派盘。 如今,很多人都喜欢在手机上进行阅读,所以想要获得更好的阅读体验,一款实用的电子书就显得尤为重要了,因此,静读天下这款纯正的本地电子书阅读软件您值得拥有,而且还支持本地电子书备份到葫芦儿派盘。 静读天下是一款备受千万…

【问题思考总结】NAT的公有地址怎么转换为私有地址?【MAC地址和IP地址的转换】

问题起源 在做一道题的时候&#xff0c;涉及到了由内网到外网再到内网时的IP地址转换。在外网的时候&#xff0c;答案说的是不能够用私有IP地址作为源IP地址&#xff0c;然后疑问产生了&#xff1a;如果不能用私有IP地址作为目的地址&#xff0c;他又怎么能够找到那个主机呢&a…

在 Node.js 中操作 Redis

在 Node.js 中操作 Redis Node.js 中可以操作 Redis 的软件包推荐列表&#xff1a;https://redis.io/clients#nodejs。 推荐下面两个&#xff1a; node-redisioredis 这里主要以 ioredis 为例。 ioredis 是功能强大的 Redis 客户端&#xff0c;已被世界上最大的在线商务公司…

MySQL日志管理、备份与恢复

文章目录一、mysql常用日志1、概述①、错误日志②、二进制日志③、中继日志④、慢查询日志⑤、通用查询日志&#xff0c;用来记录MySQL的所有连接和语句&#xff0c;默认是关闭的2、数据库中查询日志状态①、查看二进制日志开启状态②、查看慢查询日志功能是否开启③、查看慢查…

GAN生成漫画脸

最近对对抗生成网络GAN比较感兴趣&#xff0c;相关知识点文章还在编辑中&#xff0c;以下这个是一个练手的小项目~ (在原模型上做了&#xff0c;为了减少计算量让其好训练一些。) 一、导入工具包 import tensorflow as tf from tensorflow.keras import layersimport numpy a…

业务:财务会计业务知识

一、引言 会计是以货币为主要计量单位&#xff0c;对企业、事业、机关、团体及其他经济组织的经济活动进行记录、计算、控制、分析、报告&#xff0c;以提供财务和管理信息的工作。会计的职能主要是反映和控制经济活动过程&#xff0c;保证会计信息的合法、真实、准确和完整&a…

校园论坛网站设计设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

网页JS自动化脚本(四)修改元素的尺寸颜色显隐状态

修改元素尺寸 在定位到了元素之后, 我们就可以对元素进行一些修改了,我们先来修改元素泊宽度以及高度 window.onloadfunction(){var theElementdocument.querySelector("img.undertips-link-lefticon");theElement.style.width"100px";theElement.style.…

命令模式

文章目录思考命令模式1.命令模式的本质2.何时选用命令模式3.优缺点4.实现耦合写法命令模式优化耦合写法命令模式实现撤销命令模式实现厨师做菜命令模式实现排队命令模式实现日志持久化思考命令模式 命令模式就是解耦强耦合代码&#xff0c;用户只关心功能的实现&#xff0c;开发…

win11该文件没有与之关联的应用怎么办

win11用户在使用电脑的时候遇到了“该文件没有与之关联的应用”的提示&#xff0c;这是怎么回事呢&#xff1f;应该怎么办呢&#xff1f;出现这个情况应该是注册表被误删了&#xff0c;大家需要新建一个文本文档&#xff0c;然后输入下文提供的指令&#xff0c;之后将其重命名为…

linux不显示当前路径的解决方法

1.输入vim ~/.bashrc进入用户的shell环境变量的配置文件(可以设置环境变量以及通过alias设置别名&#xff09; 2.按下“i”键进入编辑模式(底部显示INSERT&#xff09; 3.修改\w为$PWD&#xff1a; 修改为&#xff1a; 4.按“esc”键后输入":wq"保存并退出&#xff…

Databend 开源周报 #69

Databend 是一款强大的云数仓。专为弹性和高效设计&#xff0c;自由且开源。 即刻体验云服务&#xff1a;https://app.databend.com。 New Features multiple catalog 实现删除用户定义目录 (#8820) meta 新增用于删除 key 和使 key 过期的 cli 命令 (#8858) planner 支…

手把手教你做智能合约开源|多文件合约开源|引用文件开源

本文手把手教你使用 区块链浏览器 验证智能合约的三种方式。 验证单一 Solidity 文件 在开始验证之前&#xff0c;我们需要首先部署智能合约。进入 Remix IDE&#xff0c;创建一个合约新文件。复制粘贴下面的代码&#xff1a; // SPDX-License-Identifier: MITpragma solidit…

JAVA学习-java基础讲义02

java基础讲义02一 进制1.1 进制介绍1.2 二进制1.3 任意进制到十进制转换1.4 十进制到任意进制之间的转换1.5 快速转换法1.6 有符号数据表示法二 Java变量和数据类型1.1 变量概述1.2 数据类型1.3 变量定义三 Java数据类型转换3.1 数据类型转换概述3.2 数据类型转换之自动类型转换…

[附源码]Python计算机毕业设计SSM老年公寓管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

爬虫工作流程、请求与响应原理、requests库讲解

爬虫工作流程、请求与响应原理、requests库讲解 爬虫分类主要分为两大板块 web爬虫&#xff08;浏览器爬虫&#xff09; APP爬虫&#xff08;手机端爬虫&#xff09; 在这两大板块中又可以把爬虫归类为聚焦爬虫和通用爬虫 聚焦爬虫&#xff1a;针对某一个接口&#xff08;ur…

使用Conda

0. Anaconda Prompt 命令提示符 0.1 验证conda是否被安装 conda --version0.2 conda管理环境 可以用命令复制和删除环境 参考. 1. Conda管理包 1.1 常用包管理功能 查找包查看包安装包 查找分为精确查找和模糊查找&#xff0c;如下图所示 卸载包更新包 1.2 conda管理环…

三肽Gly-Cys-Gly、88440-55-5

三肽Gly-Cys-Gly 编号&#xff1a;111774 CAS号&#xff1a;88440-55-5 三字母&#xff1a;H2N-Gly-Cys-Gly-COOH 描 述&#xff1a;羧肽酶 U 抑制剂&#xff08;凝血酶可激活的纤维蛋白溶解抑制剂&#xff0c;TAFI&#xff09;&#xff0c;Ki 0.14 μM。编号: 111774 中文名称…

安装 laravel 遇到的错误和解决方案

安装 laravel 遇到的错误和解决方案 纯粹是为了运行下 laravel&#xff0c;遇到了错误记录下&#xff0c;分享给需要的人。 下载 PHP Windows 版 &#xff0c;我选择的版本是 PHP 7.4 (7.4.33)。下载文件以后找个文件夹解压就可以了。Composer 安装&#xff0c;官网 。 勾选以…

C/C++家族族谱管理系统

C/C家族族谱管理系统 课题名称: 家族族谱管理 主要目标: 通过训练&#xff0c;强化学生对树结构、二叉树结构的表示及操作算法的掌握和灵活运用 3.具体要求: 要求设计实现具有下列功能的家谱管理系统: (1) 输入文件以存放最初家谱中各成员的信息&#xff0c;成员的信息中…