“Python基础开发”课程_课堂笔记(HTML版_017)

Class notes of "Python basic development",this webPage is seventh page.

本页面的“代码demo索引”:

备注:前面“p=15”(前4步的思路)是“【实训项目】打印某年日历”,与“p=16”(完整代码)合并为一篇博客(https://www.cnblogs.com/Robot-DX3906/p/12848563.html)

第五章 Python序列数据

5.1 字符串

这个部分,主要讲“字符串类型”(介绍这种数据类型)和“字符串函数”(内置函数)。

字符串是以英文和中文为主的文字,计算机使用Unicode编码来存储——在存储到磁盘中时,多采用GBK或者是“UTF-8”这两种“形式”(编码方式)之一。

我们(在这小节)的任务就是掌握字符串的操作。

字符串可以看做是有字符组成的数组——“字符数组”可以用来存储字符串,字符串在内存中是以“字符数组”的形式来存储的。

比如说s = 'Hello',是在内存中的连续空间,按顺序保存

0100 1000

0110 0101

0110 1100

0110 1100

0110 1111

这个(这5个“八位二进制数”)是一个整体,是一个“数组”。

01001000 01100101 01101100 01101100 01101111

5.1.1 字符串长度len

len函数是用来获取字符串长度的,做法是“len(string_name)”,后面的小括号里面就是变量名——注意,每个汉字,是一个字符。

5.1.2 读取字符

读出字符串的各个字符,思路是,想得到其中的第i个字符,就可以访问数组元素,比如说使用“s[i]”来读取——当然,第一个字符的下标为0,最后一个字符下标为长度减一。

s[0],s[1],s[2],…,s[len(s)-1]

用for…in的话,就像这样:

s = 'a我们'

n = len(s)#先用变量,获取长度(3)

for i in range(n):#i默认是从零开始的

print(s[i])

s[0] = 'h'#这种写法的错误的

要注意,字符串中的字符,是不能改变的,因此,不能对单独的字符进行赋值!

5.1.3 字符编码

计算机只认识二进制数字,字符也只能以二进制形式,保存在计算机中。(这里不科普二进制)

字符保存在计算机中的二进制数字,称为“Unicode”编码,每个英文字符占两个字节(2Byte=8bit),要知道字符在内存中的(十进制)编码,那么,我们就要用到ord函数。

【demo】字符在内存中的(十进制)编码

s = 'Hi,你好'

n = len(s)#先用变量,获取长度(3)

for i in range(n):

print(s[i],ord(s[i]))#i默认是从零开始的

运行结果如下:

>>>

==================== RESTART: E:\HTML5\Python2020_demo.py ====================

H 72

i 105

, 44

你 20320

好 22909

>>>

汉字的“Unicode编码”比英文字符都要靠后——可以用ord函数看英文大小写的“Unicode编码”,这里就跳过了。

5.1.4 编码转字符

如果我们知道某个字符的(十进制)编码是n的话,可以通过chr函数

【just for fun】Python“Unicode密码”

a = chr(25105)

b = chr(20204)

c = chr(119)

d = chr(101)

print(a,b,c,d)

运行结果如下:

>>>

==================== RESTART: E:\HTML5\Python2020_demo.py ====================

我 们 w e

>>>

好吧,其实你也可以试试下面这行代码:

print(chr(73)+chr(32)+chr(76)+chr(111)+chr(118)+chr(101)+chr(32)+chr(89)+chr(111)+chr(117)+chr(33))

就在IDLE的“Shell”模式中运行就行。

5.1.5 字符串大小比较

单个字符,就是通过(十进制)“Unicode码”来比较的;

字符串的话,就要麻烦一些了(假设有“a”、“b”两个字符串的话,):

按照顺序,分解为单个字符,看第一个字符,“a[0] ”与“b[0] ”进行比较,相等的话,就是“a[1] ”与“b[1] ”进行比较,直到得出结果位置。

如果比完之后,还有剩的,长度大的字符串就大。

如果不好理解的话,可以理解为十进制数中的正整数的大小比较,毕竟,人类社会的进化顺序是

自然数→人类语言→计算机语言

【思路】字符串比较函数

def compare(a,b):#第一部分是比较函数,获取下标范围

m = len(a)

n = len(b)

if m

k=m#短的那个字符串的长度

else:

k=n

for i in range(k):#第二部分是遍历字符串,进行比较

for a[i]>b[i]:

return 1

elif a[i]>b[i]:

return -1

if m==n:#第三部分是用if语句,进行判断,可以用6个“关系运算符”

return 0

elif m>n:

return 1

else:

return -1

关于字符的“大小比较”,是——数字 < 大写字母 < 小写字母 < 汉字

【练习1】输入字符串,统计大写字母的个数

s = input("Enter a string:\n")

count = 0#计数器清零

for i in range(len(s)):#设置循环次数为字符串长度

if s[i]>="A" and s[i]<="Z":#满足条件就让计数器加一

count = count+1

print("count=",count)

【练习2】统计字符串中,大写字母、小写字母、数字的个数

s = input("Enter a string:\n")

upper = 0

lower = 0

digit = 0

for i in range(len(s)):

if s[i]>="A" and s[i]<="Z":

upper = upper+1

if s[i]>="a" and s[i]<="z":

lower = lower+1

if s[i]>="0" and s[i]<="9":

digit = digit+1

print("大写字母:%d\n小写字母:%d\n数字个数:%d"%(upper,lower,digit))

【练习3】将字符串反向显示的两种方法

#第一种方法是从后往前遍历,往后面放

s = input("Enter a string:\n")#在写自定义函数之前,先输入数据

def reverseA(s):#反向函数

t=""#空字符串,用来保存结果

for i in range(len(s)-1,-1,-1):#“range”函数的三个参数:第一个“len(s)-1”是最后一个值的下标,第二个是减到“-1”就结束,第三个是间隔(负数表示下标数值减少)

t = t + s[i]

print(t)

return t

print("反向显示:",reverseA(s))

运行效果如下:

>>>

==================== RESTART: E:\HTML5\Python2020_demo.py ====================

Enter a string:

12345

5

54

543

5432

54321

反向显示: 54321

>>>

#第二种方法是从前向后遍历,将每个字符放在前面

s = input("Enter a string:\n")#在写自定义函数之前,先输入数据

def reverseB(s):

t=""

for i in range(0,len(s)):#从零开始,取到长度

t = s[i] + t#把后一个字符往前面放

print(t)

return t

print("反向显示:",reverseB(s))

运行效果如下:

>>>

==================== RESTART: E:\HTML5\Python2020_demo.py ====================

Enter a string:

12345

1

21

321

4321

54321

反向显示: 54321

>>>

这两种方法只是两种不同的写法,最后得到的结果是不一样的。

【练习4】去掉字符串首尾的空格

def trims(s):

t=""#保存结果

i=0#计数器清零

j=len(s)-1#长度减一,就是最后一个字符的下标

while i<=j and s[i]==" ":

i=i+1#计数器是累加

while i<=j and s[j]==" ":

j=j-1#下标是递减

for k in range(i,j+1):

t=t+s[k]

return t

s = input("Enter a string:\n")

print(s,"length=",len(s))

t = trims(s)

print(t,"length=",len(t))

运行结果如下:

>>>

==================== RESTART: E:\HTML5\Python2020_demo.py ====================

Enter a string:

2020-05-08 09:55

2020-05-08 09:55 length= 25

2020-05-08 09:55 length= 16

>>>

(HTML语言会自动删除连续空格,知道意思即可)

应该是16行代码,只是删除首尾空格,在可以调用内置属性(方法?)的情况下,就这么麻烦。

而使用(字符串)“内置函数”,就可以节省很多代码。

第17堂课,内容为Python字符串的“内置属性”。

本页面(?p=17)的实际上课时间为2020年5月8日第1小节课

python文字教学_【纯文本教程】大学专科的Python基础开发课?p=17相关推荐

  1. Python 实例教学_ 04_排序

    Python 实例教程 Python 实例教学_ 04_排序 第十九课 [870. 优势洗牌](https://leetcode.cn/problems/advantage-shuffle/) [90 ...

  2. Python 实例教学_ 03_列表

    Python 实例教程 Python 实例教学_ 03_列表 第十三课 [844. 比较含退格的字符串](https://leetcode.cn/problems/backspace-string-c ...

  3. python 下载网页文件_『如何用python把网页上的文本内容保存下来』python爬取网页内容教程...

    python爬虫:如何爬网页数据并将其放在文本 用requests库 r=r.requests.get(url) r.concent 保存到文件里就行了 如何用python把网页上的文本内容保存下来 ...

  4. 阿里达摩院python视频教学_阿里达摩院出品的758集的python教程,据说懂中文就能入门高清版...

    小编的内心是强大的,网友虐我千百遍,我待网友如初恋,因为今天又给大家带来了干货,Python入门教程完整版,完整版啊!完整版! 为了吸取教训,小编一定要分享一下攻略,"怎样获得小编分享的教程 ...

  5. python pptx教学_基于python-pptx库中文文档及使用详解

    个人使用样例及部分翻译自官方文档,并详细介绍chart的使用 一:基础应用 1.创建pptx文档类并插入一页幻灯片 from pptx import Presentation prs = Presen ...

  6. python文字冒险游戏_[Python] 猜数大冒险1.0 用控制台玩的简易文字冒险游戏

    [Python] 纯文本查看 复制代码import random def main(): round_counter = 0 # 回合计数器 print('第一关') while True: # 单次 ...

  7. python ai 教学_【Python AI教学】从零开始学Python AI开发系列01

    原标题:[Python AI教学]从零开始学Python AI开发系列01 欢迎开启新的旅程. 从2016年开始,AI人工智能的热潮扑面而来.而在机器学习和深度学习领域,Python位于最受欢迎的编程 ...

  8. python课堂教学_初中生初学python课堂教学感悟

    作者:实验初中 望玉红 21世纪以来,信息技术迅猛发展,深刻地改变着人们的学习.生产.生活和社会交往方式,人类社会已快速进入信息化社会.信息素养是当代社会公民所必备的基本素养,强化信息技术课程教育教学 ...

  9. python初中教学_初中生初学python课堂教学感悟

    作者:实验初中 望玉红 21世纪以来,信息技术迅猛发展,深刻地改变着人们的学习.生产.生活和社会交往方式,人类社会已快速进入信息化社会.信息素养是当代社会公民所必备的基本素养,强化信息技术课程教育教学 ...

  10. python画图视频_你能分享比较全面的Python视频教程吗?谢谢《用python画图教程视频》...

    python好学吗? python相对于C 来说确实是好学的多. python不需要特别关注类型,因此不需要花费太多的时间在变量类型上面.python的语法相比于C 来说,要简单的多. 如何用pyth ...

最新文章

  1. python程序员职业考试_最新10大Python面试常问的问题,60%的人都不会
  2. MS SQL Server和MySQL区别
  3. 父级居中后,并继承子级浮动方法
  4. 奇怪吸引子---Chua
  5. 9.Tornado下的一个简易Blog--2013-05-21
  6. vue项目中assets与static的区别
  7. cve-2022-22965是什么,一个至少超越我此刻理解力的漏洞
  8. java.lang.IllegalStateException: No output folder
  9. 全球与中国高亮度LED灯市场现状及未来发展趋势
  10. pve万兆网卡驱动_QL3X魔改CPU、CX341A万兆光纤网卡、P106-90显卡
  11. 韩信点兵(中国剩余定理)
  12. Android静默拍照(无感知拍照)
  13. Mybatis文件格式不匹配 -读取xml文件失败
  14. Mac如何做才能彻底清理垃圾
  15. REVERSE关键字之REVERSE函数
  16. 盛大退市背后的故事:华尔街不懂陈天桥
  17. 考研英语阅读理解做题技巧(2):主旨题
  18. Loading 用户体验 - 加载时避免闪烁
  19. 什么是EasyUi?
  20. 计算机一级考试个人小结作文,期中考试个人总结范文精选五篇

热门文章

  1. 安全策略篇 安全策略发展历程详解
  2. error C2144: syntax error: 'int' should be preceded by ';'
  3. 数据治理(十一):数据安全管理Ranger初步认识
  4. 关于 IBM Tivoli Storage Manager在Oracle中的应用
  5. 解决电脑关机状态下按键盘会开机的问题
  6. JavaScript(Ajax)和Cookie的同源策略
  7. hdu 4190 Distributing Ballot Boxes
  8. day3-money enhances memory consolidation-but only for boring material
  9. 用 dfuse `transaction_lifecycle` 端点跟踪任何交易,包括延期交易
  10. badboy录制脚本错误问题解决