• 2018.10.10python homework


    1、将names=['egon','alex_sb','wupeiqi','yuanhao']中的名字全部变大写

    names=['egon','alex_sb','wupeiqi','yuanhao']
    new_names=[name.upper() for name in names]
    print(new_names)

    2、将names=['egon','alex_sb','wupeiqi','yuanhao']中以sb结尾的名字过滤掉,然后保存剩下的名字

    长度。

    names=['egon','alex_sb','wupeiqi','yuanhao']
    res=filter(lambda name:not name.endswith('sb'),names)
    print(list(res))

    3、求文件a.txt中最长的行的长度(长度按字符个数算,需要使用max函数)

    with open('a.txt','rt',encoding='utf-8')as f:
       res=max(f,key=lambda line:len(line))
       print(len(res))

    4、求文件a.txt中总共包含的字符个数?思考为何在第一次之后的n次sum求和得到的结果为0?(需要使用sum函数)

    with open('a.txt','rt',encoding='utf-8')as f:
       res=sum(len(line) for line in f)
       print(res)

    5、思考题

    with open('a.txt') as f:
       g=(len(line) for line in f)
    print(sum(g)) #为何报错?
    f= open('a.txt')
    g=(len(line) for line in f)
    f.close()
    print(sum(g))

    #这两个报错是一致的,所以可能是后面再求和的时候文件已经关闭了

    6、文件shopping.txt内容如下:

    mac,20000,3

    lenovo,3000,10

    tesla,1000000,10

    chicken,200,1

    求总共花了多少钱?

    #方式一:

    with open('shopping.txt')as f:
       money=0
       for msg in f:
           res=msg.strip(' ').split(',')
           sums=int(res[1])*int(res[2])
           money+=sums
    print(money)

    方式二:

    with open('shopping.txt',encoding='utf-8') as f:
       info=[line.split(',') for line in f]
       money=sum(float(price)*int(count) for *_,price,count in info)
       print(money)

    打印出所有商品的信息,格式为[{'name':'xxx','price':333,'count':3},...]

    #方式一:

    products=[]
    with open('shopping.txt')as f:
       for msg in f:
           res = msg.strip(' ').split(',')
           res_dict={'name':res[0],'price':res[1],'count':res[2]}
           products.append(res_dict)
    print(products)

    #方式二:

    with open('shopping.txt')as f:
       info=[{'name':line.strip(' ').split(',')[0],'price':line.strip(' ').split(',')[1],'count':line.strip(' ').split(',')[2]} for line in f]
    print(info)

    求单价大于10000的商品信息,格式同上

    products=[]
    with open('shopping.txt')as f:
       for msg in f:
           res = msg.strip(' ').split(',')
           res_dict={'name':res[0],'price':res[1],'count':res[2]}
           if int(res_dict['price'])>10000:
               products.append(res_dict)
    print(products)

     

    7.想从一个按照从小到大排列的数字列表中找到指定的数字,遍历的效率太低,用二分法(算法的一种,算法是解决问题的方法)可以极大低缩小问题规模

    nums=[1,2,10,30,33,99,101,200,301,311,402,403,500,900,1000] #从小到大排列的数字列表
    def search_num(num,nums):
       if len(nums) == 0:
           print('num not exist')
           return
       mid_index=len(nums)//2
       if num > nums[mid_index]:
           nums=nums[mid_index+1:]
           search_num(num,nums)
       elif num < nums[mid_index]:
           nums=nums[:mid_index]
           search_num(num,nums)
       else:
           print('got it')
    search_num(44,nums)
    l = [1, 2, 10, 30, 33, 99, 101, 200, 301, 402]
    def search_index(num, l, start=0, stop=len(l) - 1):
      if start <= stop:
          mid_index = start + (stop - start) // 2
          if num > l[mid_index]:
              start = mid_index + 1

          elif num < l[mid_index]:
              stop = mid_index - 1
          else:
              print('got it', mid_index)
              return
          search_index(num, l, start, stop)
      else:
          print('num not exist')
          return


    search_index(33, l)

     

  • 相关阅读:
    cookies
    php文件上传
    pho文件和目录操作
    php 日期和时间
    json解析网站
    only_full_group_by的注意事项
    $.extend()、$.fn和$.fn.extend()
    select样式美化(简单实用)
    toArray(),toJson(),hidden([ ]),visible([ ])
    tp5 model 中的查询范围(scope)
  • 原文地址:https://www.cnblogs.com/hello-yuanjing/p/9768803.html
Copyright © 2020-2023  润新知