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

“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小节课

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值