Contents

  • 一、元组
  • 二、字符串
  • 三、字典

一、元组

1.部分习题与解答

1-1 元组概念

写出下面代码的执行结果和最终结果的类型。

(1, 2)*2
(1, )*2
(1)*2

解:
(1, 2) 显然是一个元组类型,而乘号 * 在元组中是复制拼接,所以输出一个为(1, 2, 1, 2)的元组;元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用。

print(a, type(a))  # (1, 2, 1, 2) <class 'tuple'>
print(b, type(b))  # (1, 1) <class 'tuple'>
print(c, type(c))  # 2 <class 'int'>

1-2 拆包过程是什么?
下述过程属于拆包吗?
可迭代对象拆包时,怎么赋值给占位符?

a, b = 1, 2

解:
①玩过穿越火线的都知道,拆包长按E键就可以了,但在这里,python的元组拆包可不是这样。
元组拆包,是一个赋值表达式,效果是,将=(赋值操作符)右边的元组的元素拆开,赋值给=左边的多个变量。我们可以将这一操作理解为平行赋值。也就是说拆包会把一个可迭代对象中的元素一并赋值到对应变量中去。
例子:

t = (1, 10.31, 'python')
(a, b, c) = t
print(a, b, c)
# 1 10.31 python

不属于,这是赋值表达式

③拆包可以应用到任何可迭代对象上,唯一的硬性要求是,被可迭代对象中的元素数量必须要跟接受这些元素的元组的空档数一致。使用占位符* _去忽略不需要关注的元素,相当于一个占位符,抵消掉了我们不需要关注的元素。
例子:

t = 1, 2, 3, 4, 5
a, b, *rest, c = t
print(a, b, c)  # 1 2 5
print(rest)  # [3, 4]   rest接收可多余的元素

二、字符串

简单几点

1.若想避开转义字符,输出一些特定的符号,一个简单粗暴的方法是:原始字符串只需要在字符串前边加一个英文字母 r 即可。
例子:

print(r'C:\Program Files\Intel\Wifi\Help\n\t\r')
# C:\Program Files\Intel\Wifi\Help\n\t\r

2.python支持多重句点法,执行的顺序依次从做左到右。
例子:
先调用strip()将字符串首尾的空格删去,得到的新的字符串(没显示出来),然后在对新的字符串调用lstrip('I')将其左侧的'l'删去得到,再把结果打印出来。

str5 = ' I Love LsgoGroup '
print(str5.strip().lstrip('I'))  # ' Love LsgoGroup'

3.format 格式化函数

作用:新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

例子:

str8 = "{0} Love {1}".format('I', 'Lsgogroup')  # 位置参数
print(str8)  # I Love Lsgogroupstr8 = "{a} Love {b}".format(a='I', b='Lsgogroup')  # 关键字参数
print(str8)  # I Love Lsgogroup

4.部分习题与解答

4-1 字符串函数回顾

1)怎么批量替换字符串中的元素?
答:replace(old, new [, max]) 把 将字符串中的old替换成new,如果max指定,则替换不超过max次。对次数max进行设置或多次调用replace函数就能实现批量替换元素。
例子:

str = 'I Love python'
print(str.replace('I', 'We'))  # We Love python

2)怎么把字符串按照空格进行拆分?
答:使用split(str="", num) 函数,不带参数默认是以空格为分隔符切片字符串,如果num参数有设置,则仅分隔num个子字符串,返回切片后的子字符串拼接的列表。
例子:

str = 'I Love python'
print(str.split())  # ['I', 'Love', 'python']

3)怎么去除字符串中的空格?
答:
①若要去除的空格位于字符的首尾端,可使用strip()函数删除在字符串上首尾端的空格。
例子:

str = ' I Love python '
print(str.strip())  # 'I Love python'

②若想去除字符串中存在的所有空格,可简单粗暴的用拆分与组合形式来搞定,可用split() 函数来实现拆分,for循环实现组合。
例子:

str = ' I Love python '
s = ''
print(str.split())  # ['I', 'Love', 'python']
for str1 in str.split():s += str1
print(s)  # ILovepython

4-2 实现isdigit函数

题目要求

实现函数isdigit, 判断字符串里是否只包含数字0~9

解题方法:isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False。

解题代码:

def isdigit(string):result = (string.isnumeric()) # 直接调用isnumeric()函数return resultprint(isdigit('15645546'))  # True
print(isdigit('fs54s15f'))  # False

4-3 最长回文子串

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例:

输入: “babad”

输出: “bab”

输入: “cbbd”

输出: “bb”

解题代码(向左滑动查看更多代码):

def max_palindrome(string):i, j = 0, 0for a in range(len(string)-2):  # 控制外循环j += 1for b in range(j+1):     # 控制内循环s1 = string[i:(len(string)+i-j)]  # 对原始字符串切片,并从最大切片开始寻找s2 = s1[::-1]   # 将s1倒序赋予s2i += 1   # 切片的起始位置往右移动一位if s1 == s2:    # 若两者相等,则表明找到了最大回文串return s1    # 用return返回s1i = 0   # 对i置零,保证下次的切片仍然是从第一个元素开始s1 = 'babad'
s2 = 'cbbd'
s3 = '123656hjk8998k'
print(max_palindrome(s1))  # bab
print(max_palindrome(s2))  # bb
print(max_palindrome(s3))  # k8998k

三、字典

1.仅一点:关于字典的复制

dict.copy()返回一个字典的浅复制
deepcopy(dict)返回返回一个字典的深复制
= (等号) 赋值语句仅是标签指向

例子:

dic1 = {'user': 'lsgogroup', 'num': [1, 2, 3]}
dic2 = dic1   # 标签指向
dic3 = dic1.copy()  # 浅复制
dic4 = deepcopy(dic1)   # 深复制print(id(dic1))  # 31204480
print(id(dic2))  # 31138944  地址未变
print(id(dic3))  # 31139008  新的相邻地址
print(id(dic3))  # 31694912  真正的一个新地址# 下面我们对dic1进行一些操作
dic1['user'] = 'root'
dic1['num'].remove(1)print(dic1)  # {'user': 'root', 'num': [2, 3]}
print(dic2)  # {'user': 'root', 'num': [2, 3]}
print(dic3)  # {'user': 'lsgogroup', 'num': [2, 3]}
print(dic4)  # {'user': 'lsgogroup', 'num': [1, 2, 3]}
# dic3 仍然受到了影响,只有 dic4 才纹丝不动

2.部分习题与解答

2-1 字典基本操作

字典内容如下:

dic = {'python': 95, 'java': 99, 'c': 100, }

用程序解答下面的题目

  • 字典的长度是多少

  • 请修改’java’ 这个key对应的value值为98

  • 删除 c 这个key

  • 增加一个key-value对,key值为 php, value是90

  • 获取所有的key值,存储在列表里

  • 获取所有的value值,存储在列表里

  • 判断 javascript 是否在字典中

  • 获得字典里所有value 的和

  • 获取字典里最大的value

  • 获取字典里最小的value

  • 字典 dic1 = {‘php’: 97}, 将dic1的数据更新到dic中

解:
(没什么难度,但需要点耐心):

dic = {'python': 95, 'java': 99, 'c': 100, }
print(len(dic))  # 3
dic['java'] = 98
print(dic)  # {'python': 95, 'java': 98, 'c': 100}
dic.pop('c')
print(dic)  # {'python': 95, 'java': 98}
dic['php'] = 90
print(dic)  # {'python': 95, 'java': 98, 'php': 90}
keys = list(dic.keys())
print(keys)  # ['python', 'java', 'php']
values = list(dic.values())
print(values)  # [95, 98, 90]
print('javascript' in dic)  # False
sum = 0
for value in dic.values():sum += value
print(sum)  # 283
print(max(values))  # 98
print(min(values))  # 90
dic1 = {'php': 97}
dic.update(dic1)
print(dic)  # {'python': 95, 'java': 98, 'php': 97}

2-2 字典中的value

有一个字典,保存的是学生各个编程语言的成绩,内容如下:

data = {'python': {'上学期': '90', '下学期': '95'},'c++': ['95', '96', '97'],'java': [{'月考':'90', '期中考试': '94', '期末考试': '98'}]}

各门课程的考试成绩存储方式并不相同,有的用字典,有的用列表,但是分数都是字符串类型,请实现函数transfer_score(data),将分数修改成int类型。

解题代码(向左滑动查看更多代码):

def transfer_score(data):for keys, values in data.items():if keys == 'python':   # 用三个if 对症下药for k, v in values .items():values[k] = int(v)  # int强行转化为整型if keys == 'c++':i = 0for v in values:values[i] = int(v)i += 1if keys == 'java':for k, v in values[0].items():  # values[0] 是一个元组(values[0])[k] = int(v)  # (values[0])[k] 代表元组的键kdata1 = {'python': {'上学期': '90', '下学期': '95'},'c++': ['95', '96', '97'],'java': [{'月考': '90', '期中考试': '94', '期末考试': '98'}]}
transfer_score(data1)
print(data1)
'''
{'python': {'上学期': 90, '下学期': 95}, 'c++': [95, 96, 97], 'java': [{'月考': 90, '期中考试': 94, '期末考试': 98}]
}
'''

关机,下班!

不3了也不写了....相关推荐

  1. 使用hello word写小说

    2021-11-12 使用hello word写小说

  2. java调用clang编译的so_写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实

    好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...

  3. java 手编线程池_死磕 java线程系列之自己动手写一个线程池

    欢迎关注我的公众号"彤哥读源码",查看更多源码系列文章, 与彤哥一起畅游源码的海洋. (手机横屏看源码更方便) 问题 (1)自己动手写一个线程池需要考虑哪些因素? (2)自己动手写 ...

  4. 使用vscode连接服务器写代码指南

    1 安装vscode 2 vscode中安装remote-ssh 3 按F1->输入SSH->选择相关选项(选择Connect to Host[图1],如果之前没有连接过服务器,可以选择A ...

  5. 用python给自己写一个加密算法

    前言 我们经常在写程序的过程中需要给自己写一些敏感的信息,比如密码,那么我们如何给自己的密码加密呢?现在我们自己来给自己写一个加密和解密的程序 程序 # coding:utf-8# !/usr/bin ...

  6. redis 双写一致性 看一篇成高手系列1

    首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用.在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作. 但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存.又或者 ...

  7. 【转载】写博意味着什么?

    写博意味着什么? 曾经读过刘未鹏的<为什么你应该(从现在开始就)写博客>,感触颇深,现在也来谈谈,自己为什么要写博. 写博意味着思考,是为了让我们养成一种思考意识,一种思考习惯.每次写博, ...

  8. 一步一步写自己的SqlHelper类库

    前言: 一开始不懂SqlHelper是什么,以为是新东西.第一遍大量的查资料,在csdn上找到很多人写好的SqlHelper类,发现每个人写的很像,但又都不一样,找了一个能用的上的,敲了一遍别人的代码 ...

  9. 写好 Python 代码的几条原则

    程序设计的好与坏,早在我们青葱岁月时就接触过了,只是那是并不知道这竟如此重要.能够立即改善程序设计.写出"好"代码的知识有以下几点: •面向对象五个基本原则: •常见的三种架构: ...

  10. nn.moduleList 和Sequential由来、用法和实例 —— 写网络模型

    对于cnn前馈神经网络如果前馈一次写一个forward函数会有些麻烦,在此就有两种简化方式,ModuleList和Sequential.其中Sequential是一个特殊的module,它包含几个子M ...

最新文章

  1. 区块链 + 大数据:EOS存储
  2. Openresty最佳案例 | 第5篇:http和C_json模块
  3. MySQL 5.7 create VIEW or FUNCTION or PROCEDURE
  4. WINCE基于CH7024实现TV OUT (VGA)功能
  5. 人工智能对教育产业的冲击和机遇分析 ——游戏化学习
  6. 置信区间估计 预测区间估计_估计,预测和预测
  7. Java9中使用jpa,jpa – eclipselink在Java 9上使用final字段进行静态编织
  8. 玩转lib-notify (转自PT牛的博客)
  9. 软件测试工作都干些什么?
  10. 520 miix 小兵 黑苹果_【黑果小兵】macOS Big Sur 11.0.1 20B50 正式版 with Clover 5126 黑苹果系统镜像下载...
  11. 东芝笔记本linux系统安装驱动,最详实解决方案 笔记本安装驱动指南!
  12. Xshell的安装及使用超详细教程
  13. MODIS数据的简介和下载(二)——MODIS数据下载方式(FTP)
  14. 马哥Linux 高端运维云计算就业班
  15. 计算机会不会取代人类英语作文,人类不能被机器人取代英语作文
  16. javascript/js替换内容
  17. 三次埃尔米特插值一阶导数的求法
  18. 广州微创软件科技有限公司面试总结
  19. 微信小程序-创建自己的小程序帐号
  20. 一次心脏滴血漏洞的bug处理过程

热门文章

  1. healthd log 解读
  2. 利用Windows内置工具测试硬盘速度
  3. win10 excel和ppt变成英文了,word正常,怎么解决?
  4. 杠杆炒股亏盈计算方法?
  5. Visual Studio 2019配置OpenGL环境
  6. Azul开源Zing Jvm
  7. 手机锁屏时显示无服务器,手机总显示“请勿遮挡屏幕顶端”?别慌,它其实是一个贴心的功能...
  8. sklearn实战-----3.数据预处理和特征工程
  9. 等比缩放公式_图片等比例缩小算法
  10. 信息安全保障人员(CISAW)工控网络安全方向认证介绍