PYTHON1.day04
day03回顾:
字符串 str
字符串的字面值表示方式
''
""
''''''
""""""
三引号字符串可以隐式换行,换行会自动转换为'\n'
转义序列
\n \t \\ \' \" \xXX \uXXXX
编码:
ASCII (128个)
UNICODE16(65536个) / UNICODE32
raw 字符串
r''
r""
r''''''
r""""""
r字符串的\不作为转义字符
字符串运算
+ * += *=
< <= > >= == !=
in / not in
索引和切片 []
常用的函数:
len(x)
max(x)
min(x)
ord(c)
chr(i)
hex(i) 十六进制
bin(i) 二进制
oct(i) 八进制
str(obj='')
常用的字符串方法:
见:str.html
|
|
字符串方法的调用语法
对象.方法名(方法传参)
注:
方法的调用属于表达式,通常可以返回一个值或None
示例:
'abc'.isalpha() # 正确
123.isalpha()
练习:
输入一个字符串
1. 判断您输入的字符串有几个空格
2. 将原字符串的左右空白字符去掉,打印出有效字符的长度
3. 判断您输入是否是数字
1 # 输入一个字符串 2 # 1. 判断您输入的字符串有几个空格 3 # 2. 将原字符串的左右空白字符去掉,打印出有效字符的长度 4 # 3. 判断您输入是否是数字 5 6 s = input("请输入一个字符串: ") 7 8 # 1. 判断您输入的字符串有几个空格 9 print("您输入的字符串有", s.count(' '), '个空格') 10 11 # 2. 将原字符串的左右空白字符去掉,打印出有效字符的长度 12 s2 = s.strip() # 去掉空白字符 13 print("有效字符的个数是: ", len(s2)) 14 15 # 3. 判断您输入是否是数字 16 if s2.isdigit(): 17 print("您输入的是数字") 18 else: 19 print("您输入的不是数字") 20
字符串格式化表达式
运算符
%
作用:
生成一定格式的字符串
语法:
格式字符串 % 参数值
格式字符串 % (参数值1, 参数值2, ...)
格式字符串中的 % 为占位符,占位符的位置将用参数值替换
示例见:
str_fomart.py
1 # 练习: 2 # 输入三行文字,让这些文字依次以20字符的宽度右对齐输出. 3 # 如: 4 # 请输入第1行: hello world 5 # 请输入第2行: abcd 6 # 请输入第3行: a 7 # 输出结果为: 8 # hello world 9 # abcd 10 # a 11 # 做完上面的题后再思考: 12 # 能否以最长字符串的长度进行右对齐显示(左侧填充空格) 13 # 14 15 s1 = input("请输入第1行: ") 16 s2 = input("请输入第2行: ") 17 s3 = input("请输入第3行: ") 18 print('--以下是所有字符串占20个字符宽度--') 19 print("%20s" % s1) 20 print('%20s' % s2) 21 print('%20s' % s3) 22 23 print('--以下按最长的字符串左对齐') 24 m = max(len(s1), len(s2), len(s3)) 25 print('最大长度是: ', m) 26 print(' ' * (m - len(s1)) + s1) 27 print(' ' * (m - len(s2)) + s2) 28 print(' ' * (m - len(s3)) + s3) 29 30 print("--方法3--") 31 fmt = '%%%ds' % m # 生成一个含有占位符的字符串 32 print('fmt = ', fmt) 33 print(fmt % s1) 34 print(fmt % s2) 35 print(fmt % s3) 36
格式化字符串中的占位符和类型码
占位符 意义
%s 字符串,使用str函数转换
%r 字符串,使用repr函数转换
%c 整数转为单个字符
%d 十进制整数
%o 八进制整数
%x 十六进制整数(a-f小写)
%X 十六进制整数(A-F大写)
%e 指数形浮点数(e小写) 如: 2.9e+10
%E 指数形浮点数(E大写) 如: 2.9E+10
%f, %F 浮点十进制形式
%g, %G 十进制形式浮点数或指数浮点数自动转换
%% 等同于一个%字符
见: python_base_docs_html/str.html
占位符和类型码之间的格式语法
% [格式语法] 类型码
格式语法:
- 左对齐
+ 显示正号
0 补零
宽度(整数)
宽度.精度(整数)
示例:
'%10d' % 123 # ' 123'
'%-10d' % 123 # '123 '
'%10s' % 'abc' # ' abc'
'%-5s' % 'abc' # 'abc '
'%05d' % 123 # '00123'
'%7.3f' % 3.1415926 # '003.142'
练习:
输入三行文字,让这些文字依次以20字符的宽度右对齐输出.
如:
请输入第1行: hello world
请输入第2行: abcd
请输入第3行: a
输出结果为:
hello world
abcd
a
做完上面的题后再思考:
能否以最长字符串的长度进行右对齐显示(左侧填充空格)
循环语句
while 语句
for 语句
问题:
输入一个数用n绑定,打印出n行的"hello world!"
# print("hello world!")
while 语句:
作用:
根据一定条件,重复的执行一条语句或多条语句
语法:
while 真值表达式:
语句块
else:
语句块
示例见:
while.py
练习:
编写程序,用while语句解决下面的问题
问题:
输入一个数用n绑定,打印出n行的"hello world!"
1 # 练习: 2 # 编写程序,用while语句解决下面的问题 3 # 问题: 4 # 输入一个数用n绑定,打印出n行的"hello world!" 5 6 n = int(input("请输入一个数: ")) 7 8 # 方法1 9 # i = 1 10 # while i <= n: 11 # print("hello world!") 12 # i += 1 13 # else: 14 # print("条件不满足,循环退出") 15 16 # 方法2, 直接用变量n来控制循环次数 17 while 1 <= n: 18 print("hello world!") 19 n -= 1 20 21 print("程序结束!") 22 23
示例:
用while语句打印 1 ~ 20 的整数(包含20)
见:
02_while_1~20.py
1 # 02_while_1~20.py 2 3 # 用while语句打印 1 ~ 20 的整数(包含20) 4 5 i = 1 6 while i <= 20: 7 print(i) 8 i += 1 9 10 print("程序结束!") 11 12
练习:
1. 输入一个整数,用end变量绑定,打印出 1~end的所有整数,(包含end)
2. 写程序,输入二个整数,第一个用begin绑定,第二个用end变量绑定,打印出 begin~end的所有的整数
1 # 1. 输入一个整数,用end变量绑定,打印出 1~end的 2 # 所有整数,(包含end) 3 4 end = int(input("请输入一个结束整数")) 5 i = 1 6 while i <= end: 7 print(i) 8 i += 1 9 10
1 # 2. 写程序,输入二个整数,第一个用begin绑定, 2 # 第二个用end变量绑定,打印出 begin~end的 3 # 所有的整数 4 5 begin = int(input("请输入第一个整数: ")) 6 end = int(input("请输入第二个整数: ")) 7 8 i = begin 9 while i <= end: 10 print(i) 11 i += 1 12 13
while 语句语法说明:
1. 先执行真值表达式,判断True/False
2. 如果为True则执行语句块1,然后跳转到第1步
3. 如果为 False则执行else子句部分的语句块2.然后结束此while语句的执行.如果没有else子句,则直接结束此while语句
4. else 子句部分可以省略(同if语句类似)
while 注意事项:
1. 要控制真值表达式来访问死循环
2. 通常用真值表达式内的变量来控制循环条件
3. 通常要在循环语句块内改变循环变量来控制循环的次数和变量的走向
练习:
1. 打印 1~ 20的整数,打印在一行内显示,每个数字之间用一个空格分隔开
如:
1 2 3 4 5 6 ... 18 19 20
(提示:print(.... , end=' ') 可以不换新行)
2. 打印 1~ 20的整数,每行5个,打印四行,如:
1 2 3 4 5
6 7 8 9 10
....
....
(注: while语句内可以嵌入if语句)
3. 用while语句打印 10 ~ 1的所有整数(包含1)
1 # 1. 打印 1~ 20的整数,打印在一行内显示,每个数字 2 # 之间用一个空格分隔开 3 # 如: 4 # 1 2 3 4 5 6 ... 18 19 20 5 # (提示:print(.... , end=' ') 可以不换新行) 6 7 i = 1 8 while i <= 20: 9 print(i, end=' ') 10 i += 1 11 else: 12 print() # 为了换行 13
1 # 2. 打印 1~ 20的整数,每行5个,打印四行,如: 2 # 1 2 3 4 5 3 # 6 7 8 9 10 4 # .... 5 # .... 6 # (注: while语句内可以嵌入if语句) 7 8 i = 1 9 while i <= 20: 10 print(i, end=' ') 11 if i % 5 == 0: 12 print() # 打印换行 13 i += 1 14
1 # 3. 用while语句打印 10 ~ 1的所有整数(包含1) 2 3 i = 10 4 while i >= 1: 5 print(i) 6 i -= 1 7 8
练习:
1. 写程序,用while循环来计算
1 + 2 + 3 + 4 + ....+ 99 + 100的和
2. 用while 语句实现打印三角形,输入一个整数,表示三角形的宽度和高度,打印出相应的直角三角形
如:
请输入三角形宽度: 4
打印如下:
*
**
***
****
1 # 1. 写程序,用while循环来计算 2 # 1 + 2 + 3 + 4 + ....+ 99 + 100的和 3 4 s = 0 # 此变量保存所有数的和 5 6 i = 1 7 while i <= 100: 8 s += i # 把当前的数累加到一个变量中 9 i += 1 10 11 print("1+2+3+....+99+100的和是:", s) 12 13 14 15
1 # 10_triangle.py 2 3 4 # 2. 用while 语句实现打印三角形,输入一个整数,表示三角形的宽度和高度,打印出相应的直角三角形 5 # 如: 6 # 请输入三角形宽度: 4 7 # 打印如下: 8 # * 9 # ** 10 # *** 11 # **** 12 13 w = int(input("请输入三角形宽度: ")) 14 15 i = 1 16 while i <= w: 17 print('*' * i) 18 i += 1 19 20
while 语句嵌套
while 语句本身是语句,和其它语句一样,可以放在其它复合语句的内部
while 嵌套示意
while 真值表达式:
...
while 真值表达式2:
...
else:
...
...
else:
...
问题:
打印1~20 之间的整数打印在一行
1 2 3 4 .... 18 19 20
把以上的数据打印10行
示例见:
03_while_embed.py
1 # 03_while_embed.py 2 3 j = 1 4 while j <= 10: 5 i = 1 6 while i <= 20: 7 print(i, end=' ') 8 i += 1 9 else: 10 print() # 为了换行 11 12 j += 1 # 控制外重循环的次数 13 14
练习:
输入一个数,打印指定宽度的正方形
如:
请输入: 5
打印如下正方形:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
如:
请输入: 4
打印如下:
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 # 练习: 2 # 输入一个数,打印指定宽度的正方形 3 # 如: 4 # 请输入: 5 5 # 打印如下正方形: 6 # 1 2 3 4 5 7 # 1 2 3 4 5 8 # 1 2 3 4 5 9 # 1 2 3 4 5 10 # 1 2 3 4 5 11 # 如: 12 # 请输入: 4 13 # 打印如下: 14 # 1 2 3 4 15 # 1 2 3 4 16 # 1 2 3 4 17 # 1 2 3 4 18 19 n = int(input("请输入: ")) 20 i = 1 21 while i <= n: # 外重循环来控制行数 22 # 在此处打印一行内容 23 j = 1 24 while j <=n: 25 print(j, end=' ') 26 j += 1 # 修改内重循环的变量来控制内重循环 27 print() # 行尾换行 28 29 i += 1
break 语句
作用:
用于循环语句(while,for语句)中,用来终止当前循环语句的执行
break说明
1. 当break语句执行后,此循环语句break之后的语句将不再执行
2. break语句通常和if语句组合使用
3. break语句终止循环时,循环语句的else子句的语句将不会执行
4. break语句只能终止当前循环语句的执行,如果有循环嵌套时,不会跳出嵌套的外重循环
5. break 语句只能在循环语句(while或for语句)内部使用
示例见:
04_break.py
1 # 04_break.py 2 3 i = 1 4 while i <= 6: 5 print("本次循环开始时:", i) 6 if i == 3: 7 break # break将打破包含它的while语句 8 print("本次循环结束时:", i) 9 i += 1 10 else: 11 print("我是while 里的else子句") 12 13 14 print("这是程序最后一条语句, i=", i) 15 16
死循环:
死循环是指循环条件一直成立的循环
死循环通常用break语句来终止循环
死循环的else子句永远不会执行
示例:
while True:
n = int(input("请输入: "))
if n == 0:
break
print(n)
1 2 # 此示例示意 3 # break语句只能终止当前循环语句的执行, 4 # 如果有循环嵌套时,不会跳出嵌套的外重循环 5 6 j = 1 7 while j <= 10: 8 i = 1 9 while i <= 20: 10 print(i, end=' ') 11 if i == 5: 12 break 13 i += 1 14 print() # 为了换行 15 16 # if j == 5: 17 # break 18 j += 1 # 控制外重循环的次数 19 20
练习:
1. 任意输入一些整数,
每次输入一个,当输入负数时结束输入,当输入完成后,打印您输入的这些数的和
2. 写程序用while实现打印三角形。
要求输入一个整数表示三角形的宽度和高度,打印出如下的三种直角三角形
1)
*
**
***
****
2)
****
***
**
*
3)
****
***
**
*
3. 写程序求多项式的和:
1/1 - 1/3 + 1/5 - 1/7 + 1/9 ... + 1/(2*n-1) 的和
n最大取: 1000000
1) 打印这个和
2) 打印这个和乘以4的值?(看看这个数眼熟不?)