循环与字符串
循环
for循环与范围
def sumfromton(m,n):
total=0
for x in range(m,n+1): #注意:range(x,y)是左闭右开区间,包含x,不包含y
total += x
return total
def sumfromton(m,n):
return sum(range(m,n+1))
结果相同
range(m,n,k)
第一个参数m指起始范围
第二个参数n指终止范围
第三个参数k指步长
for i in range(0,10,2):
print(i)
输出
0
2
4
6
8
反向输出
for i in reversed(range(0,5,1)):
pritn(i)
输出:
4
3
2
1
0
while循环
不知道循环什么时候停下来时使用while循环
while 布尔表达式:
语句 (条件为真时执行,语句为假时停止)
break与continue语句
continue #跳过这次循环
break #跳出当前整个循环
pass #什么也不做,占位符(不会被运行)
for _ in range(5) "_"通常作为一个占位符变量,当循环中不需 要使用循环变量的值时,可以将其命名为"_"
假.死循环
与环境交互后,在特定条件下中止的循环
例:while True:
语句
if 条件:
break(终止)
求质数
def IsPrime(n):
if n < 2:
return False
if n == 2:
return True
if n % 2 == 0:
return False
macfactor = round(n**0.5)
for factor in range(3,maxfactor+1,2):
if n%factor == 0:
return False
retutn True
字符串
四种引号
单引号''和双引号""是最常见的两种字符串引号
三引号可以写多行
print("""date
whale""")
输出
date
whale
字符串中换行符号
前面有\的字符叫转义序列
print("date\whale")
输出
date
whale
print("双引号"")
输出
双引号"
其他转义序列
\n 换行
\t 制表符
转义字符只作为一个字符
repper函数
s1="data\twhale"
s2="date whale"
prinr(repr(s1))
print(repr(s2))
输出
"data\twhale"
"date whale"
一些字符串常量
import string
print(string.ascli_letters)
输出大小写字母
print(string.ascli_lowercase)
输出小写字母
print(string.digits)
输出数字
print(string.punctuation)
输出!@#等字符
print(sting.printable)
输出所有字符
字符串运算
字符串的加乘
print("abc" + "def")
print("abc" * 3)
输出
abcdef
abcabcabc
字符串只能和字符串做加乘运算
in运算
可用于查看某部分(前面字符串)是否在(后面的)字符串中
print("ring" in "strings")
print("wow" in "amazing!")
print("Yes" in "yes!")
输出
True
False
False
字符串索引和切片
单个字符索引
s = "Datawhale"
print(s)
print(s[0])
print(s[1])
print(s[2])
print(s[3])
输出
Datawhale
D
a
t
a
[]从零开始
len(s)
9
负数索引
print(s) # 字符串从右到左是从-1开始的
print(s[-5])
print(s[-4])
print(s[-3])
print(s[-2])
print(s[-1]) # 倒数第一个
输出
Datawhale
w
h
a
l
e
用切片来获取字符串的一部分
print(s[0:4]) # 左闭右开,第五个取不到
print(s[4:9])
Data
whale
print(s[0:2])
print(s[2:4])
print(s[5:7])
print(s[7:9])
输出
Da
ta
ha
le
切片的默认参数
左边不写东西默认从0开始
右边不写东西默认执行到-1结束
print(s[:4])
print(s[4:])
print(s[:])
输出
Data
whale
Datawhale
切片的第三个参数
步长,隔多少个取一次
print(s[:9:3]) # 经过3的长度取一次 ## 这里默认0时取第一次
print(s[1:4:2])
输出
Daa
aa
翻转字符串
print(s[::-1]) # 步长为负数就从右往左切片
elahwataD
print("".join(reversed(s))) #join()可以把一个序列依次添加到字符串内
elahwataD
def reverseString(s):
return s[::-1]
print(reverseString(s))
elahwataD
字符串的循环
用索引的 for 循环
for i in range(len(s)):
print(i, s[i])
0 D
1 a
2 t
3 a
4 w
5 h
6 a
7 l
8 e
也可以不用索引
for c in s: # 依次取出
print(c)
D
a
t
a
w
h
a
l
e
也可以使用 enumerate() 获得元素的序号
这里同时获取了元素的序号和其对应的元素
for idx, c in enumerate(s):
print(idx, c) # 也可以用c[idx] 不过不优雅
0 D
1 a
2 t
3 a
4 w
5 h
6 a
7 l
8 e
zip(a, b) 可以在一次循环中,分别从 a 和 b 里同时取出一个元素
for a, b in zip(s, reverseString(s)):
print(a, b) # 分别取出一个赋给a,b
D e
a l
t a
a h
w w
h a
a t
l a
e D
用 split() 来循环
默认以空格为分隔符分隔字符串并产生列表
class_name.split() 本身会产生一个新的叫做“列表”的东西,但是它不存储任何内容
class_name = "learn python the smart way 2nd edition"
for word in class_name.split(): # 以列表输出
print(word)
learn
python
the
smart
way
2nd
edition