截取列表前面100行_Python新手上车10:if 和for 处理列表

81e47d36ffe46961a381aa29871565e3.png

        在实际编程中For循环遍历列表,if 作为判断的结构是非常常见的,下面我们就来讲讲如何将两者配合使用:

eb6940ad20e067a0c1d85e883578eadb.png

简单案例

   我们定义一个列表,有几种水果,我们希望打印出我们喜欢吃的水果,这些水果里面,我们唯独不爱吃香蕉:

fruit_lists=['apple','orange','banana','strawberry']for fruit_list in fruit_lists:    if fruit_list !='banana':        print("I like eating " + fruit_list)

第一行:我们定义了一个列表,这个列表里面包含四种水果

第二行:我们遍历列表的每种水果

第三行:如果遍历的水果不等于"banana" 时,我们继续执行下面的语句

第四行:打印我喜欢吃的水果,由于做了判断执行结果可想而知,只有banana没有打印出来。

bf5b9a32b5efa22e4d64fd3be619cee5.png

885830e6ecb094eb48b7579e242ca901.png

求余和乘方

     前几天在知乎上回答了一个问题,拿来和大家分享,刚好和这个这节课比较符合,问题是如何用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)

打印结果为:

98b9abcc71d239d725095105c2f0b01b.png

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

12f62844652527cdcfdd95e9d2c8eb1c.png

604e509d1a8089b7f0d68fcaae479966.png

        列表解析式

在某乎上看到另一个回答,涉及到列表解析式,我们先简单介绍一下列表解析式是什么。我们看看下面一个问题:

我们希望将1-10的平方数放入到一个列表中,按前几节课的方法:

number_list=[]for value in range(1,11):    number_list.append(value**2)print(number_list)

第一行:定义一个空列表

第二行:遍历1-10的值

第三行:将每个值的平方添加到列表中

第四行:将列表打印出来

执行结果如下:

102202ff50dd9d8c4efc55869b0c0606.png

如果使用列表解析式,我们来看看有什么不同:

print([value**2 for value in range(1,11)])

第一行:value 是遍历1-10得到的变量。而列表要获取的就是,value**2 即value的平方,最后将这个列表打印出来。看到了吗,我们只需要一行代码即可。

848d8c835ad906933f38a1ca51b0613e.png

这就是列表解析,现在让我们回到 求解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的平方。这样形成的列表,我们将其求和后再打印出来,就是我们需要计算的值了:

af96c6165c1205f5cdcb8667b8c78e36.png

77af3e6916c2adb9ed4bc1b0e40abfa3.png

上期答案与本期习题     

上期习题:

  使用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 的结果

更多免费资料,请关注公众号

1a2d6fd492dd937098b86106c3275ad4.gif

eca0d0fa2a80cb490becf99133f74a11.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值