Python学习 CHAPTER 5循环和CHAPTER 6字符串

发布时间 2023-12-02 22:23:47作者: WDS望尘

CHAPTER 5循环

一、FOR循环的特点

基于提供的范围,重复执行特定次数的操作

#注意:range(x,y)是左闭右开区间,包含x,不包含y

 

如果我们省略第一个参数会发生什么?
for × in range(n+1)
 #range起始范围默认为0
那如果我们添加第三个参数呢?
 #第三个参数为“步长”step for×in range(m, n+1,k):

现在我们反着来试一下!

for x in range(n,m-1,-1):

当你不知道循环什么时候停下来的时候,为什么不试试while
Bad Style:在知道循环范围的情况下使用while

二、BREAK与CONTINUE语包

for n in range(200): 
i n%3==0: 
continue #跳过这次循环elif n =8: 
break#跳出当前整个循环else: 
pass #啥也不做,占位符(不会被运行) print(n,end="")

三、假·死循环
与环境交互后,在特定条件下终止的循环

四、#剪枝

例如:

#快了一点
3deffasterIsPrime(n): 
if n<2: 
return False 
if n == 2: 
return True if n%2==0: 
return False maxFactor=round(n**日.5) for factor in range(3,maxFactor+1,2): 
if n%factor==0: 
return False return True

总结
·For循环用于指定范围的重复操作。·range()可以生成一个数字范围。
·在不知道循环什么时间停止的时候,应该试试While循环。·循环同样也是可以嵌套的。·巧妙地使用 break和 continue语句。
·合理的剪枝,缩小搜索范围/循环范围,可以大幅提高程序运行效率。

CHAPTER 6字符串

一、字符串文字

1、

四种引号
引号的作用就是将文字包裹起来,告诉Python"这是个字符串!" 单引号'和双引号"是最常见的两种字符字符串引号

print(‘单引号) 
print(“双引号”)

2、

三个引号的情况不太常见,但是它在一些场合有特定的作用(如函数文档doc-strings) 
print('三个单引号!) 
print(".三个双引号”.)

3、

我们为什么需要两种不同的引号?
In [6]: 1 #为了写出这样的句子
2 print('聪明办法学Python第二版的课程简称是"P2s")

 4、

我们为什么需要两种不同的引号?
#为了写出这样的句子
print('聪明办法学Python第二版的课程简称是"P2s"‘)

5、

如果我们偏要只用一种引号呢?

#这会导致语法错误,Python无法正确判断一个字符串的终止位置
print("聪明办法学Python第二版的课程简称是"P2S") 3 # 234

6、

如果我们偏要只用一种引号呢?
#这会导致语法错误,Python无法正确判断一个字符串的终止位置
print("聪明办法学Python第二版的课程简称是"P2S") 
# 234

二、字符串中的换行符号

前面有反斜杠I的字符,叫做转义序列
比如In代表换行,尽管它看起来像两个字符,但是Python依然把它视为一个特殊的字符

 #这两个print()在做同样的事情
 print("Datalnwhale")#In是一个单独的换行符号

 

print(*Data 
whale""")

print("""Data 
whale""")
你可以在字符串后面使用反斜杠I来排除后面的换行。比如这里是第二行文字,但是你会看到它会紧跟在上一行句号后面。这种做法在CIL里面经常使用(多个Flag并排保持美观),但是在编程中的应用比较少。

print(”".你可以在字符串后面使用反斜杠I来排除后面的换行。
2 比如这里是第二行文字,但是你会看到它会紧跟在上一行句号后面。I 3这种做法在CIL里面经常使用(多个Flag并排保持美观),I 4但是在编程中的应用比较少。I 
5"n") 

三、其他的转义序列

1、

print("双引号:I”")

print("反斜线:I")

print(“换\n行")

print("这个是\t制\t表\t符\n也叫\t跳\t格\t键")#Tab

2、

转义序列只作为一个字符存在

print(repr(s1)) 
print(repr(s2)) 
'DataltWhale' 
'Data Whale'

3、

多行字符串作为注释

"""
Python本身是没有多行注释的,但是你可以用多行字符串实现同样的操作,还记得我们之前学过的“表达式吗?它的原理就是Python会运行它,但是马上扔掉!(垃圾回收机制)
"""
print("Amazing!") 

四、一些字符串常量

1、

import  String 
print(string.ascii_letters) 
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVXYZ
  
print(string.ascii_lowercase) 
abcdefghijklmnopqrstuvwxyz 

print(string.ascii_uppercase)  ABCDEFGHIJKLMNOPQRSTUVwXYZ

print(string.digits)
0123456789

print(string.punctuation) 
!"#$%&'()*+,/:=>@[1]^_f}~ 

print(string.printable) 
0123456789abcdefghijklmnopqrstuVwxyzABCDEFGHIJKLMNOPQRSTUVwXYZ!"#$%&'()*+,-./:;=>?@[]^-}~  

print(string.whitespace) 
空白

print(repr(string.whitespace)) 
ItlnIrlx0b xec'

五、一些字符串的运算

1、字符串的加乘

print("abc"+"def") 
print("abc"*3) 
abcdef 
abcabcabC

2、in运算(超级好用!)

print("ring"in"stnings") #True 
print("wow"in""amazing!”) #Falser 
print("Yes"in"yes!") #False 
print("in"No way!") #True 
print(聪明”in"聪明办法学Python")#True

六、字符串索引和切片

1、单个字符索引
索引可以让我们在特定位置找到一个字符

S="Datawhale" 
print(s) 
print(S[0]) 
print(s[1]) 
print(s[2]) 
print(S[3]) 

2、负数索引

print(s) 
print(s[-5]) 
print(s[-4])  
print(S[-3]) 
print(s[-2]) 
print(SE-1]) #s[len(s)-1]

Datawhale

w
h
a
l
e
3、用切片来获取字符串的一部分

print(s[0:4]) 
print(s[4:9]) 

Data 
whale

切片的默认参数

print(s[:4]) 
print(s[4:]) 
print(S[:])
print(s[:4]) 
print(s[4:]) 
print(S[:])

Data whale Datawhale
左0右-1
切片的第三个参数step
print(s[:9:3])
Daa
Datawhale
4、翻转字符串

#可以,但是不优雅
print(s[::-1]) 

#也可以,但是还是不够优雅
print(""·join(reversed(s))  

#实在是太优雅辣
def reversestring(s): 
return s[::-1] 
print(reversestring(s))

七、字符串的循环

1、用索引的for循环

for i in range(1len(s)):

fori in range(1len(s)):
       print(i,s[i])

2、其实也可以不用索引(超级好用的in)

for c in s: 
  print(c)

3、也可以使用enumerate()获得元素的序号

for idx,c in enumerate(s): 
       print(idx,c)

4、zip(a,b)可以在一次循环中,分别从a和b里同时取出一个元素

for a,b in zip(s,reversestring(s)): 
    print(a,b)

5、用split()来循环

#class_name.split()本身会产生一个新的叫做列表”的东西,但是它不存储任何内容

for word in class_name.split(): 
     print(word)

6、用splitlines()来循环

#跟上面一样,class_info.splitLines()也会产生一个列表,但不存储任何内容

for line in class_info.splitlines():  if(line.startswith("Prepare To Be Smart")): 
print(line)

class_info="""I 
聪明办法学Python第二版是Datawhale基于第一版教程的一次大幅更新。我们尝试在教程中融入更多计算机科学与人
我们的课程简称为P2s,有两个含义: 
Learn Python The Smart Way V2,“聪明办法学Python第二版”的缩写。
Prepare To Be Smart,我们希望同学们学习这个教程后能学习到聪明的办法,从容的迈入人工智能的后续学习。
"""

7、例子:回文判断
如果一个句子正着读、反着读都是一样的,那它就叫做“回文”

八、一些跟字符串相关的内置函数

1、str()和1en()

str(len(name))

2、chr()和ord()

print(ord("A"))
65

print(ghr(65))
A


3、
#它可以正常运行,但是我们不推荐你使用这个方法
S="(3**2+4**2)**0.5"  print(eval(s))

s="电脑当场爆炸()" 
eval(s)#如果这是一串让电脑爆炸的恶意代码,那会发生什么

#推荐使用ast.Literal_eval()

import ast 
s_safe="['P',2,'s']" s_safe_result=ast.1iteral_eval(s_safe) 
print(s_safe_result) print(type(s_safe_result))

4、一些字符串方法

s   isalnum   isalpha   isdigit   islower   isspace   isupper   

ABCD   True   True   False   False   False   True   

ABcd   True    False   False   False   False  False   

AB?!  False   False   False   False   False   True

5、
 "DDDD".lower()
dddd

"door!!!".upper()
DOOR!!!

6、print(”strip()可以将字符串首尾的空格删除"strip())

7、
print("聪明办法学Python".replace("Python","C")) 
print("Hugging LLM,Hugging LLM".replace("LLM","sD")) 
聪明办法学c Hugging SD,Hugging SD

1s="聪明办法学Python,就找Datawhale" 
2t=s.replace("聪明办法”,") 3 print(t)
学Python,就找Datawhale

print("This is a history test".count("is") 
print("This  IS ahistorytest".count("is") 
3
2
 
print("Dogs and cats!".startswith("Do")) 
print("Dogs and cats!".startswith("Don't") 
True 
False 

print("Dogs and cats!".endswith("!")) 
print("Dogs and cts!".endswith("rats!"))
True 
False

2947406598 21:12:19
 print("Dogs and cats!".find("and")) 
print("Dogs and cats!".find("or") )
5
-1 


print("Dogs and cats!".index("and")) 
print("Dogs and cats!".index("or"))
5
出错


九、

1、用f-string格式化字符串

print(f'你知道{x}+fy}是[x+y吗?")

你知道42+99是141吗?

2、其他格式化字符串的方法

如果要格式化字符串的话,f-string是个很棒的方法,Python还有其他方法去格式化字符串:

·%操作
·format()方法

十、

1、字符串是不可变的

你必须创建一个新的字符串

s=s[:3]+"e"+s[4:]

2、字符串和别名

字符串是不可变的,所以它的别名也是不可变的

s+='whale'#S=s+"whale"

十一、基础文件操作

1、Open()函数
Python open()函数用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到
这个函数。
open(file,mode)函数主要有file和mode两个参数,其中file为需要读写文件的路径。
mode为读取文件时的模式,常用的模式有以下几个: 
·r:以字符串的形式读取文件。·rb:以二进制的形式读取文件。
·w:写入文件。
·a:追加写入文件。
不同模式下返回的文件对象功能也会不同。

2、文件对象

open函数会返回一个文件对象。在进行文件操作前,我们首先需要了解文件对象提供了哪些常用的方法
·close()关闭文件
·在r与rb模式下: read():读取整个文件
readine():读取文件的一行readlines():读取文件的所有行·在w与a模式下: 
write (): 
writelines():

content =file.read() print(content)

3、注意每次操作结束后,及时通过 close)方法关闭文件

4、代码竟然什么也没输出,这是为什么?

      信标

5、w模式会覆盖之前的文件。如果你想在文件后面追加内容,可以使用a模式操作。

     file=open('chap6_demo.txt',w')

6、with语句
我不想写close()啦!

with open("Zen0fPy.py","w",encoding="Utf-8")as file:

      fiLe.Write (Caesar_cipher) print(len(Caesar_cipher))

总结
·单引号与双引号要适时出现,多行文本用三引号。·字符串中可以包含转义序列。·repr(能够显示出更多的信息。
·字符串本身包含许多内置方法,in是一个特别好用的玩意。·字符串是不可变的常量。
·文件操作推荐使用with open("xxx")as yyy,这样就不用写f.close()啦。