• Python Day8


    习题

    #1. 变量名规范(3分)
    #答案:数字字母下划线,数字不能放在前,不能使用python关键字
    #2. 字节和位关系(2分)
    #答案:1字节等于8位
    #3. 看代码写结果(2分)
    name = “wupeiqi” result = name.upper()
    print(name)
    print(result)

    #结果:wupeiqi  WUPEIQI
    #4. “李泉”使用utf-8编码时,占用字节以及位数;使用gbk编码时,占用字节以及位数(2分)
    #答案:utf - 8:占6个字节 ,48位      gbk:占4个字节,32位
    #5. 简述一下两段代码的区别?(2分)
    n1 = “wupeiqi” n2 = n1
    n1 = “wupeiqi” n2 = “wupeiqi”

    #答案:第一段是令变量n2等于n1    第二段创建了一个新的字符串n2
    #6. 默认字符串中的10个功能并描述作用(10分)
    -isdecimal  是否是数字
    -upper    全大写
    -lower    全小写
    -strip    去空格
    -capitalize  首字母大写
    -lstrip    左侧空格
    -rstrip    右空格
    -len      字符串长度
    -startswith 是否是以···为首
    -endswith  是否是以···为末尾
    -split     分割
    #7. 书写布尔值为False的常用值(2分)
    #答案:0,{},[],(),None
    #8. 书写Python3和Python2的三个不同(3分)
    #python3没有xrange,Python2有
    #python3识别中文   python2报错
    #python3中print用加括号   python2不用
    #9. 简述深浅拷贝(2分)
    #浅拷贝只拷贝一层,深拷贝拷贝所有层
    #10. 分别使用for和while循环实现 1 - 2 + 3 - 4 + 5 …+99 (8分)
    #while方法:
    i = 0
    v = 0
    while i<99:
        i += 1
        if i % 2 ==1:
            v += i
        else:
            v -=i
    print(v)

    #for方法:
    v = 0
    for i in range(0,100):
        if i % 2 ==1:
            v += i
        else:
            v -= i
    print(v)
    #11. 使用range实现打印 100,99,98…1,0 (2分)
    for i in range(100,-1,-1):
      print(i)
    #12. 看代码写结果(3分) 
    n1 = [11,22,33] 
    n2 = n1 
    n3 = n1.copy() 
    n1[1] = 666
    print(n1) 
    print(n2) 
    print(n3)
    #结果:
    [11,666,33]  [11,666,33]  [11,22,33]
    #13.打印 9*9 乘法表(8分)即:
    1 * 1 = 1
    1 * 2 = 2  2 * 2 = 4
    1 * 3 = 3  2 * 3 = 6 …

    1 * 9 = 9  2 * 9 = 18 …
    #代码:
    #第一种
    for i in range(1,10):
        for j in range(1,i+1):
            print('%d*%d=%d'%(j,i,i*j),end=' ')
        print()
    #第二种
     for i in range(1,10):
         for j in range(1,i+1):
             if i == j:
                 print('%s*%s=%s' % (j, i, i * j),end=' ')
             else:
                 print('%s*%s=%s'%(j,i,i*j),end=' ')
    #14. 判断一下代码是否正确,如果错误则改正,否则书写结果(4分)
    name = “你{0},{1}无理取闹”
    n1 = name.format(‘冷酷’,’无情’) 
    print(n1) 
    n2 = name.format(**[’冷酷’,’无情’]) 
    print(n2)
    name = “你{xx},{oo}无理取闹” 
    n3 = name.format(oo=‘冷酷’,xx=’无情’)
    print(n3)
    n4 = name.format(*{‘xx’: ’冷酷’, ‘oo':’无情’}) 
    print(n4)

    #答:'你冷酷,无情无理取闹'
    #第二个加一个*   第四个两个*
    #15. 计算用户输入的内容中索引为奇数并且值为数字的个数(7分)
    #第一种
    v = input('请输入:')
    c = 0
    for item in range(len(v)):
        if item % 2 == 1 and v[item].isdecimal():
            c += 1
    print(c)
    #第二种
    v = input('请输入:')
    v1 = v[1::2]
    c = 0
    for item in v1:
        if item.isdecimal():
            c += 1
    print(c)

    #16. 实现购物车(8分)
    #            功能要求:
    #                    要求用户输入自己拥有总资产,例如:2000                     
    #     显示商品列表,让用户根据序号选择商品,加入购物车                     购买,如果商品总额⼤大于总资产,提示账户余额不不⾜足,否则,购买成功。
    #        购买成功时,需要打印购物清单商品列表:
    #                goods = [
    #                    {"name": "电脑", "price": 1999},
    #                    {"name": "⿏鼠标", "price": 10},
    #                    {"name": "游艇", "price": 20},
    #                    {"name": "美⼥女女", "price": 998},
    #                ]
    #代码:
    goods = [
                        {"name": "电脑", "price": 1999},
                        {"name": "鼠标", "price": 10},
                        {"name": "游艇", "price": 20},
                        {"name": "美⼥女女", "price": 998},
                    ]
    dic =[]
    while True:
        z = input('请输入总资产:')
        z=z.strip()
        if z.isdecimal():
            z = int(z)
            print('总资产为:',z)
            break
        else:
            print('输入错误请重新输入:')
    s = 1
    for item in goods:
        print(s,item['name'],item['price'])
        s +=1
    n = 0
    while True:
        i = input('请输入要购买商品的序号,结算请输入q:')
        i = i.strip().lower()
        if i == 'q':
            break
        elif i.isdecimal():
            i = int(i)
            if i < len(goods)-1:
              print(i,goods[i-1]['name'],goods[i-1]['price'])
              n += goods[i-1]['price']
              dic.append(goods[i-1]['name'])
        else:
            print('输入格式错误请重新输入')
    if n < z:
     print('购买成功,剩余金额:%d'%(z-n))
     print('购买的商品列表为:',dic)
    else:
        print('购买失败,缺少金额为:%d' % (n-z))
        print('购买的商品列表为:', dic)
    #17.看代码书写结果(3分)
    for i in range(0,5):
        print(i)     
        for j in (0,i):
            print(j)
    #结果:0 1 2 3 4 0 4
    #18. 看代码书写结果(3分)
     while True:
        for i in range(10):
               print(i)
            if i == 5:             
       continue     
     else:
            break
    #结果为:0,1,2,3,4,5,6,7,8,9
    #19. 补充代码(5分)有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
    #即: 
    #{'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表}
     #代码:
    li = [11,22,33,44,55,66,77,88,99,90]
    result = {} for row in li:
    #代码:
    #方法一
    li = [11,22,33,44,55,66,77,88,99,90]
    result = {'k1':[] ,'k2':[]}
    for row in li:
        if row >66:
            result['k1'].append(row)
        elif row <66:
            result['k2'].append(row)
    print(result)
    #方法二
    li = [11,22,33,44,55,66,77,88,99,90]
    result = {}
    for row in li:
        if row > 66:
            if result.get('k1'):    # row =88 result={'k1':[77]}
                #result['k1'] == [77]
                result['k1'].append(row)
            else:
                result['k1'] = [row]
        elif row < 66:
            if result.get('k2'):
                result['k2'].append(row)
            else:
                result['k2'] = [row]
    #方法三
    li = [11,22,33,44,55,66,77,88,99,90]
    result = {}
    for row in li:
        if row > 66:
            if 'k1' in result:
                result['k1'].append(row)
            else:
                result['k1'] = [row]
        elif row < 66:
            if 'k2' in result:
                result['k2'].append(row)
            else:
                result['k2'] = [row]

    print(result)
    #20. 写代码,将列表 li = [11,22,33,44,55]的第一个之和最后一个值相加并插入索引为3的位置(3分) 
    #第一种
    li = [11,22,33,44,55]
    v = li[0] + li[4]
    li.insert(3,v)
    print(li)
    #第二种
     li = [11,22,33,44,55]
     su = li[0]+li[-1]
     li.insert(3,su)
     print(li)
    #21. 写代码,有以下数字:1,2,3,4,5,6,7,8 共八个数字,能组成多少个互不相同且无重复的两位数?(8分) 
    li = ['1','2','3','4','5','6','7','8']
    c = 0
    for item in li:
        for it in li:
            if item != it:
             y = item + it
       c = c+1
            else:
                continue
    print(c)
    #22. 写代码,有以下列表,请找到列表中任意两个数字相加等于9的元素的索引(8分)
    #nums = [2,7,11,15,1,8,7]
    #结果为: [(0,1),(4,5)]

    #代码:
    nums = [2,7,11,15,1,8,7]
    li = []
    for item in range(0,len(nums)):
        for it in range(item,len(nums)):
            if nums[item] + nums[it] == 9:
             v = ((item,it))
             li.append(v)
    print(li)
    #23. 看代码,书写结果(2分) 
    dic = dict.fromkeys([‘k1’,‘k2',True,(11,22)],[]) 
    dic[‘k1’].append(6) 
    dic[‘k2’].append(7) 
    print(dic)
    #结果:
    #{'k1': [6, 7], 'k2': [6, 7], True: [6, 7], (11, 22): [6, 7]}
    #24.基于文件实现用户登录程序,提示用户输入用户名和密码,检查是用户名和密码是否正确(10分)保存用户名密码的文件user.txt,内容格式:
    #第一种
    f1 = open('D:python.txt',encoding='utf-8',mode='r')
    v = f1.read()
    f1.close()
    i = v.split(' ')
    li = {}
    li['name'] = []
    li['pwd'] = []
    for item in i:
        l,u = item.split('|')
        li['name'].append(l)
        li['pwd'].append(u)
    v = 0
    while True:
            n = input('请输入用户名:')
            #for item in li['name']:
            if n in li['name']:
                while True:
                    v = li['name'].index(n)
                    v = int(v) 
                    y = input('请输入密码')
                    if y == li['pwd'][v]:
                        print('验证成功')
                        break
                    else:
                         print('密码错误,请重新输入')
                break
            else:
                print('用户名错误请重新输入')
    第二种
    f = open('user.txt',encoding='utf-8')
    user = input('username : ')
    pwd = input('password : ')
    for line in f:
        l = line.strip().split('|')
        if user == l[0] and pwd == l[1]:
            print("登录成功")
            break
    第三种
    f = open('user.txt',encoding='utf-8')
    dic = {}
    for line in f:
        l = line.strip().split('|')
        dic[l[0]] = l[1]
    user = input('username : ')
    pwd = input('password : ')
    # 用户名==用户名 and 密码==密码

    # if user in dic and dic[user] == pwd:
    #     print('登录成功')
    if dic.get(user) == pwd:
        print('登录成功')
    #25. 看代码,书写结果(2分) 
    name = “海娇
    userlist = [‘老狗’,’方惊鸿’] 
    userlist.extend(name) 
    print(userlist)
    结果:
    ['老狗',’方惊鸿’,“海","娇"]
    #26. 列举int、bool、str、list、tuple、dict、set中可以作为字典的Key的类型(2分)
    int bool str tuple
    #27. 转换(6分,每个1分,最后一个2分)
    a. 将字符串s = "alex" 转换成列表
    s = ['alex']
    b. 将字符串 s = "alex" 转换成元祖
    print(tuple(s))
    b. 将列表 li = ["alex", "seven"] 转换成元组
    print(tuple(li))
    c. 将元祖 tu = ('Alex', "seven") 转换成列表
    print(list(tuple(li)))
    d. 将列表 li = ["alex", "seven"] 转换成字典且字典的key按照 10 开始向后递增
    第一种
    li = ["alex", "seven"]
    le = {}
    d = 10
    for item in li:
        le[d] = [item,]
        d +=1
    print(le)
    第二种
    li = ["alex", "seven"]
    d = {}
    k = 10
    for i in li:
        d[k] = i
        k += 1
    print(d)

  • 相关阅读:
    【BZOJ3270】【高斯消元】博物馆
    【CODECHEF】【phollard rho + miller_rabin】The First Cube
    【BZOJ3884】【降幂大法】上帝与集合的正确用法
    【CF521C】【排列组合】Pluses everywhere
    mfc的任务栏的隐藏和显示
    Git配置过程
    AOP概念和7个专业术语
    文件操作IO流
    可扩展标记性语言XML
    深入理解多态
  • 原文地址:https://www.cnblogs.com/liuduo/p/7436405.html
Copyright © 2020-2023  润新知