zoukankan      html  css  js  c++  java
  • 4.python(列表,元组,字典)练习题

    这些题是我断断续续,断了好几天,快半个月写的吧,,因为每天就学一个半小时Python

    写一道看一道题的答案

    1.有两个列表

          l1=[11,22,33]

          l2=[22,33,44]

          a.获取内容相同的元素列表

           我写的

    l1 = [11, 22, 33]
    l2 = [22, 33, 44]
    l3 = []
    for i in l1:
        if i in l2:
            l3.append(i)
    print(l3)

          b.获取l1中有,l2中没有的元素列表

            我写的

    l1 = [11, 22, 33]
    l2 = [22, 33, 44]
    l3 = []
    for i in l1:
        if i in l2:
            pass
        else:
            l3.append(i)
    print(l3)

     老师写的

    l1 = [11, 22, 33]
    l2 = [22, 33, 44]
    l3 = []
    for i in l1:
        if i not in l2:
          l3.append(i)
          print(l3)

          c.获取l1和l2中内容都不同的元素

    我写的

    l1 = [11, 22, 33]
    l2 = [22, 33, 44]
    l3 = []
    for i in l1:
        if i in l2:
            pass
        else:
            l3.append(i)
    for i in l2:
        if i in l1:
            pass
        else:
            l3.append(i)
    print(l3)

    2.有1,2,3,4,5,6,7,8 八个数字,能组成多少个互不相同且无重复数字的两位数?

    我写的

    li = [1, 2, 3, 4, 5, 6, 7, 8]
    v = 0
    for i1 in li:
    for i2 in li:
    v = v+1
    if i1 == i2:
    v = v-1
    print(v)

     

    老师写的 

    v = 0
    for i1 in range(1, 9):
        for i2 in range(1, 9):
            if i1 != i2:
              v = v+1
    print(v)

    3.输出一份九九乘法表

    我写的

    v = 0
    for i1 in range(1, 10):
        for i2 in range(1, 10):
            if i1 <= i2:
               v = i1*i2
               print(str(i1)+"*"+str(i2)+"="+str(v))

    不会换行

    老师写的

    for i1 in range(1, 10):
        string = ""
        for i2 in range(1, i1+1):
            string = string + str(i1)+"*"+str(i2)+"="+str(i1*i2)+"	"
        print(string)

    老师写的第二种方法

    for i1 in range(1, 10):
        for i2 in range(1, i1+1):
           print(str(i1)+"*"+str(i2)+"="+str(i1*i2)+"	", end="")  #后面的end=""可以让print不换行  表示可以让输出的末尾加的值
        print("
    ",end="")

    3.数列li[1,2,3,6,5],使其元素输出组成互不相同,数字不重复的组合

    我写的

    li = [1, 2, 3, 6, 5]
    for i1 in li:
        for i2 in li:
            if i1 != i2:
              print(str(i1)+str(i2))

    我写的是个狗屁,没读懂题

    老师写的

    li = [1, 2, 3, 6, 5]
    l = len(li)
    i = 0  #range()中要用到i,就要在外面定义
    for i in range(0, l-i):
        for v in range(i+1, l):
              print(li[i], li[v])

    4.

     我写的

    for i in range(1, 20):  
        for v in range(1, 30):
            for j in range(1, 100):
                if 5*i+3*v+1/3*j == 100:
                    if i+j+v == 100:
                        text = "公鸡有{a}只,母鸡有{b}只,小鸡有{c}只"
                        result = text.format(a=i, b=v, c=j)
                        print(result)

    老师写的

    for i in range(1, 100//5):  # // 代表整除
        for v in range(1, 100//3):
            for j in range(1, 100):
                if 5*i+3*v+1/3*j == 100 and i + j + v == 100:
                    print(i, v, j)

    5.

     

    a.

    tu = ('alex', "eric", 'rain',)
    v = len(tu)
    print(v)

    b.

    tu = ('alex', "eric", 'rain',)
    v = tu[2]
    print(v)

    c.

    tu = ('alex', "eric", 'rain',)
    v = tu[1:]
    print(v)

     d.

    tu = ('alex', "eric", 'rain',)
    for v in tu:
        print(v)

    e.

    tu = ('alex', "eric", 'rain',)
    for v in range(len(tu)):
        print(v)

    f.

    tu = ('alex', "eric", 'rain',)
    for v, j in enumerate(tu, start=10):
        print(v, j)

     enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

     

     6.

    百度了一顿

    nums = [2, 7, 11, 15, 1, 8, 7]
    nums1 = list(set(nums))  #去除列表中重复的元素
    a = []
    l = len(nums1)
    i = 0
    for i in range(0, l-i):
        for v in range(i+1, l):
            if nums1[i] + nums1[v] == 9:
                a.append((nums1[i],nums1[v]))
    print(a)

     10.

     百度和看的老师的

    user_list = []
    for i in range(1,302):
        temp = {"name": "alex"+str(i), "email": "alex1@live.com"+str(i), "pwd": "pwd"+str(i)}
        user_list.append(temp)
    
    while True:
        s = input('输入页码:')
        if s.isdigit():
            s = int(s)
            start = (s-1)*10
            end = s*10
            result = user_list[start:end]
            for item in result:
                print(item, type(item))
        else:
            print('输入格式错误')

    11.通过数字选择类别,输入b返回上一级别,输入q结束程序

    dic = {
    '植物':
    {'草本植物':
    ['冬播', '春播二月兰', '紫罗兰', '洋葱', '小麦'],
    '木本植物':
    ['松', '杉', '枫杨', '樟茶', '月季', '木槿'],
    '水生植物':
    ['泉生眼子菜', '竹叶眼子菜', '睡莲', '萍蓬草', '荇菜', '菱角', '芡实']
    },
    '动物':
    {'两栖动物':
    ['蟾蜍', '海龟', '蝾螈', '蜥蜴', '大鲵'],
    '禽类':
    ['鸡', '鸭', '鹅火鸡', '鸽', '鹌鹑'],
    '哺乳类动物':
    ['老鼠', '豪猪', '海狸', '水豚', '狮', '豹']
    }
    }
    go = True
    while go:
    ##第一层
    li1 = []
    for i, v in enumerate(dic,1):
    print(i, v)
    li1.append(v)
    first = input("选择想看类别")
    first = int(first)
    while go:
    ##第二层
    li2 = []
    for i, v in enumerate(dic[li1[first-1]],1):
    print(i, v)
    li2.append(v)
    second = input("选择功能,看下一层,添加内容,返回上一层,退出程序")
    if second.isdigit():
    second = int(second)
    while go:
    ##第三层
    for i in dic[ li1[first-1] ] [ li2[second-1] ]:
    print(i)
    fourth = input("是否返回或退出")
    fourth = fourth.lower()
    if fourth == "b": #返回上一级
    break
    elif fourth == "q": #程序退出
    go = False
    break
    elif second.isalpha():
    second = second.lower()
    if second == "add":
    lx = input("类型:")
    if dic.get(lx, 1) == 1: #要添加类型不存在时返回默认值1
    dic[lx] = {}
    zl = input("种类:")
    if dic[lx].get(zl, 1) == 1:
    dic[lx][zl] = []
    while True:
    mc = input("名称:")
    if mc == "q":
    break
    elif mc in dic[lx][zl]:
    print("已将存在")
    else:
    dic[lx][zl].append(mc)
    dic = {
        '植物':
            {'草本植物':
                 {'冬播':{}, '春播二月兰':{}, '紫罗兰':{}, '洋葱':{}, '小麦':{}},
             '木本植物':
                 {'':{}, '':{}, '枫杨':{}, '樟茶':{}, '月季':{}, '木槿':{}},
             '水生植物':
                 {'泉生眼子菜':{}, '竹叶眼子菜':{}, '睡莲':{}, '萍蓬草':{}, '荇菜':{}}
            },
        '动物':
            {'两栖动物':
                 {'蟾蜍':{}, '海龟':{}, '蝾螈':{}, '蜥蜴':{}, '大鲵':{}},
             '禽类':
                 {'':{}, '':{}, '鹅火鸡':{}, '':{}, '鹌鹑':{}},
             '哺乳类动物':
                 {'老鼠':{}, '豪猪':{}, '海狸':{}, '水豚':{}, '':{}, '':{}}
            }
    }
    path = []
    while True:
        temp = dic
        for item in path:
            temp = temp[item]
        print('当前可选的所有子节点:', list(temp.keys()))
        choice = input('1:添加节点; 2:查看节点(Q退出,B返回)')
        if choice == "1":
            name = input("请输入要添加的节点")
            temp[name] = {}
        elif choice == "2":
            name = input('请输入要查看的节点名称:')
            path.append(name)
        elif choice.lower() == "b":
            if path:  #空列表是false
               path.pop()
        elif choice.lower() == "q":
            break
        else:
            print('输入错误,请重新输入!')
  • 相关阅读:
    设置MySQL的字符编码
    数据库面试题
    java.lang.IncompatibleClassChangeError: Implementing class
    下载SpringJar包
    使用命令wsimport构建WebService客户端
    java读取.properties配置文件的几种方法
    ELK5.X使用X-Pack配置密码
    Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
    MySQL常用命令
    XPath常用定位节点元素语句总结
  • 原文地址:https://www.cnblogs.com/zhaojiayu/p/12459299.html
Copyright © 2011-2022 走看看