在实际编程中For循环遍历列表,if 作为判断的结构是非常常见的,下面我们就来讲讲如何将两者配合使用:
简单案例
我们定义一个列表,有几种水果,我们希望打印出我们喜欢吃的水果,这些水果里面,我们唯独不爱吃香蕉:
fruit_lists=['apple','orange','banana','strawberry']for fruit_list in fruit_lists: if fruit_list !='banana': print("I like eating " + fruit_list)
第一行:我们定义了一个列表,这个列表里面包含四种水果
第二行:我们遍历列表的每种水果
第三行:如果遍历的水果不等于"banana" 时,我们继续执行下面的语句
第四行:打印我喜欢吃的水果,由于做了判断执行结果可想而知,只有banana没有打印出来。
求余和乘方
前几天在知乎上回答了一个问题,拿来和大家分享,刚好和这个这节课比较符合,问题是如何用python求
1^2-2^2+3^2-4^2+5^2.......-96^2+97^2-98^2+99^2=?
在回答这个问题前,我们先来了解一下求余和乘方的概念:
print(4%2)print(4%3)print(4**2)print(2**3)
打印结果为:
1) 在python 中 % 代表取余,因此第一行、第二行打印的数值分别时0、1.
2) 而**,两个*号代表的则是乘方,因此第三第四行打印的数值分别是16 和 8
回到我们这个问题,我们可以发现 奇数对应的均是正数,而偶数对应的均是负数 ,因此思路上我们可以判断遍历的数字是奇数还是偶数,然后决定是否要将平方数乘以-1.
sum_result=0for i in range(1,100): if i % 2 != 0: sum_result+=i**2 elif i % 2==0: sum_result -=i**2print(sum_result)
第一行:我们将sum_result这个变量赋值为0
第二行:我们遍历(1,100)内的数据,不包括100
第三行:如果i 对2求余不为0 ,执行以下代码,"!=" 代表不等于
第四行:如果取余不为0,说明这个数是奇数,那么我们使用累加迭代:
sum_result += i**2 这个表达式等于 sum_result= sum_result + i**2
第五行:如果i 对2求余为0 ,则执行下面代码在python中 "==" 才表示相 等,一个"="代
表赋值,
第六行:如果取余为0,说明这个数是偶数,使用累加迭代:
sum_result -= i**2 这个表达式等于 sum_result= sum_result - i**2
第七行:打印求和结果
如此我们就将 1^2-2^2+3^2-4^2+5^2.......-96^2+97^2-98^2+99^2=?的结果求出来了。
执行结果为:4950
列表解析式
在某乎上看到另一个回答,涉及到列表解析式,我们先简单介绍一下列表解析式是什么。我们看看下面一个问题:
我们希望将1-10的平方数放入到一个列表中,按前几节课的方法:
number_list=[]for value in range(1,11): number_list.append(value**2)print(number_list)
第一行:定义一个空列表
第二行:遍历1-10的值
第三行:将每个值的平方添加到列表中
第四行:将列表打印出来
执行结果如下:
如果使用列表解析式,我们来看看有什么不同:
print([value**2 for value in range(1,11)])
第一行:value 是遍历1-10得到的变量。而列表要获取的就是,value**2 即value的平方,最后将这个列表打印出来。看到了吗,我们只需要一行代码即可。
这就是列表解析,现在让我们回到 求解1^2-2^2+3^2-4^2+5^2.......-96^2+97^2-98^2+99^2=?的问题上来,看看这个列表解析该如何做,也只需要一句代码:
print(sum([((-1)**(x-1))*(x**2) for x in range(1,100)]))
第一行:先理解最里面的列表, (-1)**(x-1) 是用来判断是否给值加负号的,你可以尝试带入一些值,如x=1 时,是 (-1)^ 0 也就是1 . 然后将正负号乘以x的平方。这样形成的列表,我们将其求和后再打印出来,就是我们需要计算的值了:
上期答案与本期习题
上期习题:
使用if 语句判断用户输入的分数,如果分数小于60,那么打印“您的成绩不合格”,如果分数大于等于60,小于75 ,那么打印,“您的成绩为合格” , 如果分数大于75 ,小于85 ,那么打印,“您的成绩为良好”, 如果大于85,小于等于100, 则打印,“您的成绩为优秀”。如果输入的数值不在这个区间,则打印,您的成绩输入不正确,请重新输入
point_value=int(input("请输入分数"))if point_value<60: print("您输入的分数不合格")elif point_value>=60 and point_value<75: print("您输入的分数为合格")elif point_value>=75 and point_value<85: print("您输入的分数为良好")elif point_value>=85 and point_value<=100: print("您输入的分数为优秀")
本期习题:
1.使用 if 和 for 计算 : -1+2-3+4-5+6.....-97+98-99+100 的结果
2.使用列表解析式计算: -1+2-3+4-5+6.....-97+98-99+100 的结果
更多免费资料,请关注公众号