day5 list,for

第5天:列表作业

必做题

  1. 已知一个列表 names = ['鲁班七号', '后裔', '狄仁杰', '黄忠', '孙尚香'],编写程序用两种方法获取names中的元素黄忠

    print(names[3])
    #或者
    print(names[-2])
    #或者
    value=names.pop(names.index("黄忠"))
    print(value)
    #或者
    if '黄忠' in names:
        print('黄忠')
    else:
        print('黄忠不存在')
    
  2. 已知一个数字列表,输出所有元素中,值为奇数的元素。

    list1=[0,1,2,3,4,5,6,7,8,9]
    for i in list1:
        if i%2!=1:
            print(i)
    
  3. 已知一个列表 scores = [90, 89, 67, 98, 75, 87, 54, 88],输入两个成绩,一个添加到scores的最后,另一个插入到scores的最前面。

    **例如:**输入的成绩分别是99和98,那么程序运行结束后打印 scores 的值应该是 [98, 90, 89, 67, 98, 75, 87, 54, 88, 99]

    scores = [90, 89, 67, 98, 75, 87, 54, 88]
    scores.append(int(input("请输入插在最后的成绩:")))
    scores.insert(0,int(input("请输入插在第一位的成绩:")))
    print(scores)
    
  4. 已知一个数字列表, 编写程序将列表中所有元素乘以2

    **例如:**nums = [1, 2, 5, 9] -> nums = [2, 4, 10, 18]

    nums=[1,2,5,9]
    for i in range(len(nums)):
        nums[i]=nums[i]*2
    print(nums)
    #或者
    nums=[1,2,5,9]
    new=[]
    for i in nums:
        new.append(i*2)
    nums=new
    print(nums)
    
  5. 有一个数字列表,获取这个列表中的最大值(注意: 不能使用max函数)

    list1=[0,1,2,3,4,5,6,7,8,9]
    j=list1[0]
    for i in list1:
        if i > j :
            j=i
    print("列表中的最大值是:",j)
    #或者
    list1=[0,1,2,3,4,59,6,7,8,9]
    list1.sort()
    print(list1[-1])
    
  6. 写出你对今日授课内容中有疑问的地方(或者觉得有困难的知识点)

选做题

  1. 写⼀一个程序可以不不断的输⼊入数字,直到输⼊入的数字是0打印 结束 后程序结束。

    **提示:**break的使用

    num = int(input("请输入一个数字:"))
    while True:
        if num==0:
            break
        else:
            num = int(input("请重新输入一个数字:"))
    print("是0就对了!")
    #或者
    num = int(input("请输入一个数字"))
    while num!=0:
        print("不是我想要的")
        num = int(input("请重新输入一个数字:"))
    print("对了!")
    
  2. 已知一个数字列表,获取列表中出现次数最多的元素

    **例如:**nums = [1, 2, 3,1, 4, 2, 1 ,3, 7, 3, 3] -> 打印: 3

    nums = [1, 2, 3,1, 4, 2, 1 ,3, 7, 3, 3]
    compare=[]
    for i in nums:
        time=nums.count(i)
        compare.append(time)
    max1=compare.index(max(compare))
    print(nums[max1])
    #或者
    list1=[0,1,2,2,2,2,3,4,5,6,7,99,8,9]
     #假设法,记录最大次数
     maxCount=0
     value = list1[0]
     for num in list1:
         #统计每个元素出现的次数
         count=list1.count(num)
         #比较
         if count > maxCount:
             maxCount=count
             value=num
     print("最大值:%d" % (value))
    

挑战题

  1. 已知一个列表中保存的全是学生的姓名,要求去掉重复的名字

    **例如:**names = [‘张三’, ‘李四’, ‘大黄’, ‘张三’] -> names = [‘张三’, ‘李四’, ‘大黄’]

    names = ['张三', '李四', '大黄', '张三']
    new=[]
    for i in names:
        if i not in new:
            new.append(i)
    names=new
    print(names)
    
  2. 一张纸的厚度⼤大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的⾼高度(8848.13⽶米)?

    提示: break的使用

    high=0.08
    time=0.0
    while True:
        if high>=8848.13:
            break
        else:
            time+=1
            high=0.08*2**time
    print(time)
    
  3. 统计101~200中素数的个数,并且输出所有的素数。(素数⼜又叫质数,就是只能被1和它本身整除
    的数)

    提示: break的使用

    time=0
    for i in range(101,201):
        for j in range(2,i):
            if i%j==0:break
        else:
            time+=1
            print(i,'是质数')
    print("一共有%d个素数" % (time))
    #或者
     resultList=[]
     for num in range(101,201):
         flag = True
         #假设一个素数,寻找推翻假设的条件:
     	# 在2~num-1范围内找到一个数吧num整除
         for m in range(2,num):
             if num % m ==0:
                 #给flag重新赋值
                 flag = False
                 #只要找到一个数吧num整除,则循环可以提前结束
                 break
         if flag:
             resultList.append(num)
     print(resultList)
     print(len(resultList))
    
  4. 要求输入员工的薪资,若薪资小于 0 则重新输入。最后打印出录入员工的数量和薪资明细,以及平均薪资。
    提示: continue的使用

     salarySum = 0
     salarys = []
     for i in range(4):
         s = input("请输入一共 4 名员工的薪资(按 Q 或 q 中途结束):")
         if s.upper() == 'Q':
             print("录入完成,退出")
             break
         if float(s) < 0:
             continue
         salarys.append(float(s))
         salarySum += float(s)
     else:
         print("您已经全部录入 4 名员工的薪资")
     print("录入薪资:", salarys)
     print("平均薪资{0}:".format(salarySum/4))
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值