python for循环遍历涉及的相关问题及代码实现(非全部)

  • Post author:
  • Post category:python


一问:遍历列表,求20个数字相加的和       ( 有两种方法)

第一种如下产生了1到21的数字,即产生了1到20的数字,共20个。

代码如下:

sum=0                                 #给变量sum赋值为0,方便之后的遍历元素相加
listB=[]                              #定义一个空的列表变量,来存放后面产生的数字
for i in range(1,21):                 #在这里可以也可以试着写range(20),其意思为产生了下标为0到19的数字,即产生了20个数字。而range(len(1,21))
    listB.append(i)                   #利用append()函数来向列表的末尾添加元素,
    sum+=i                            #表示每一次循环,sum都会加上遍历出来的i
print(sum)                            #打印sum
print(listB)                          #打印listB

效果如下:

210

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

第二种方法,产生无序列表(需要引入一个产生随机数的函数库‘random’)

代码:

import random
sum=0
listB=[]                                 #定义一个空的列表变量,来存放后面产生的随机数字
for i in range(1,21):                    #在这里可以也可以试着写range(20),其意思为产生了下标为0到19的数字,即产生了20个数字。而range(len(1,21))
     listB.append(random.randint(1,66))  #利用append()函数来向列表的末尾添加元素,random()函数随机产生1到65之间的数字,并写入列表中
     for j in range(len(listB)):         #用for循环遍历列表,因为j的值为列表的长度,即一个数字,20,所以j的遍历的是列表里面元素的下标,然后在循环下,依次相加,得列表中的元素和
         sum+=listB[j]                   #也可以写成sum=sum+listB[j],推荐如图代码的写法,省时些。
print(listB)                              #打印listB
print(sum)                                #打印sum

效果;

[29, 50, 52, 65, 46, 53, 22, 14, 6, 33, 41, 26, 19, 24, 31, 47, 6, 53, 16, 20]

7647

二问:给两个列表,分别存放一组数据,遍历,打出成绩60分以上的人名

代码:

name=['王','张','李']             #定义一个列表变量name,存放三个元素'王','张','李',因为里面的元素为汉字,字符串,因此需要用到引号,如数字就不需要引号。
goal=[88,99,55]        #定义一个列表变量goal,存放三个元素,数字88,99,66
                                             
for i in range(len(goal)):                                   #略(一般略的意思为前面我们已提到,在此就不多费口舌了)
    if goal[i]>60:                                           #if判断语句(语句后面都要带冒号),判断列表goal中的数字是否大于60,如果符合条件则输出。
        print('成绩过60的人有{}'.format(name[i]),end=' ')      #此处用到了占位符来格式化输出,并且由前面的遍历可知,下标为i的元素符合条件,因此想要打印出成绩大于60的人只需要寻找列表name里面的i元素就好了。因为printt默认以换行结尾,不想一行一个结果的话,可以写end=' '表示以空格结尾,

效果:

成绩过60的人有王 成绩过60的人有张

三问: 取出一个列表中最大和最小的数字,(有两种方法)

第一种方法,用遍历来进行比较。

# 我们分两步走

#首先看看有没有存放数字的列表变量,无的话可以有,无序生成,前面已有,此略

#然后,我们定义两个变量,都赋值为列表的第一个元素。遍历判断后打印出来即可。

代码:

import random
listNum=[]                      #定义一个列表变量listNum,存放随机产生的20个数字
for i in range(20):                  #略
    listNum.append(random.randint(1,66)) #略

min=listNum[0]                      #令最小值为列表中的第一个元素,后面通过遍历,比大小,得出最小值
max=listNum[0]                      #令最大值为列表中的第一个元素,后面通过遍历,比大小,得出最大值
for j in range(len(listNum)):
    if listNum[j]<min:                #因为前面我们设了最小值为第一个元素,我们要遍历listNum的元素,用if语句判断是否每一次的listNum元素都会小于遍历的数,如果如果是的话,那么我们则取到了最小值。
        min=listNum[j]                 #如果遍历的所有数都小于最开始的数,得最小值
    elif listNum[j]>max:                #max的得出,同理,略。
        max=listNum[j]
print(f'随机生成的列表为:{listNum}')     #在这里我们使用了f'{}'来格式化输出,其实它的表示与'{}'.format类似,但是更加简单,方便.看个人喜欢。
print(f'最小的数为:{min}')
print(f'最大的数为:{max}')

效果: 我们的列表里面的元素是随机产生的,因此最大最小值都会有所不同。

随机生成的列表为:[9, 45, 40, 63, 56, 24, 8, 38, 61, 5, 6, 2, 59, 19, 42, 7, 43, 55, 8, 47]

最小的数为:2

最大的数为:63

第二中方法,用sort()函数来实现。(这个比较简洁)

依旧是先定义一个有数字的列表。

代码:

import random
listNum=[]                                        #定义一个列表变量listNum,存放随机产生的20个数字
for i in range(20):                           #略
    listNum.append(random.randint(1,66))          #略
    listNum.sort()                            #sort()函数,对列表进行排序,一般列表都是从小到大排列。后面有兴趣的看,如果想要倒着排(即从大到小)的话可以加上reverse=True,然后下面的最大值位置变成了第一个,相应的改变描述就好了
print(listNum)
print(f'最大值为:{listNum[-1]}')                    #表示取列表的最后一个,列表的反向排序都是从-1开始,即反向排序的第一个下标为-1
print(f'最小值为:{listNum[0]}')       

效果:

[1, 3, 5, 6, 10, 12, 21, 24, 26, 34, 38, 42, 42, 46, 49, 53, 58, 64, 64, 64]

最大值为:64

最小值为:1

四问:某同学参加了四次考试,每次考数学和语文,语文和数学的平均分哪个高。

listGaol=[{'Chinese':120,'math':90},{'Chinese':130,'math':100},{'Chinese':110,'math':120},{'Chinese':120,'math':115}]#在一个列表里面加入每次考试的成绩,考了四次,共四个字典
chinese=0
math=0
for i in range(len(listGaol)):
    chinese+=listGaol[i]['Chinese']         #因为这个列表是包含有其他的变量类型(字典),因此要访问里面的元素,需要写两次索引,且因字典的值是通过键来访问的,因此后面的中括号里面写上对应的要找的语文键,
    math+=listGaol[i]['math']         #同理
c=chinese/4                #求平均数
m=math/4
if c>m:
    print(f'语文平均分最高,为{c}分')
else:
    print(f'数学平均分最高,为{m}分')
print(f'语文成绩总分为:{chinese},平均分为:{c}分')
print(f'数学的总分为:{math},平均分为;{m}分')

效果:

语文平均分最高,为120.0分

语文成绩总分为:480,平均分为:120.0分

数学的总分为:425,平均分为;106.25分


以上为个人的理解,如有错误,请私信我,一起努力进步,感谢~



版权声明:本文为weixin_53046747原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。