day04回顾
字符串的格式化表达式 "姓名: %s, 年龄:%d" % ('小张', 20) 生成具有一定格式的字符串 格字化字符串 % 参数 格字化字符串 % (参数1, 参数2,....) %s %d %x %X %f %% ... '%7.2f' % 3.1415926 ....循环语句
while 语句 for 语句 语法: while 真值表达式: 语句块1 else: 语句块2while语句可以嵌套
i = 0 while i < 5: ... while j < 10: .... i += 1break语句
终止当前循环 break终止的循环语句 else子句部分不会执行 死循环 while True: pass 死循环通过用于不确定次数的循环 day05 笔记 for 语句 作用: 用来遍历可迭代对象的数据元素 (可迭代对象是指能依次获取数据元素的对象)可迭代对象包括:
字符串 str ------ 以下是后面会学到的---------- 列表 list 元组 tuple 字典 dict ....for 语句语法:
for 变量列表 in 可迭代对象: 语句块1 else: 语句块2 说明: else子句部分可以省略(同while语句类似) 当在循环语句内部用break终止循环时,else子句部分的语句 不会执行 示例见:1 # for.py 2 3 # 此示例示意for语句的语法和用法 4 5 s = "ABCDE" 6 7 for ch in s: 8 print("ch绑定---->", ch) 9 else: 10 print("for语句迭代访问结束") 11 12 print("程序退出") 13 14
练习:
任意输入一段字符串 1) 计算出这个字符串中空格的个数,并打印这个个数 (要求用for 语句,不允许使用S.count方法) 2) 计算出字符串中全部英文字母(A-Z和a-z)的个数, 并打印打印这个个数 完成上题后思考: 能否用while语句实现上述功能练习:
输入一个字符串, 从尾向头输出这个字符串的字符 如: 请输入: hello 打印: o l l e h1 # 练习: 2 # 任意输入一段字符串 3 # 1) 计算出这个字符串中空格的个数,并打印这个个数 4 # (要求用for 语句,不允许使用S.count方法) 5 # 2) 计算出字符串中全部英文字母(A-Z和a-z)的个数, 6 # 并打印打印这个个数 7 # 完成上题后思考: 8 # 能否用while语句实现上述功能 9 10 11 s = input("请输入一段字符串: ") 12 blanks_count = 0 13 # 遍历输入的字符串,当有字符为' '时,将blanks_count做加1操作 14 for ch in s: 15 if ch == ' ': 16 blanks_count += 1 17 print("空格的个数是:", blanks_count) 18 19 # 2) 计算出字符串中全部英文字母(A-Z和a-z)的个数, 20 # 并打印打印这个个数 21 alpha_count = 0 22 for ch in s: 23 # if 65 <= ord(ch) < 65+26 or 97 <= ord(ch) < 97+26: 24 if 'A' <= ch <= 'Z' or 'a' <= ch <= 'z': 25 alpha_count += 1 26 print("英文字母的个数是:", alpha_count) 27 28 # 完成上题后思考: 29 # 能否用while语句实现上述功能
1 # 练习: 2 # 任意输入一段字符串 3 # 1) 计算出这个字符串中空格的个数,并打印这个个数 4 # (要求用for 语句,不允许使用S.count方法) 5 # 2) 计算出字符串中全部英文字母(A-Z和a-z)的个数, 6 # 并打印打印这个个数 7 # 完成上题后思考: 8 # 能否用while语句实现上述功能 9 10 11 s = input("请输入一段字符串: ") 12 13 blanks_count = 0 14 alpha_count = 0 15 i = 0 # i 代表字符串的索引 16 while i < len(s): # 索引不允许大于等于len(s) 17 ch = s[i] # ch绑定每次遍历的字符 18 # 统计个数 19 if ch == ' ': 20 blanks_count += 1 21 if 'A' <= ch <= 'Z' or 'a' <= ch <= 'z': 22 alpha_count += 1 23 i += 1 # 索引增加1, 24 25 print("空格的个数是:", blanks_count) 26 print("英文字母的个数是:", alpha_count) 27
1 # 练习: 2 # 输入一个字符串, 从尾向头输出这个字符串的字符 3 # 如: 4 # 请输入: hello 5 # 打印: 6 # o 7 # l 8 # l 9 # e 10 # h 11 12 13 s = input('请输入字符串: ') 14 # s2 = s[::-1] # 反转字符串 15 # for c in s2: 16 # print(c) 17 18 # for c in s[::-1]: 19 # print(c) 20 21 # 用while循环实现 22 i = len(s)-1 # 代表索引 23 while i >= 0: 24 print(s[i]) 25 i -= 1 # 索引向前走一步 26 27
1 # myrange.py 2 3 for x in range(4): 4 print(x) # 打印0 1 2 3 5 print('-----------') 6 7 for x in range(3, 6): 8 print(x) # 3 4 5 9 print('-----------') 10 11 for x in range(1, 10, 3): 12 print(x) # 1 4 7 13 print('-----------') 14 15 for x in range(5, 0, -1): 16 print(x) # 5 4 3 2 1 17
练习:
1. 用for语句打印 1~20的整数,打印在一行内 1 2 3 4 5 6 .... 19 202. 求 100以内有哪儿些整数与 自身+1的乘积再对11求余的结果
等于8? 即: x * (x + 1) % 11 == 8 打印出这些数3. 计算 1 + 3 + 5 + 7 + .... + 99 的和
分别用for循环语句和while循环语句实现![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 # 练习: 2 # 1. 用for语句打印 1~20的整数,打印在一行内 3 # 1 2 3 4 5 6 .... 19 20 4 5 for i in range(1, 21): 6 print(i, end=' ') 7 else: 8 print() 9 10 11 12
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 # 2. 求 100以内有哪儿些整数与 自身+1的乘积再对11求余的结果 2 # 等于8? 3 # 即: x * (x + 1) % 11 == 8 4 # 打印出这些数 5 6 for x in range(101): 7 if x * (x + 1) % 11 == 8: 8 print(x)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 2 # 3. 计算 1 + 3 + 5 + 7 + .... + 99 的和 3 # 分别用for循环语句和while循环语句实现 4 5 # 用for循环实现 6 # s = 0 # 用来累加和 7 # for x in range(1, 100, 2): 8 # s += x 9 # print("和是:", s) 10 11 # 用while循环实现 12 s = 0 13 x = 1 14 while x < 100: 15 s += x # 累加 16 x += 2 # 向后移2 17 18 print("用while计算后的的是", s)
for 语句的注意事项
1. for range的调用顺序见: for_range.py![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 # for_range.py 2 3 i = 6 4 for x in range(1, i): 5 print('x =', x, 'i =', i) 6 i -= 1 7 print("====================") 8 i = 6 9 r = range(1, i) 10 for x in r: 11 print('x =', x, 'i =', i) 12 i -= 1 13 14 #请问执行结果是什么? 15 16
2. 变量可能不被创建的问题:
如: for x in range(4, 0): print(x) else: print('循环结束后的x=', x) # 出错 print(x) # 出错for 语句嵌套:
示例: for x in "ABC": for y in '123': print(x + y) # 请问此语句打印几次?练习:
1 . 输入一个整数,代表正方形的宽和高,打印相应的正方形 用for语句实现 如: 请输入: 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 52. 输入一个整数,代表正方形的宽和高,打印相应的正方形
如 : 请输入: 5 打印: 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 # 1 . 输入一个整数,代表正方形的宽和高,打印相应的正方形 2 # 用for语句实现 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 w = int(input('请输入: ')) 13 for _ in range(w): # 外重循环控制行数 14 # 内重循环打印一行 15 for x in range(1, w + 1): 16 print(x, end=' ') 17 print() # 换行 18 19 20
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 # 2. 输入一个整数,代表正方形的宽和高,打印相应的正方形 2 # 如 : 3 # 请输入: 5 4 # 打印: 5 # 1 2 3 4 5 6 # 2 3 4 5 6 7 # 3 4 5 6 7 8 # 4 5 6 7 8 9 # 5 6 7 8 9 10 11 w = int(input("请输入: ")) 12 for line in range(1, w + 1): 13 # 打印一行从 line 号开始的 w个数字 14 for x in range(line, line + w): 15 print('%2d' % x, end=' ') 16 print() 17 # print(line)
continue 语句
问题: 如何让程序不再向下执行,重新开始一次新的循环 作用: 用于循环语句(while,for语句), 不再执行本次循环内continue 之后的语句,重新开始一次新的循环 语法: continue 说明: 1. 在while语句中执行continue语句,将会直接跳转到while语 句的真值表达式处,重新判断循环条件。 2. 在for语句中执行continue语句,将会从可迭代对象中取下一 一个元素绑定变量后再次进行循环。 示例见: continue.py continue2.py continue3.py![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 # continue.py 2 3 for x in range(5): 4 if x == 2: 5 continue 6 print(x) 7 8
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 # continue2.py 2 3 4 # 打印10以内的偶数 0 2 4 6 8 5 for x in range(10): 6 # 如果x是奇数,则跳过本次循环 7 if x % 2 == 1: 8 continue 9 print(x) 10 11 12 13 14 15 16 17
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 # continue3.py 2 3 x = 0 4 while x < 5: 5 if x == 2: 6 x += 1 7 continue 8 print(x) 9 x += 1 10 11 12
练习:
1. 打印10以内的偶数(要求试用while语句+ continue) 采用跳过奇数的方式实现2. 求 1 ~ 100 之间所有不能被2, 3, 5 和 7 中任意一个数
整除的数的和(用continue实现)![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 # 练习: 2 # 打印10以内的偶数(要求试用while语句+ continue) 3 # 采用跳过奇数的方式实现 4 x = 0 5 while x < 10: 6 if x % 2 == 1: 7 x += 1 8 continue 9 print(x) 10 x += 1 11
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 # 2. 求 1 ~ 100 之间所有不能被2, 3, 5 和 7 中任意一个数 2 # 整除的数的和(用continue实现) 3 s = 0 # 用于累加和 4 for x in range(1, 101): 5 if x % 2 == 0: 6 continue 7 if x % 3 == 0: 8 continue 9 if x % 5 == 0: 10 continue 11 if x % 7 == 0: 12 continue 13 # print(x) 14 s += x 15 16 print("最终的和是:", s)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 # 2. 求 1 ~ 100 之间所有不能被2, 3, 5 和 7 中任意一个数 2 # 整除的数的和(用continue实现) 3 s = 0 # 用于累加和 4 for x in range(1, 101): 5 if x % 2 == 0 or x % 3 == 0 or \ 6 x % 5 == 0 or x % 7 == 0: 7 continue 8 # print(x) 9 s += x 10 11 print("最终的和是:", s)
python3中序列类型简介:
字符串 str 列表 list 元组 tuple (以下后面会学) 字节串 bytes 字节数组 bytearray 创始空列表的字面值 L = [] # L绑定空列表 注: 表达式 [] 会创建一个空的列表创建非空列表的字面值:
L = [1, 2, 3, 4] L = ['北京', '上海', '深圳'] L = [1, 'Two', 3.14, '四'] L = [1, 2, [3.1, 3.2], 4]列表的构造(创建) 函数 list
list() 创建一个空的列表,等同于 [] list(iterable) 用可迭代对象创建一个列表示例:
L = list() # L 绑定空列表等同于 L = [] L = list('hello') # L=['h', 'e', 'l', 'l', 'o'] L = list(range(1, 10, 2)) # L = [1, 3, 5, 7, 9] 列表的运算: 算术运算: + += * *= + 用于拼接列表 x = [1, 2, 3] y = [4, 5, 6] z = x + y # z = [1, 2, 3, 4, 5, 6]+= 将原列表与右侧的可迭代对象的数据追加,得到新的列表
语法: x += 可迭代对象 如: x = [1, 2, 3] x += [4, 5, 6] x += "ABC" x += range(1, 10, 3) 注: += 运算符是用原可迭代对象的数据进行追加,原列表的ID不变 如: s = "ABC" print(id(s)) # ??? s += '123' print(id(s)) # 和上面的???不相同L = [1, 2, 3]
print(id(L)) # ??? L += '123' print(id(L)) # ???* 生成重复的列表
x = [1, 2] * 3 # x = [1, 2, 1, 2, 1, 2]*= 生成重复的列表,用原变量绑定更新后的列表
x = [1, 2, 3] x *= 2 # [1, 2, 3, 1, 2, 3] 列表的比较运算: 运算符: < <= > >= == != 说明: 列表的比较规则与字符串的比较规则相同 列表要求每两个元素能依次进行比较,否则会出现类型错误 示例: [1, 2, 3] == [1, 2, 3] # True [1, 2, 3] != [1, 3, 2] # True [1, 2, 3] < [1, 3, 2] # True [1, 2, 3] >= [1, 2] # True [1, 'two'] > ['two', 1] # TypeError [1, 'two', 3.14] < [1, '二', 2.8] # True 列表是可迭代对象 L = [1, 3, 5, 7] for x in L: print(x) # 打印 1 3 5 7 列表的 in / not in 运算符 判断一个值是否存在于列表中.如果存在返回True,否则返回False (同字符串的in和not in 用法相同) not in 返回值与in 相反示例:
x = [1, 'Two', 3, '四'] 3 in x # True '3' in x # False 10 in x # False 10 not in x # True练习:
写一个程序,让用户输入很多个正整数,当输入负数时结束输入 将用户输入的数存于列表L中,打印这个列表 如: 请输入: 1 请输入: 2 请输入: 3 请输入: 4 请输入: -1 打印如下: [1, 2, 3, 4] 提示: L = [] x = int(input('请输入: ')) L += [x] # 把x放在列表中,追加到L的末尾![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 # 练习: 2 # 写一个程序,让用户输入很多个正整数,当输入负数时结束输入 3 # 将用户输入的数存于列表L中,打印这个列表 4 # 如: 5 # 请输入: 1 6 # 请输入: 2 7 # 请输入: 3 8 # 请输入: 4 9 # 请输入: -1 10 # 打印如下: 11 # [1, 2, 3, 4] 12 # 提示: 13 # L = [] 14 # x = int(input('请输入: ')) 15 # L += [x] # 把x放在列表中,追加到L的末尾 16 17 L = [] # 创建一个列表, 准备存放数字 18 while True: 19 # 每次输入一个数,如果此数小于0,则退出循环,否则把 20 # 这个数放在列表中 21 x = int(input("请输入: ")) 22 if x < 0: 23 break 24 L += [x] 25 26 print('列表的内容是:', L) 27
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 # 练习: 2 # 1. 输入一个整数,代表树干的高度,打印如下一棵"圣诞树" 3 # 如: 4 # 请输入: 2 5 # 打印 6 # * 7 # *** 8 # * 9 # * 10 # 如: 11 # 请输入: 3 12 # 打印: 13 # * 14 # *** 15 # ***** 16 # * 17 # * 18 # * 19 20 h = int(input("请输入树干的高度: ")) 21 22 # 打印树冠 部分 23 w = 2 * h - 1 # w 代表树冠最大下层叶子的星号个数 24 for line in range(1, h + 1): # line 代表行号 25 stars = 2 * line - 1 # 算出星号个数 26 s = '*' * stars 27 print(s.center(w)) 28 29 # 打印树干部分 30 for _ in range(h): 31 print(' ' * (h-1) + '*') 32 33 34 35 36 37
2. 写一个,任意输入一个整数,判断这个数是否是素数(prime)
打印结果 素数(也叫质数),只能被1和自身整除的正整数 如: 2 3 5 7 11 13 17 19 ..... 提示: 用排除法,当判断x是否是素数时,只要让x分别除 以2, 3, 4, 5,... x-1,只要有一个能被整除,则x不是素数 否则x为素数![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 # 2. 写一个,任意输入一个整数,判断这个数是否是素数(prime) 2 # 打印结果 3 # 素数(也叫质数),只能被1和自身整除的正整数 4 # 如: 2 3 5 7 11 13 17 19 ..... 5 # 提示: 6 # 用排除法,当判断x是否是素数时,只要让x分别除 7 # 以2, 3, 4, 5,... x-1,只要有一个能被整除,则x不是素数 8 # 否则x为素数 9 10 x = int(input("请输入一个整数: ")) 11 if x < 2: 12 print(x,'不是素数') 13 else: 14 flag = True # 标志 15 # 判断x不是素数 16 for i in range(2, x): 17 if x % i == 0: # 整除 18 print(x, '不是素数') 19 flag = False 20 break 21 # 能不能在此知道x是否为素数? 22 if flag: 23 print(x, '是素数')
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 # 2. 写一个,任意输入一个整数,判断这个数是否是素数(prime) 2 # 打印结果 3 # 素数(也叫质数),只能被1和自身整除的正整数 4 # 如: 2 3 5 7 11 13 17 19 ..... 5 # 提示: 6 # 用排除法,当判断x是否是素数时,只要让x分别除 7 # 以2, 3, 4, 5,... x-1,只要有一个能被整除,则x不是素数 8 # 否则x为素数 9 10 x = int(input("请输入一个整数: ")) 11 if x < 2: 12 print(x,'不是素数') 13 else: 14 # 判断x不是素数 15 for i in range(2, x): 16 if x % i == 0: # 整除 17 print(x, '不是素数') 18 break 19 else: 20 print(x, '是素数')
3. 输入三行,将这三行文字保存于一个列表L中,并打印
如: 请输入: ABC 请输入: 123 请输入: 你好 生成如下列表并打印: print(L) # ['ABC', '123', '你好']![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 # 3. 输入三行,将这三行文字保存于一个列表L中,并打印 2 # 如: 3 # 请输入: ABC 4 # 请输入: 123 5 # 请输入: 你好 6 # 生成如下列表并打印: 7 # print(L) # ['ABC', '123', '你好'] 8 9 a = input("请输入第1行: ") 10 b = input("请输入第2行: ") 11 c = input("请输入第3行: ") 12 # 方法1 13 # L = [a, b, c] 14 # 方法2 15 L = [] 16 L += [a] 17 L += [b] 18 L += [c] 19 print(L) 20