for 循环
for i in [1, 2, 3, 4, 5]:
print(i)
# 可以是列表、字典和字符串,不可用整数和浮点数。
dict = {'小明': 98, '小红': 85, '小爱':80}
for i in dict:
print(i)# 打印键 小明、小红、小爱
print(dict[i]# 打印值 98、85/08
dict = 'abc'
for i in dict:
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)
# 【整数取值】
for i in range(8):
print(i) # 结果01234567,取头不取尾。
# 【区间取值】
for i in range(0, 8):
print(i) # 结果01234567
#【加上步长】,步长表示隔几个数取值,也可以理解为取2的整数倍(偶数)。
for i in range(0, 8, 2): #偶数
print(i) # 结果0246
for i in range(1, 8, 2): #奇数
print(i) # 结果1357
# 【倒叙】注意步长一定要加上负数,否则取不到值;这里的0作为end是不包含在内的
for i in range(8, 0, -1):
print(i) # 结果87654321
range除了循环以外,还可以用来生成列表、元组
l = list(range(10))
print(f"l的数据类型是{type(l)}\n它的值包含{l}")
# li的数据类型是<class 'list'>,它的值包含[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l = tuple(range(10))
print(f"l的数据类型是{type(l)}\n它的值包含{l}")
# li的数据类型是<class 'tuple'>,它的值包含(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
# 列表与元组相互转化 ——————————————————————————————————————————————————————
l = list(range(0, 6, 2))
t = tuple(l)
# l的数据类型是<class 'list'> 它的值包含[0, 2, 4]
print(f"l的数据类型是{type(l)}\n它的值包含{l}")
# t的数据类型是<class 'tuple'>它的值包含(0, 2, 4)
print(f"t的数据类型是{type(t)}\n它的值包含{t}")
# 控制循环次数,循环5次
for i in range(5):
print('Python')
# 计算1-100的和
sum = 0
for i in range(101):
sum += i
print(sum) # 结果5050
# 计算1-100的的偶数之和
sum = 0
for i in range(101):
if i % 2 == 0:
sum += i
print(sum) # 结果2550
# 提示用户输入3个数,组成一个列表
list = []
for i in range(3): # 从0123 不含3
num = input(f"请输入第{i+1}个数:") # 输入的是字符串
num = int(num) # 转化为整数,否则结果是 ['1', '2', '3']
list.append(num)
print(list) # 结果是 [1, 2, 3]
# 将列表里的值 X 2
list = [1, 2, 3]
for i in range(len(list)):
list[i] *= 2
print(list) # 结果是[2, 4, 6] 注意:一定要在循环外打印
# 计算新列表的元素之和
list = [2, 4, 6]
sum = 0
for i in list:
sum += i
print(sum) # 结果 12
# 找到100以内能被7整数和包含7的数字,把他们放入列表
list = []
for i in range(101):
a = i % 10 # 个位的值
b = i // 10 % 10 # 十位的值
if i % 7 == 0 or (a == 7 or b == 7):
list.append(i)
print(list)
join方法提取列表里的字符串,只能是字符串哦
l = ['h', '3', 'l']
s1 = "".join(l) # 提取l列表里的值
s2 = "-".join(l) # 添加分隔符-
print(s1) # h3l
print(s2) # h-3-l
循环嵌套
for i in range(3): # i = 0 1 2
for j in range(5): # j = 0 1 2 3 4 5
print(f"i={i},j={j}")
item = [] # 创建一个空列表
for i in range(3): # 用i变量循环三次
item.append(i) # 循环的值添加到item列表里
print(item) # 打印列表 [0, 1, 2]
l = []
for i in range(3):
item = []
for j in range(5):
item.append(j)
l.append(item)
print(l) # [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
l = [[j for j in range(5)] for i in range(3)]
print(l) #结果和上面一样
while 循环
for和while的区别:for用来精确控制循环次数【循环的工作量是否确定】,while是用在不知道循环次数但知道循环结束的条件。
a = 0 #先定义变量a,并赋值,可为空。
while a < 5: #设定一个放行条件:a要小于5,才能办事
a += 1 # 满足条件时,就办事:将a+1
print(a) # 结果是12345,注意缩进,下面的不缩进,打印的就是最后一个值
print(a) # 结果是5
对于“输入密码,判断输入的密码是否正确”这件事,我们并不知道要判断几遍才能得到正确密码,所以【工作量不确定】,适合用while循环。
password = '' # 变量password用来保存输入的密码
while password!='123456':
password=input('请重新输入密码')
print('打开')
不过有一种情况for循环和while循环都可以解决问题,那就是【把一件事情做N遍】
#用for循环把诗句打印3遍
for i in range(1,4) :
print('明日复明日,明日何其多。')
#用while循环把诗句打印3遍
j = 1
while j<4 :
print ('明日何其多,明日何其多。')
j =j+1
布尔运算
1.用字母数值做比较
一共有6种比较方式:==、!=、 >、<、>=、<=
字母和数字的关系 : z…c b a > Z… C B A > 9… 3 2 1 0
# 下面所有都为true
print(9 > 0)
print(3 != 5)
print(1 == 1.0) # 等号是两个等号
print('a' < 'z') # a最大,字符串比较要加引号
print('a' > 'A') # 同样的字母小写大于大写
print('Hi' > 'Hello') #首字母一样,比较后面的,i>e,所以结果是true
# 运算顺序
# **
# * / % //
# + -
# ==、!=、 >、<、>=、<=
# and or not
# =
result = 1+2**2*3 >= 12-4/2 and 'Apple' >= 'Car' # 先**
result = 1+4*3 >= 12-4/2 and 'Apple' >= 'Car' # 后* /
result = 1+12 >= 12-2 and 'Apple' >= 'Car' # 后+-
result = 13 >= 10 and 'Apple' >= 'Car' # 后>=
result = 'Ture' and 'Flase' # 后and
print(result)
2.用数值做比较
bool() 是一个看布尔值的函数,类似于我们之前的type(),结果是 True 或 Flase
3.布尔值之间的运算
一共有5种计算方式:and、or、not、in、not in 。下面用囚徒困境来写个案例。
while True:
a = input('A,你认罪吗?请回答认罪或者不认')
b = input('B,你认罪吗?请回答认罪或者不认')
if a == '认罪' and b == '认罪':
print('两人都得判10年,唉')
elif a == '不认' and b == '认罪':
print('A判20年,B判1年,唉')
elif a == '认罪' and b == '不认':
print('A判1年,B判20年')
else:
print('都判3年,太棒了')
break # 当满足开头提到的条件时,跳出循环。
四种新的语句
break(内部使用,结束循环)
break的意思是“打破”,是用来结束循环的,一般写作if…break。
豆瓣的爬虫逻辑,注意变量命名的取法。如果去掉break,看看结果是我们想要的吗?
movies = {
'妖猫传':['黄轩','染谷将太'],
'无问西东':['章子怡','王力宏','祖峰']
}
actor = input('你想查询哪个演员?')
for movie in movies: # 用 for 遍历字典
actors = movies[movie] # 读取各个字典的主演表
if actor in actors:
print(actor + '出演了电影' + movie)
break
else:
print('此演员没有作品')
break
小小地提醒你,break前面一共缩进了【8个空格】。空格和Tab 是一样的!
continue(内部使用,重新开始)
这个子句也是在循环内部使用的。当某个条件被满足的时候,触发continue语句,提前结束本轮循环(不执行后面的代码),并直接开始下一轮循环。
i = 1
while i < 8:
if i % 2 == 1: # 偶数
i += 1
continue # 跳出循环到 i<8
print(i) # 结果 246
i += 1
pass语句
Pass语句只用于维持程序结构的完整。我们在编程时若不想马上编写某些代码,又不想有语法锆误,就可以使用pass语句占位,意思是“跳过”。
a = int(input('请输入一个整数:'))
if a > 100:
pass
else:
print('你输入了一个小于100的数字')
else语句
我们在条件判断语句见过【else】,其实,else不但可以和if配合使用,它还能跟for循环和while循环配合使用。
for p in range(3):
p = int(input('请输入手机密码,你有3次机会:'))
if a == 123456:
print('打开手机')
break
else:
print('3次都错了,5分钟后重试')
猜数字游戏练习
secret = 24 #设定秘密数字
while True:
guess = input('你来猜猜我的秘密数字是多少:') #输入猜测数字
if int(guess)==secret: #数字对比
print('正确!你很棒哦。')
break
elif int(guess)>secret:
print('你猜的太大了,请重新猜猜~')
else:
print('你猜的太小了,请重新猜猜~')