for 循环

  1. for i in [1, 2, 3, 4, 5]:
  2. print(i)
  3. # 可以是列表、字典和字符串,不可用整数和浮点数。
  4. dict = {'小明': 98, '小红': 85, '小爱':80}
  5. for i in dict:
  6. print(i)# 打印键 小明、小红、小爱
  7. print(dict[i]# 打印值 9885/08
  8. dict = 'abc'
  9. for i in dict:
  10. print(i) # 结果是a b c

除了列表,字典,字符串三种数据类型,我们还可以遍历其他的数据集合。比如range()

range() 函数

使用range(x)函数,可以生成一个从0到x-1的整数序列。

range(start,end,step) start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0,5); end: 计数到 end 结束,但不包括 end。例如:range(0,5) 是[0, 1, 2, 3, 4]没有5 step:步长,默认为1。例如:range(0,5) 等价于 range(0, 5, 1)

  1. # 【整数取值】
  2. for i in range(8):
  3. print(i) # 结果01234567,取头不取尾。
  4. # 【区间取值】
  5. for i in range(0, 8):
  6. print(i) # 结果01234567
  7. #【加上步长】,步长表示隔几个数取值,也可以理解为取2的整数倍(偶数)。
  8. for i in range(0, 8, 2): #偶数
  9. print(i) # 结果0246
  10. for i in range(1, 8, 2): #奇数
  11. print(i) # 结果1357
  12. # 【倒叙】注意步长一定要加上负数,否则取不到值;这里的0作为end是不包含在内的
  13. for i in range(8, 0, -1):
  14. print(i) # 结果87654321

range除了循环以外,还可以用来生成列表、元组

  1. l = list(range(10))
  2. print(f"l的数据类型是{type(l)}\n它的值包含{l}")
  3. # li的数据类型是<class 'list'>,它的值包含[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  4. l = tuple(range(10))
  5. print(f"l的数据类型是{type(l)}\n它的值包含{l}")
  6. # li的数据类型是<class 'tuple'>,它的值包含(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
  7. # 列表与元组相互转化 ——————————————————————————————————————————————————————
  8. l = list(range(0, 6, 2))
  9. t = tuple(l)
  10. # l的数据类型是<class 'list'> 它的值包含[0, 2, 4]
  11. print(f"l的数据类型是{type(l)}\n它的值包含{l}")
  12. # t的数据类型是<class 'tuple'>它的值包含(0, 2, 4)
  13. print(f"t的数据类型是{type(t)}\n它的值包含{t}")
  1. # 控制循环次数,循环5次
  2. for i in range(5):
  3. print('Python')
  4. # 计算1-100的和
  5. sum = 0
  6. for i in range(101):
  7. sum += i
  8. print(sum) # 结果5050
  9. # 计算1-100的的偶数之和
  10. sum = 0
  11. for i in range(101):
  12. if i % 2 == 0:
  13. sum += i
  14. print(sum) # 结果2550
  15. # 提示用户输入3个数,组成一个列表
  16. list = []
  17. for i in range(3): # 从0123 不含3
  18. num = input(f"请输入第{i+1}个数:") # 输入的是字符串
  19. num = int(num) # 转化为整数,否则结果是 ['1', '2', '3']
  20. list.append(num)
  21. print(list) # 结果是 [1, 2, 3]
  22. # 将列表里的值 X 2
  23. list = [1, 2, 3]
  24. for i in range(len(list)):
  25. list[i] *= 2
  26. print(list) # 结果是[2, 4, 6] 注意:一定要在循环外打印
  27. # 计算新列表的元素之和
  28. list = [2, 4, 6]
  29. sum = 0
  30. for i in list:
  31. sum += i
  32. print(sum) # 结果 12
  33. # 找到100以内能被7整数和包含7的数字,把他们放入列表
  34. list = []
  35. for i in range(101):
  36. a = i % 10 # 个位的值
  37. b = i // 10 % 10 # 十位的值
  38. if i % 7 == 0 or (a == 7 or b == 7):
  39. list.append(i)
  40. print(list)

join方法提取列表里的字符串,只能是字符串哦

  1. l = ['h', '3', 'l']
  2. s1 = "".join(l) # 提取l列表里的值
  3. s2 = "-".join(l) # 添加分隔符-
  4. print(s1) # h3l
  5. print(s2) # h-3-l

循环嵌套

  1. for i in range(3): # i = 0 1 2
  2. for j in range(5): # j = 0 1 2 3 4 5
  3. print(f"i={i},j={j}")
  4. item = [] # 创建一个空列表
  5. for i in range(3): # 用i变量循环三次
  6. item.append(i) # 循环的值添加到item列表里
  7. print(item) # 打印列表 [0, 1, 2]
  8. l = []
  9. for i in range(3):
  10. item = []
  11. for j in range(5):
  12. item.append(j)
  13. l.append(item)
  14. print(l) # [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
  15. l = [[j for j in range(5)] for i in range(3)]
  16. print(l) #结果和上面一样

while 循环

for和while的区别:for用来精确控制循环次数【循环的工作量是否确定】,while是用在不知道循环次数但知道循环结束的条件。

  1. a = 0 #先定义变量a,并赋值,可为空。
  2. while a < 5: #设定一个放行条件:a要小于5,才能办事
  3. a += 1 # 满足条件时,就办事:将a+1
  4. print(a) # 结果是12345,注意缩进,下面的不缩进,打印的就是最后一个值
  5. print(a) # 结果是5

对于“输入密码,判断输入的密码是否正确”这件事,我们并不知道要判断几遍才能得到正确密码,所以【工作量不确定】,适合用while循环。

  1. password = '' # 变量password用来保存输入的密码
  2. while password!='123456':
  3. password=input('请重新输入密码')
  4. print('打开')

不过有一种情况for循环和while循环都可以解决问题,那就是【把一件事情做N遍】

  1. #用for循环把诗句打印3遍
  2. for i in range(1,4) :
  3. print('明日复明日,明日何其多。')
  4. #用while循环把诗句打印3遍
  5. j = 1
  6. while j<4 :
  7. print ('明日何其多,明日何其多。')
  8. j =j+1

布尔运算

1.用字母数值做比较

一共有6种比较方式:==、!=、 >、<、>=、<=

字母和数字的关系 : z…c b a > Z… C B A > 9… 3 2 1 0

  1. # 下面所有都为true
  2. print(9 > 0)
  3. print(3 != 5)
  4. print(1 == 1.0) # 等号是两个等号
  5. print('a' < 'z') # a最大,字符串比较要加引号
  6. print('a' > 'A') # 同样的字母小写大于大写
  7. print('Hi' > 'Hello') #首字母一样,比较后面的,i>e,所以结果是true
  1. # 运算顺序
  2. # **
  3. # * / % //
  4. # + -
  5. # ==、!=、 >、<、>=、<=
  6. # and or not
  7. # =
  8. result = 1+2**2*3 >= 12-4/2 and 'Apple' >= 'Car' # 先**
  9. result = 1+4*3 >= 12-4/2 and 'Apple' >= 'Car' # 后* /
  10. result = 1+12 >= 12-2 and 'Apple' >= 'Car' # 后+-
  11. result = 13 >= 10 and 'Apple' >= 'Car' # 后>=
  12. result = 'Ture' and 'Flase' # 后and
  13. print(result)

2.用数值做比较

bool() 是一个看布尔值的函数,类似于我们之前的type(),结果是 True 或 Flase

image.png

3.布尔值之间的运算

一共有5种计算方式:and、or、not、in、not in 。下面用囚徒困境来写个案例。

  1. while True:
  2. a = input('A,你认罪吗?请回答认罪或者不认')
  3. b = input('B,你认罪吗?请回答认罪或者不认')
  4. if a == '认罪' and b == '认罪':
  5. print('两人都得判10年,唉')
  6. elif a == '不认' and b == '认罪':
  7. print('A判20年,B判1年,唉')
  8. elif a == '认罪' and b == '不认':
  9. print('A判1年,B判20年')
  10. else:
  11. print('都判3年,太棒了')
  12. break # 当满足开头提到的条件时,跳出循环。

四种新的语句

break(内部使用,结束循环)

break的意思是“打破”,是用来结束循环的,一般写作if…break。

豆瓣的爬虫逻辑,注意变量命名的取法。如果去掉break,看看结果是我们想要的吗?

  1. movies = {
  2. '妖猫传':['黄轩','染谷将太'],
  3. '无问西东':['章子怡','王力宏','祖峰']
  4. }
  5. actor = input('你想查询哪个演员?')
  6. for movie in movies: # 用 for 遍历字典
  7. actors = movies[movie] # 读取各个字典的主演表
  8. if actor in actors:
  9. print(actor + '出演了电影' + movie)
  10. break
  11. else:
  12. print('此演员没有作品')
  13. break

小小地提醒你,break前面一共缩进了【8个空格】。空格和Tab 是一样的!

continue(内部使用,重新开始)

这个子句也是在循环内部使用的。当某个条件被满足的时候,触发continue语句,提前结束本轮循环(不执行后面的代码),并直接开始下一轮循环。

L-6-11-20191121543.png

  1. i = 1
  2. while i < 8:
  3. if i % 2 == 1: # 偶数
  4. i += 1
  5. continue # 跳出循环到 i<8
  6. print(i) # 结果 246
  7. i += 1

pass语句

Pass语句只用于维持程序结构的完整。我们在编程时若不想马上编写某些代码,又不想有语法锆误,就可以使用pass语句占位,意思是“跳过”。

  1. a = int(input('请输入一个整数:'))
  2. if a > 100:
  3. pass
  4. else:
  5. print('你输入了一个小于100的数字')

else语句

我们在条件判断语句见过【else】,其实,else不但可以和if配合使用,它还能跟for循环和while循环配合使用。

  1. for p in range(3):
  2. p = int(input('请输入手机密码,你有3次机会:'))
  3. if a == 123456:
  4. print('打开手机')
  5. break
  6. else:
  7. print('3次都错了,5分钟后重试')

image.png

猜数字游戏练习

  1. secret = 24 #设定秘密数字
  2. while True:
  3. guess = input('你来猜猜我的秘密数字是多少:') #输入猜测数字
  4. if int(guess)==secret: #数字对比
  5. print('正确!你很棒哦。')
  6. break
  7. elif int(guess)>secret:
  8. print('你猜的太大了,请重新猜猜~')
  9. else:
  10. print('你猜的太小了,请重新猜猜~')