聪明办法学python——Task05,06

发布时间 2023-12-01 13:17:54作者: .时云

聪明办法学python——Task5,Task6

Task05——循环

for循环和循环范围

特点:

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

for x in range(n,m+1):
   count+=1
return count

range(x,y)是左闭右开的区间,不含y

return sum(range(m,n+1))

range的第三个参数是步长,可正可负

for i in range(10,0,-1):
   print(i)

这种建议换成以下写法:

for i in reversed(range(0,10,1)):
   print(i)

这是一个反转函数

for循环嵌套

在python中for循环会花费很长时间,如果有时间限制时建议少用for循环

while循环

不知道循环何时停下可以用while

Bad Style:在已知循环范围的情况下用while

假.死循环

与环境交互后,在特定条件下终止的循环

没有结束的契机,计算机不会有死循环

isPrime判断一个数是不是质数

isPrime耗时可以少很多,比普通办法快将进6000倍

nth Prime

依次找出第n为质数

剪枝

可以缩小搜索范围和循环范围,大幅度提高程序运行效率

Task06——字符串

字符串文字

四种引号

单引号,双引号(大部分情况等价)

三个引号(不常见,可以写多行)

当在字符串中输出一个引号时,要与外部使用的引号区分开

当只是用一种引号时,会报错SytaxError,发生了语法错误,无法判断一个字符串的终止位置

字符串中的\换行符号

前面有\的字符叫做转义序列

\n换行符

print(hello\nworld)
print('''hello
world''')

上述两种写法相同

在三个引号内部本来是换行的地方可以加\表示去掉换行

其他的转义序列

输出‘,“,\之类的符号时在前边加一个\就可以正常打印出来

\t制表符#相当于键盘的Tap键

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

REPR()VS.PRINT()

有时候print输出看到的内容并不是真正在print()中的内容,一些制表符之类的是看不到的

如果看不到的部分是一段木马病毒,那么一旦运行是很危险的

使用这个REPR()VS.PRINT()可以看到看不到的部分

print(repe())

多行字符串作为注释

不会影响执行,可以提供文本支持,虽然python本身没有多行注释

字符串常量

string
import string
print(string.)

大小写字母 .ascii_letters

小写 .ascii_lowercase

大写 .ascii_uppercase

数字 .digits

标点符号 .punctuation

所有python支持打印出的字符 .printable

空白字符 .whilespace

字符串运算

'+'表示把两个字符串连接起来

*表示有几个连接起来

in运算
print('ring' in 'string')#True

字符串索引和切片

索引从0开始,通过字符串[索引]找到位置

负数索引

-n表示倒数第n个数

切片

获取字符串的一部分

#s='Datawhale'
print(s[0:4])#Data

左闭右开

默认参数

左边为0,右边-1

第三个参数step

表示隔n取一个数,并且索引为0已经取了;

#s='Datawhale'
print(s[:9:3])#Daa
翻转字符串

reversed(字符串)

join
print"".join(reversed(字符串))

字符串循环

用索引的for循环

或者,不用索引,直接for i in 字符串(in很好用)

enumerate获得元素的序号

for idx,c in enumerate(s):
   print(idx,c)
#0 D
1 a等等

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

for idx,(a,b) in enumerate(zip(s,reverseString(s))):
   print(idx,a,b)
#0 D e
#1 a l等等
split()循环
class_name="learn python the smart way"
for word in class_name.split():
   print(word)

名字.split()会产生一个新的叫做列表的东西

splitlines()循环

同样在产生一个列表,但不储存任何内容,且以行为分割

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

str() len() chr() ord()

ord()是字符对应的ASCII码,chr()是ASCII码对应的字符

 

eval(s)会执行s算式得出结果,但是当s是一个恶意代码是这是很危险的

推荐使用ast.literal_eval(s)

如果安全会执行

字符串方法

”大写“.lower改成小写

”小写“.upper改成大写

.strip()去掉首尾的空格

”字符串“.replace('a','b')把字符串中的a用b替换掉

”“.count("")计算某个字符出现的次数

.startswith判断字符串中有没有某个部分

.endswith判断是否以什么结尾

.find找到某个东西的位置(索引)或-1(没找到)

字符串是不可变的

基础文件操作

open(file,mode)打开文件并返回文件对象

file为文件路径,mode为读取模式

  • r:以字符串形式读取

  • rd:以二进制形式读取

  • w:写入文件

  • a:追加写入文件

file.close()操作后要关闭文件

w么事会覆盖之前的内容可以用a模式追加

with语句
with open('',"w",encoding="")as file:
file.write()