zoukankan      html  css  js  c++  java
  • python基础_字典_列表_元组考试_day4

    1、请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li=['alex','eric','rain']

    1 li=['alex','eric','rain']
    2 v="_".join(li)
    3 print(v)

    执行结果:

    1 alex_eric_rain

    2、查找列表中元素,移除每个元素的空格,并查找以a或A开头并且以c结尾的所有元素。
    li=["alec","aric","Alex","Tony","rain"]
    tu=("alec","aric","Alex","Tony","rain")
    dic={'k1':"alex",'k2':'aric',"k3":"Alex","k4":"Tony"}

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-      
     3 # Author: nulige
     4 
     5 li = ["alec", "aric", "Alex", "Tony", "rain"]
     6 tu = ("alec", "aric", "Alex", "Tony", "rain")
     7 dic = {'k1': "alex", 'k2': 'aric', "k3": "Alex", "k4": "Tony"}
     8 
     9 list1 = list(tu)
    10 list2 = list(dic.values())
    11 newlist = li + list1 + list2
    12 for i in newlist:
    13     ret = i.strip()   #i.strip():删除字符串当前行首尾的的空格
    14     if (ret.startswith('a') or ret.startswith('A')) and ret.endswith('c'):   #startswith查看是否已什么开始,endswith查看是否已什么结尾
    15 print(ret)

    执行结果:

    1 alec
    2 aric
    3 alec
    4 aric
    5 aric

    3、写代码,有如下列表,按照要求实现每一个功能

    li=['alex','eric','rain']

    a.计算列表长度并输出

    1 li = ['alex', 'eric', 'rain']
    2 v = len(li)
    3 print(v)

    执行结果:

    1 3

    b.列表中追加元素“seven”,并输出添加后的列表

    1 li = ['alex', 'eric', 'rain']
    2 li.append(str("seven"))
    3 print(li)

    执行结果:

    1 ['alex', 'eric', 'rain', 'seven']

    c.请在列表的第1个位置插入元素“Tony”,并输出添加后的列表

    1 li = ['alex', 'eric', 'rain']
    2 li.insert(1,"Tony")
    3 print(li)

    执行结果:

    1 ['alex', 'Tony', 'eric', 'rain']

    d.请修改列表第2个位置的元素为“Kelly”,并输出修改后的列表

    1 li = ['alex', 'eric', 'rain']
    2 li[1] = "Kelly"
    3 print(li)

    执行结果:

    1 ['alex', 'Kelly', 'rain']

    e.请删除列表中的元素“eric”,并输出修改后的列表

    1 li = ['alex', 'eric', 'rain']
    2 li.remove("eric")
    3 print(li)

    执行结果:

    1 ['alex', 'rain']

     元素的值和删除元素后的列表 执

    1 li = ['alex', 'eric', 'rain']
    2 del li[1]
    3 print(li)
    4 n1 = li.pop(1)
    5 print(n1)

    执行结果:

    1 ['alex', 'rain']
    2 rain

    g.请删除列表中的第3个元素,并输出删除元素后的列表

    1 li = ['alex', 'eric', 'rain']
    2 li.pop(2)
    3 print(li)

    执行结果:

    1 ['alex', 'eric']

    h.请删除列表中的第2至4个元素,并输出删除元素后的列表

    1 li = ['alex', 'eric', 'rain', 'sic']
    2 del li[1:4]
    3 print(li)

    执行结果:

    1 ['alex']

    i.请将列表所有的元素反转,并输出反转后的列表

    1 li = ['alex', 'eric', 'rain']
    2 li.reverse()
    3 print(li)

    执行结果:

    1 ['rain', 'eric', 'alex']

    j.请使用for、len、range输出列表的索引

    1 li = ['alex', 'eric', 'rain']
    2 for i in range(len(li)):
    3     print(i)

    执行结果:

    1 0
    2 1
    3 2

    k.请使用enumrate输出列表元素和序号(序号从100开始)

    1 li = ['alex', 'eric', 'rain']
    2 for k,v in enumerate(li,100):
    3     print(k,v)

    执行结果:

    1 100 alex
    2 101 eric
    3 102 rain

    l.请使用for循环输出列表的所有元素

    1 li = ['alex', 'eric', 'rain']
    2 for ltem in li:
    3     print(ltem)

    执行结果:

    1 alex
    2 eric
    3 rain

    4、写代码,有如下列表,请按照功能要求实现每一个功能

    li=["hello",'seven',["mon",["h","kelly"],'all'],123,446]

    a.请根据索引输出“Kelly”

    1 li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446]
    2 print(li[2][1][1])

    执行结果:

    1 kelly

    b.请使用索引找到'all'元素并将其修改为“ALL”,如:li[0][1][9]...

    1 li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446]
    2 index = li[2].index("all")
    3 li[2][index] = "ALL"
    4 print(li)

    执行结果:

    1 ['hello', 'seven', ['mon', ['h', 'kelly'], 'ALL'], 123, 446]

    5、写代码,有如下元组,按照要求实现每一个功能

    tu=('alex','eric','rain')

    a.计算元组长度并输出

    1 tu = ('alex', 'eric', 'rain')
    2 n1 = len(tu)
    3 print(n1)

    执行结果:

    1 3

    b.获取元组的第2个元素,并输出

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

    执行结果:

    1 eric

    c.获取元组的第1-­‐2个元素,并输出

    方法一:

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

    执行结果:

    1 ('alex', 'eric')

    方法二:

    1 tu = ('alex', 'eric', 'rain')
    2 n1 = tu[1]
    3 n2 = tu[2]
    4 print(n1 + " " + n2)

    执行结果:

    1 eric rain

    d.请使用for输出元组的元素

    1 tu = ('alex', 'eric', 'rain')
    2 for i in tu:
    3     print(i)

    执行结果:

    1 alex
    2 eric
    3 rain

    e、请删除列表中的元素"eric",并输出修改后的列表

    1 li = ['alex', 'eric', 'rain']
    2 li.remove("eric")
    3 print(li)

    执行结果:

    1 ['alex', 'rain']

    f.请使用for、len、range输出元组的索引

    1 tu = ('alex', 'eric', 'rain')
    2 for i in range(len(tu)):
    3     print(i)

    执行结果:

    1 alex
    2 eric
    3 rain

    g.请使用enumrate输出元祖元素和序号(序号从10开始)

    1 tu = ('alex', 'eric', 'rain')
    2 for k,v in enumerate(tu,10):
    3     print(k,v)

    执行结果:

    1 10 alex
    2 11 eric
    3 12 rain

    6、有如下变量,请实现要求的功能
    tu=("alex",[11,22,{"k1":'v1',"k2":["age","name"],"k3":(11,22,33)},44])

    a.讲述元祖的特性
    答:元组具有列表的全部特性,不同的是,元组的元素不能修改

    b.请问tu变量中的第一个元素“alex”是否可被修改?
    答:不能


    c.请问tu变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素“Seven”

    答:列表 ,可以 

    1 tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11, 22, 33)}, 44])
    2 tu[1][2]["k2"].append("Seven")
    3 print(tu)

    执行结果:

    1 ('alex', [11, 22, {'k3': (11, 22, 33), 'k1': 'v1', 'k2': ['age', 'name', 'Seven']}, 44])

    d.请问tu变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素“Seven”

    答: 元组,不能

    1 tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11, 22, 33)}, 44])
    2 tu[1][2]["k3"].append("Seven")
    3 print(tu)

    执行结果:

    1 Traceback (most recent call last):
    2   File "D:/python/job4.py", line 154, in <module>
    3     tu[1][2]["k3"].append("Seven")
    4 AttributeError: 'tuple' object has no attribute 'append'   #元组不能被修改

    7、字典
    dic={'k1':"v1","k2":"v2","k3":[11,22,33]}

    a.请循环输出所有的key

    1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
    2 for ltem in dic:
    3     print(ltem)

    执行结果:

    1 k1
    2 k2
    3 k3

    b.请循环输出所有的value

    1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
    2 for item in dic.values():
    3     print(item)

    执行结果:

    1 v2
    2 v1
    3 [11, 22, 33]

    c.请循环输出所有的key和value

    1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
    2 for k,v in dic.items():
    3     print(k,v)

    执行结果:

    1 k3 [11, 22, 33]
    2 k2 v2
    3 k1 v1

    d.请在字典中添加一个键值对,"k4":"v4",输出添加后的字典

    1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
    2 dic["k4"] = "v4"
    3 print(dic)

    执行结果:

    1 {'k4': 'v4', 'k3': [11, 22, 33], 'k1': 'v1', 'k2': 'v2'}

    e.请在修改字典中“k1”对应的值为“alex”,输出修改后的字典

    1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
    2 dic["k1"] = "alex"
    3 print(dic)

    执行结果:

    1 {'k2': 'v2', 'k3': [11, 22, 33], 'k1': 'alex'}

    f.请在k3对应的值中追加一个元素44,输出修改后的字典

    1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
    2 dic["k3"].append(44)
    3 print(dic)

    执行结果:

    1 {'k2': 'v2', 'k1': 'v1', 'k3': [11, 22, 33, 44]}

    g.请在k3对应的值的第1个位置插入个元素18,输出修改后的字典

    1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
    2 dic["k3"].insert(0,18)
    3 print(dic)

    执行结果:

    1 {'k2': 'v2', 'k3': [18, 11, 22, 33], 'k1': 'v1'}


    8、转换

    a.将字符串s="alex"转换成列表

    1 s = "alex"
    2 n1 = list(s)
    3 print(n1)

    执行结果:

    1 ['a', 'l', 'e', 'x']

    b.将字符串s="alex"转换成元祖

    1 s = "alex"
    2 n1 = tuple(s)
    3 print(n1)

    执行结果:

    1 ['a', 'l', 'e', 'x']

    b.将列表li=["alex","seven"]转换成元组

    1 li = ["alex","seven"]
    2 n1 = tuple(li)
    3 print(n1)

    执行结果:

    1 ('alex', 'seven')

    c.将元祖tu=('Alex',"seven")转换成列表

    1 tu = ('Alex',"seven")
    2 n1 = list(tu)
    3 print(n1)

    执行结果:

    1 ('alex', 'seven')

    d.将列表li=["alex","seven"]转换成字典且字典的key按照10开始向后递增

    1 li = ["alex","seven"]
    2 n1 = {}
    3 for k,v in enumerate(li,10):
    4     n1[k] = v
    5     print(n1)

    执行结果:

    1 {10: 'alex'}
    2 {10: 'alex', 11: 'seven'}

    9、元素分类

    有如下值集合[11,22,33,44,55,66,77,88,99,90],将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中。
    即:{'k1':大于66的所有值,'k2':小于66的所有值}

    法一:

    1 li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
    2 li.sort()    #排序
    3 z = li.index(66)
    4 l = len(li)
    5 dic = {"k1": li[z + 1:l], "k2": li[0:z]}
    6 print(dic)

    执行结果:

    1 {'k1': [77, 88, 90, 99], 'k2': [11, 22, 33, 44, 55]}

    法二:

     1 li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
     2 li.sort()
     3 lo = []
     4 lp = []
     5 for i in li:
     6     if i < 66:
     7         lo.append(i)
     8     elif i > 66:
     9         lp.append(i)
    10 dic = {"k1": lo, "k2": lp}
    11 print(dic)

    执行结果:

    1 {'k1': [11, 22, 33, 44, 55], 'k2': [77, 88, 90, 99]}

    10、输出商品列表,用户输入序号,显示用户选中的商品
    商品li=["手机","电脑",'鼠标垫','游艇']

    a.允许用户添加商品

    b.用户输入序号显示内容

     1 print("商品列表信息,用户输入序号,显示用户选中的商品")
     2 li = ["手机", "电脑", '鼠标垫', '游艇']
     3 for i, v in enumerate(li, 1):
     4     print(i, v)
     5 x = input("是否添加商品?")
     6 if x == "y" or x == "Y" or x == "yes":
     7     t = input("请添加商品:")
     8     li.append(t)
     9     for i, v in enumerate(li, 1):
    10         print(i, v)
    11 s = input("是否查找商品?")
    12 if s == "y" or s == "Y" or s == "yes":
    13     y = int(input("请输入查找的序号"))
    14     print(li[y -1])    # -1 是取下标,默认是从0开始的,-1就是从1开始

    执行结果:

     1 商品列表信息,用户输入序号,显示用户选中的商品
     2 1 手机
     3 2 电脑
     4 3 鼠标垫
     5 4 游艇
     6 是否添加商品?y
     7 请添加商品:锅
     8 1 手机
     9 2 电脑
    10 3 鼠标垫
    11 4 游艇
    12 513 是否查找商品?y
    14 请输入查找的序号1
    15 手机

    11、用户交互显示类似省市县N级联动的选择

    a.允许用户增加内容

    b.允许用户选择查看某一个级别内容

     1 #!/usr/bin/env python
     2 # -*- coding=utf-8 -*-
     3 # Created on:  2016年11月29日
     4 # @author: 郑建文
     5 # Email: 574601624@qq.com
     6 # Version: 1.0
     7 
     8 
     9 city = {"北京":{"朝阳":["大望路","国贸"],
    10                "昌平":["沙河","昌平"]},
    11         "河北":{"张家口":["沙城","宣化"],
    12                 "石家庄":["某某路","某某街"]}
    13         }
    14 go = True
    15 while go:
    16     cc = []
    17     dq = []
    18     print("33[31;1m一级列表33[1m".center(40,"="))
    19     for i,v in enumerate(city,1):
    20         print(i,v)
    21         cc.append(v)
    22     print("33[35;1m插入数据 i 退出按Q33[1m")
    23     u_c1 = str(input(">>>"))
    24     if u_c1.isdigit():#进二级之前判断
    25         u_c1 = int(u_c1)
    26         if u_c1 >0 and u_c1 <=len(cc):
    27             while go:
    28                 print("33[32;1m二级列表33[1m".center(40, "="))
    29                 for i1,v1 in enumerate(city[cc[u_c1-1]],1):
    30                     print(i1,v1)
    31                     dq.append(v1)
    32                 print("33[35;1m退出按Q 返回 B33[1m")
    33                 u_c2 = input(">>>")
    34                 if u_c2.isdigit():#进三级之前判断
    35                     u_c2 = int(u_c2)
    36                     if u_c2 >0 and u_c2<=len(dq):
    37                         while go:
    38                             print("33[32;1m三级列表33[1m".center(40, "="))
    39                             for s in city[cc[u_c1-1]][dq[u_c2-1]]:
    40                                 print(s)
    41                             print("33[35;1m退出按Q 返回 B33[1m")
    42                             u_c3 = input(">>>")
    43                             if u_c3 == "q" or u_c3 == "Q":
    44                                 go = False
    45                                 break
    46                             if u_c3 == "b" or u_c3 =="B":
    47                                 del dq[:]
    48                                 break
    49                             else:
    50                                 print("33[31;1m输入不正确33[1m")
    51                     else:
    52                         print("33[31;1m输入超出范围!33[1m")
    53                 elif u_c2 == "q" or u_c2 == "Q":
    54                     go = False
    55                     break
    56                 elif u_c2 == "b" or u_c2 == "B":
    57                     del cc[:]
    58                     del dq[:]
    59                     break
    60                 else:
    61                     print("33[31;1m输入格式不对!33[1m")
    62     elif u_c1.isalpha():
    63         if u_c1 == "q" or u_c1 == "Q":
    64             break
    65         elif u_c1 == "i" or u_c1 == "I":
    66             print("33[32;1m添加信息33[1m".center(40,"="))
    67             ct_name = input("省:")
    68             if ct_name == "Q" or ct_name == "q":
    69                 break
    70             else:
    71                 if city.get(ct_name,0) == 0:
    72                     city[ct_name] = {}
    73             dq_name = input("市:")
    74             if dq_name == "Q" or dq_name == "q":
    75                 break
    76             else:
    77                 if city[ct_name].get(dq_name,0) == 0:
    78                     city[ct_name][dq_name]=[]
    79             while True:
    80                 print("33[31;1m循环添加,退出请按Q!33[1m")
    81                 s = input("县:")
    82                 if s == "q" or s == "Q":
    83                     break
    84                 else:
    85                     city[ct_name][dq_name].append(s)
    86         else:
    87             print("33[31;1m输入超出范围!33[1m")
    88     else:
    89         print("33[31;1m输入格式不对!33[1m")

    12、列举布尔值是False的所有值

    1 None ""  () []  {} 0 

    13︎、有两个列表
    l1=[11,22,33]
    l2=[22,33,44]

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

    1 n1 = [11,22,33]
    2 n2 = [22,33,44]
    3 for i in n1:
    4     if i in n2:
    5         print(i)

    执行结果:

    1 22
    2 33

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

    1 l1 = [11, 22, 33]
    2 l2 = [22, 33, 44]
    3 for i in l1:
    4     if i not in l2:
    5         print(i)

    执行结果:

    1 44
    2 11

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

    1 l1 = [11, 22, 33]
    2 l2 = [22, 33, 44]
    3 for i in l2:
    4     if i not in l1:
    5         print(i)

    执行结果:

    1 44

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

    1 l1 = [11, 22, 33]
    2 l2 = [22, 33, 44]
    3 for i in l2:
    4     if i not in l1:
    5         print(i)
    6 for v in l1:
    7     if v not in l2:
    8         print(v)

    执行结果:

    1 44
    2 11

    14、利用For循环和range输出
    a.For循环从大到小输出1-­100

    1 for i in range(100,0,-1):
    2    print(i)

    b.For循环从小到到输出100-­1

    1 for i in range(1,101):
    2    print(i)

    c.While循环从大到小输出1-­100

    1 while True:
    2     a = 100
    3     for i in range(100):
    4         print(a-i)
    5     break

    d.While循环从小到到输出100-­1

    1 while True:
    2     for i in range(100):
    3         print(i+1)
    4     break

    15、购物车
    功能要求:

    要求用户输入总资产,例如:2000
    显示商品列表,让用户根据序号选择商品,加入购物车
    购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。

    goods=[
    {"name":"电脑","price":1999},
    {"name":"鼠标","price":10},
    {"name":"游艇","price":20},
    {"name":"美女","price":998},
    ]

     代码如下:

    方法一:

     1 shop_cart = []
     2 goods = [
     3 {"name":"电脑","price":1999},
     4 {"name":"鼠标","price":10},
     5 {"name":"游艇","price":20},
     6 {"name":"美女","price":988},
     7 ]
     8 while True:
     9     salary = input("请输入用户余额[quit]:")
    10     if salary.isdigit():
    11         salary = int(salary)
    12         break
    13     elif salary == "quit":
    14         exit("不想购买")
    15     else:
    16         print("please the enter number")
    17 while True:
    18     print("shop list".center(50, '*'))
    19     for index,i in enumerate(goods):
    20         print(index,i)
    21     choose_number = input("请输入购买商品编号[quit]:")
    22     if choose_number.isdigit():
    23         choose_number = int(choose_number)
    24         product_list = []
    25         if 0 <= choose_number <= len(goods):
    26             product_list.append(goods[choose_number])
    27             if salary >= product_list[0]["price"]:
    28               shop_cart.append(goods[choose_number])
    29               salary -= product_list[0]['price']
    30               print("当前购买的商品",product_list,"当前用户余额33[1;31m{salary}33[0m".format(salary=salary))
    31             else:
    32                 print("余额不足")
    33         else:
    34             print("无效的商品编号")
    35     elif choose_number.lower() == 'quit':
    36 
    37         print("购买的商品".center(50,"*"))
    38         for y in shop_cart:
    39             print(y)
    40         exit()
    41     else:
    42         print("无效的输入")

    执行结果:

     1 请输入用户余额[quit]:2000
     2 ********************shop list*********************
     3 0 {'name': '电脑', 'price': 1999}
     4 1 {'name': '鼠标', 'price': 10}
     5 2 {'name': '游艇', 'price': 20}
     6 3 {'name': '美女', 'price': 988}
     7 请输入购买商品编号[quit]:1
     8 当前购买的商品 [{'name': '鼠标', 'price': 10}] 当前用户余额1990
     9 ********************shop list*********************
    10 0 {'name': '电脑', 'price': 1999}
    11 1 {'name': '鼠标', 'price': 10}
    12 2 {'name': '游艇', 'price': 20}
    13 3 {'name': '美女', 'price': 988}
    14 请输入购买商品编号[quit]:2
    15 当前购买的商品 [{'name': '游艇', 'price': 20}] 当前用户余额1970
    16 ********************shop list*********************
    17 0 {'name': '电脑', 'price': 1999}
    18 1 {'name': '鼠标', 'price': 10}
    19 2 {'name': '游艇', 'price': 20}
    20 3 {'name': '美女', 'price': 988}
    21 请输入购买商品编号[quit]:3
    22 当前购买的商品 [{'name': '美女', 'price': 988}] 当前用户余额982
    23 ********************shop list*********************
    24 0 {'name': '电脑', 'price': 1999}
    25 1 {'name': '鼠标', 'price': 10}
    26 2 {'name': '游艇', 'price': 20}
    27 3 {'name': '美女', 'price': 988}
    28 请输入购买商品编号[quit]:0
    29 余额不足
    30 ********************shop list*********************
    31 0 {'name': '电脑', 'price': 1999}
    32 1 {'name': '鼠标', 'price': 10}
    33 2 {'name': '游艇', 'price': 20}
    34 3 {'name': '美女', 'price': 988}
    35 请输入购买商品编号[quit]:quit
    36 **********************购买的商品***********************
    37 {'name': '鼠标', 'price': 10}
    38 {'name': '游艇', 'price': 20}
    39 {'name': '美女', 'price': 988}
    40 
    41 Process finished with exit code 0

    方法二:(郑建文版本)

      1 #!/usr/bin/env python
      2 # -*- coding=utf-8 -*-
      3 # Created on:  2016年11月29日
      4 # @author: 郑建文
      5 # Email: 574601624@qq.com
      6 # Version: 1.0
      7 '''
      8 要求用户输入总资产,例如:2000 显示商品列表,让用户根据序号选择商品,
      9 加入购物车 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
     10 
     11 本程序功能:可以添加购买商品,一起结算,可以查看已结算和没结算的,商品重复的是有数量的
     12 '''
     13 goods = [
     14     {"name": "电脑", "price": 1999}, {"name": "鼠标", "price": 10}, {"name": "游艇", "price": 20},
     15     {"name": "美女", "price": 998},
     16 ]
     17 while True:
     18     print("33[31;1m+++++++输入q退出++++++++33[1m")
     19     money = str(input("33[32;1m请输入初始余额:33[1m"))
     20     if money.isdigit():
     21         money = int(money)
     22         go = True
     23         break
     24     else:
     25         if money.lower() == "q":
     26             go = False  # 用于控制下面程序运行
     27             print("再见!")
     28             break
     29         else:
     30             print("输入格式错误")
     31 
     32 buy_car = []  # 购物车
     33 while go:
     34     #print(buy_car)
     35     print("33[35;1m购物商城33[1m".center(50, "="))
     36     print("序号|名称|单价")
     37     for i, v in enumerate(goods, 1):
     38         print(i, v["name"], v["price"])
     39     print("q.退出 o.结算 k.购物车")
     40     buy = str(input(">>>"))
     41     if buy.isdigit():#购物
     42         buy = int(buy)
     43         if buy > 0 and buy < len(goods):#是否存在
     44             for s in buy_car:
     45                 if s["name"] == goods[buy-1]["name"] and s['js'] == 0 :#如果存在
     46                     tem = goods[buy-1]
     47                     tem["js"] = 0 #结算标示
     48                     tem["sl"] += 1 #数量
     49                     print("33[32;1m添加商品 %s 成功!33[1m" % (goods[buy - 1]["name"]))
     50                     buy = 0
     51                     break
     52             if buy:#不存在
     53                 tem = goods[buy - 1]
     54                 tem["js"] = 0  # 结算标示
     55                 tem["sl"] = 1  # 数量
     56                 buy_car.append(tem)
     57                 print("33[32;1m添加商品 %s 成功!33[1m" % (goods[buy - 1]["name"]))
     58 
     59         else:
     60                 print("33[31;1m没有此商品33[1m")
     61     else:
     62         if buy.lower() == "q":  # 退出
     63             break
     64         elif buy.lower() == "o":  # 结算
     65                 all_price = 0
     66                 for i in buy_car:#计算金额
     67                     if i["js"] == 0:
     68                         ret = i['price'] * i['sl']
     69                         all_price += ret
     70                 if all_price <= money and all_price >0:#结算
     71                     for i in buy_car:
     72                         i['js'] = 1
     73                     money -= all_price
     74                     print("结算成功,共消费:%d元,余额为:%d元"%(all_price,money))
     75                 elif all_price == 0:#无购物
     76                     print("33[31;1m请先购物!33[1m")
     77                 else:#金额不足
     78                     print("33[31余额不足,请删除一些商品33[1m")
     79         elif buy.lower() == "k":
     80             u_js = input("1.结算完毕  2.未结算 
    >>>")
     81             if u_js == "1":#已经结算的
     82                 print("33[32;1m已结算购物车33[1m".center(50,"="))
     83                 print("序号|名称|数量|单价")
     84                 for i,v in enumerate(buy_car,1):
     85                     if v["js"] == 1:
     86                         print(i,v['name'],v['sl'],v['price'])
     87             elif u_js == "2":#没有结算的,可以删除
     88                 if len(buy_car) > 0:
     89                     while go:
     90                         for i, v in enumerate(buy_car,1):
     91                             if v["js"] == 0:
     92                                 print(i, v["name"], v["price"],v['sl'])
     93                         u_d = input("33[31;1m选序号删除,退出q 返回 b33[1m 
    >>>")
     94                         if u_d.isdigit():
     95                             u_d = int(u_d)
     96                             if u_d > 0 and u_d <= len(buy_car):
     97                                 u_sl = input("请输入数量:")
     98                                 if u_sl.isdigit():
     99                                     u_sl = int(u_sl)
    100                                     if u_sl < buy_car[u_d]['sl']:
    101                                         buy_car[u_d]['sl'] -= u_sl
    102                                         print("33[32;1m删除商品成功!33[1m")
    103                                     elif u_sl == buy_car[u_d]['sl']:
    104                                         del buy_car[u_d-1]
    105                                         print("33[32;1m删除商品成功!33[1m")
    106                                     else:
    107                                         print("超出范围或者输入不正确")
    108 
    109                         else:
    110                             if u_d.lower() == "q":
    111                                 go = False
    112                                 print("再见")
    113                             if u_d.lower() == "b":
    114                                 break
    115                 else:
    116                     print("33[31;1m无商品或还没有结算,请先购买!33[1m")
    117         else:
    118             print("33[31;1m输入格式不对!33[1m")

    16、分页显示内容

    a.通过for循环创建301条数据,数据类型不限,如:
    alex-­‐1alex1@live.compwd1
    alex-­‐2alex2@live.compwd2
    alex-­‐3alex3@live.compwd3
    ...

    法一:

    1 for i in range(301):
    2     a = "alex- - %salex%s@live.com pwd%s"%(i+1,i+1,i+1)
    3     print(a)

    法二:

    1 u = []
    2 for i in range(301):
    3     a = "alex{0} alex{0}@live.com pwd{0}".format(i+1)
    4     x = [a]
    5     u = u + x
    6     print(u[0:10])

    b.提示用户请输入要查看的页码,当用户输入指定页码,则显示指定数据

    注意:
    -­‐每页显示10条数据
    -­‐用户输入页码是非十进制数字,则提示输入内容格式错误

     1 while True:
     2     u = []
     3     for i in range(301):
     4         a = "alex{0} alex{0}@live.com pwd{0}".format(i+1)
     5         x = [a]
     6         u = u + x
     7     # print(u[0:10])
     8     s = input("请输入您想查看的页码:")
     9     v3 = s.isnumeric()    #检测字符串是否只由数字组成,如果字符串中只包含数字字符,则返回 True,否则返回 False
    10     if v3 == False :
    11         print("输入内容格式错误")
    12 
    13     elif int(s) < 1 or int(s) > 31:
    14         print("输入页码错误")
    15 
    16     else:
    17         s = int(s)
    18         a = (s-1)*10
    19         b = s*10
    20         j = (u[a:b])
    21         for g in j:
    22             print(g)
    23     A =input("是否继续查看(y or Y)")
    24     if A =="y" or A =="Y":
    25         continue
    26     else:
    27         break

    执行结果:

     1 请输入您想查看的页码:1
     2 alex1 alex1@live.com pwd1
     3 alex2 alex2@live.com pwd2
     4 alex3 alex3@live.com pwd3
     5 alex4 alex4@live.com pwd4
     6 alex5 alex5@live.com pwd5
     7 alex6 alex6@live.com pwd6
     8 alex7 alex7@live.com pwd7
     9 alex8 alex8@live.com pwd8
    10 alex9 alex9@live.com pwd9
    11 alex10 alex10@live.com pwd10
    12 是否继续查看(y or Y)y
    13 请输入您想查看的页码:2
    14 alex11 alex11@live.com pwd11
    15 alex12 alex12@live.com pwd12
    16 alex13 alex13@live.com pwd13
    17 alex14 alex14@live.com pwd14
    18 alex15 alex15@live.com pwd15
    19 alex16 alex16@live.com pwd16
    20 alex17 alex17@live.com pwd17
    21 alex18 alex18@live.com pwd18
    22 alex19 alex19@live.com pwd19
    23 alex20 alex20@live.com pwd20
    24 是否继续查看(y or Y)

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

    法一:

    1 count = 0
    2 for i in range(1, 9):
    3     for x in range(1, 9):
    4         if i != x:
    5             print(i, x,)
    6             count += 1
    7 print(count)

    执行结果:

     1 1 2
     2 1 3
     3 1 4
     4 1 5
     5 1 6
     6 1 7
     7 1 8
     8 2 1
     9 2 3
    10 2 4
    11 2 5
    12 2 6
    13 2 7
    14 2 8
    15 3 1
    16 3 2
    17 3 4
    18 3 5
    19 3 6
    20 3 7
    21 3 8
    22 4 1
    23 4 2
    24 4 3
    25 4 5
    26 4 6
    27 4 7
    28 4 8
    29 5 1
    30 5 2
    31 5 3
    32 5 4
    33 5 6
    34 5 7
    35 5 8
    36 6 1
    37 6 2
    38 6 3
    39 6 4
    40 6 5
    41 6 7
    42 6 8
    43 7 1
    44 7 2
    45 7 3
    46 7 4
    47 7 5
    48 7 6
    49 7 8
    50 8 1
    51 8 2
    52 8 3
    53 8 4
    54 8 5
    55 8 6
    56 8 7
    57 56
    View Code

    方法二:

    1 li = []
    2 for i in range(1, 9):
    3     for x in range(1, 9):
    4         a = ("{0}{1}".format(i, x,))    #把两个数组合在一起
    5         if a not in li:                #判断a是不是在li[]里面
    6             if i != x:                  #相等就往上,再循环
    7                 li.append(a)
    8                 print(li)
    9 print(len(li))

    方法三:

     1 count = 0
     2 li = []
     3 for i in range(1, 9):
     4     for x in range(1, 9):
     5         a = ("{0}{1}".format(i, x))
     6         if a not in li:
     7             if i != x:
     8                 li = li + [a]
     9                 count = count + 1
    10                 print(count)
    11                 print(li)

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

    1 count = 0
    2 for i in range(1, 9):
    3     for x in range(1, 9):
    4         for y in range(1, 9):
    5             if i != x and x != y and i != y:
    6                 print(i, x, y)
    7                 count += 1
    8 print(count)

    执行结果:

      1 1 2 3
      2 1 2 4
      3 1 2 5
      4 1 2 6
      5 1 2 7
      6 1 2 8
      7 1 3 2
      8 1 3 4
      9 1 3 5
     10 1 3 6
     11 1 3 7
     12 1 3 8
     13 1 4 2
     14 1 4 3
     15 1 4 5
     16 1 4 6
     17 1 4 7
     18 1 4 8
     19 1 5 2
     20 1 5 3
     21 1 5 4
     22 1 5 6
     23 1 5 7
     24 1 5 8
     25 1 6 2
     26 1 6 3
     27 1 6 4
     28 1 6 5
     29 1 6 7
     30 1 6 8
     31 1 7 2
     32 1 7 3
     33 1 7 4
     34 1 7 5
     35 1 7 6
     36 1 7 8
     37 1 8 2
     38 1 8 3
     39 1 8 4
     40 1 8 5
     41 1 8 6
     42 1 8 7
     43 2 1 3
     44 2 1 4
     45 2 1 5
     46 2 1 6
     47 2 1 7
     48 2 1 8
     49 2 3 1
     50 2 3 4
     51 2 3 5
     52 2 3 6
     53 2 3 7
     54 2 3 8
     55 2 4 1
     56 2 4 3
     57 2 4 5
     58 2 4 6
     59 2 4 7
     60 2 4 8
     61 2 5 1
     62 2 5 3
     63 2 5 4
     64 2 5 6
     65 2 5 7
     66 2 5 8
     67 2 6 1
     68 2 6 3
     69 2 6 4
     70 2 6 5
     71 2 6 7
     72 2 6 8
     73 2 7 1
     74 2 7 3
     75 2 7 4
     76 2 7 5
     77 2 7 6
     78 2 7 8
     79 2 8 1
     80 2 8 3
     81 2 8 4
     82 2 8 5
     83 2 8 6
     84 2 8 7
     85 3 1 2
     86 3 1 4
     87 3 1 5
     88 3 1 6
     89 3 1 7
     90 3 1 8
     91 3 2 1
     92 3 2 4
     93 3 2 5
     94 3 2 6
     95 3 2 7
     96 3 2 8
     97 3 4 1
     98 3 4 2
     99 3 4 5
    100 3 4 6
    101 3 4 7
    102 3 4 8
    103 3 5 1
    104 3 5 2
    105 3 5 4
    106 3 5 6
    107 3 5 7
    108 3 5 8
    109 3 6 1
    110 3 6 2
    111 3 6 4
    112 3 6 5
    113 3 6 7
    114 3 6 8
    115 3 7 1
    116 3 7 2
    117 3 7 4
    118 3 7 5
    119 3 7 6
    120 3 7 8
    121 3 8 1
    122 3 8 2
    123 3 8 4
    124 3 8 5
    125 3 8 6
    126 3 8 7
    127 4 1 2
    128 4 1 3
    129 4 1 5
    130 4 1 6
    131 4 1 7
    132 4 1 8
    133 4 2 1
    134 4 2 3
    135 4 2 5
    136 4 2 6
    137 4 2 7
    138 4 2 8
    139 4 3 1
    140 4 3 2
    141 4 3 5
    142 4 3 6
    143 4 3 7
    144 4 3 8
    145 4 5 1
    146 4 5 2
    147 4 5 3
    148 4 5 6
    149 4 5 7
    150 4 5 8
    151 4 6 1
    152 4 6 2
    153 4 6 3
    154 4 6 5
    155 4 6 7
    156 4 6 8
    157 4 7 1
    158 4 7 2
    159 4 7 3
    160 4 7 5
    161 4 7 6
    162 4 7 8
    163 4 8 1
    164 4 8 2
    165 4 8 3
    166 4 8 5
    167 4 8 6
    168 4 8 7
    169 5 1 2
    170 5 1 3
    171 5 1 4
    172 5 1 6
    173 5 1 7
    174 5 1 8
    175 5 2 1
    176 5 2 3
    177 5 2 4
    178 5 2 6
    179 5 2 7
    180 5 2 8
    181 5 3 1
    182 5 3 2
    183 5 3 4
    184 5 3 6
    185 5 3 7
    186 5 3 8
    187 5 4 1
    188 5 4 2
    189 5 4 3
    190 5 4 6
    191 5 4 7
    192 5 4 8
    193 5 6 1
    194 5 6 2
    195 5 6 3
    196 5 6 4
    197 5 6 7
    198 5 6 8
    199 5 7 1
    200 5 7 2
    201 5 7 3
    202 5 7 4
    203 5 7 6
    204 5 7 8
    205 5 8 1
    206 5 8 2
    207 5 8 3
    208 5 8 4
    209 5 8 6
    210 5 8 7
    211 6 1 2
    212 6 1 3
    213 6 1 4
    214 6 1 5
    215 6 1 7
    216 6 1 8
    217 6 2 1
    218 6 2 3
    219 6 2 4
    220 6 2 5
    221 6 2 7
    222 6 2 8
    223 6 3 1
    224 6 3 2
    225 6 3 4
    226 6 3 5
    227 6 3 7
    228 6 3 8
    229 6 4 1
    230 6 4 2
    231 6 4 3
    232 6 4 5
    233 6 4 7
    234 6 4 8
    235 6 5 1
    236 6 5 2
    237 6 5 3
    238 6 5 4
    239 6 5 7
    240 6 5 8
    241 6 7 1
    242 6 7 2
    243 6 7 3
    244 6 7 4
    245 6 7 5
    246 6 7 8
    247 6 8 1
    248 6 8 2
    249 6 8 3
    250 6 8 4
    251 6 8 5
    252 6 8 7
    253 7 1 2
    254 7 1 3
    255 7 1 4
    256 7 1 5
    257 7 1 6
    258 7 1 8
    259 7 2 1
    260 7 2 3
    261 7 2 4
    262 7 2 5
    263 7 2 6
    264 7 2 8
    265 7 3 1
    266 7 3 2
    267 7 3 4
    268 7 3 5
    269 7 3 6
    270 7 3 8
    271 7 4 1
    272 7 4 2
    273 7 4 3
    274 7 4 5
    275 7 4 6
    276 7 4 8
    277 7 5 1
    278 7 5 2
    279 7 5 3
    280 7 5 4
    281 7 5 6
    282 7 5 8
    283 7 6 1
    284 7 6 2
    285 7 6 3
    286 7 6 4
    287 7 6 5
    288 7 6 8
    289 7 8 1
    290 7 8 2
    291 7 8 3
    292 7 8 4
    293 7 8 5
    294 7 8 6
    295 8 1 2
    296 8 1 3
    297 8 1 4
    298 8 1 5
    299 8 1 6
    300 8 1 7
    301 8 2 1
    302 8 2 3
    303 8 2 4
    304 8 2 5
    305 8 2 6
    306 8 2 7
    307 8 3 1
    308 8 3 2
    309 8 3 4
    310 8 3 5
    311 8 3 6
    312 8 3 7
    313 8 4 1
    314 8 4 2
    315 8 4 3
    316 8 4 5
    317 8 4 6
    318 8 4 7
    319 8 5 1
    320 8 5 2
    321 8 5 3
    322 8 5 4
    323 8 5 6
    324 8 5 7
    325 8 6 1
    326 8 6 2
    327 8 6 3
    328 8 6 4
    329 8 6 5
    330 8 6 7
    331 8 7 1
    332 8 7 2
    333 8 7 3
    334 8 7 4
    335 8 7 5
    336 8 7 6
    337 336
    View Code

    18、利用for循环和range输出9*9乘法表

    方法一:

    1 for x in range(1,10):
    2      for y in range(1,x+1):
    3          print("{0} * {1} = {2}".format(x,y,x*y),end = " ")     #end = " " 作用就是:不换行
    4      print('
    ',end = " ")

    方法二:

    1 for i in range(1,10):
    2     for j in range(1,i+1):
    3         print("%d*%d=%2d" % (i,j,i*j),end=" ")  #%d是数值整型对应的格式通配符
    4     print(" ")

    执行结果:

    1 1*1= 1  
    2 2*1= 2 2*2= 4  
    3 3*1= 3 3*2= 6 3*3= 9  
    4 4*1= 4 4*2= 8 4*3=12 4*4=16  
    5 5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25  
    6 6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36  
    7 7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49  
    8 8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64  
    9 9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 

    19、有一下列表,
    nums=[2,7,11,15,1,8,7]
    请找到列表中任意两个元素相加能够等于9的元素集合,如:[(0,1),(4,5)]

     1 nums = [2, 7, 11, 15, 1, 8, 7]
     2 li = []
     3 n1 = []
     4 for i in nums:
     5     for x in nums:
     6         y = i + x
     7         if y == 9:
     8             v = [i, x]
     9             x =(i,x)
    10             if v not in li:
    11                 v.reverse()
    12                 if v not in li:
    13                     n1.append(x)
    14                     li.append(v)
    15 print(n1)

    结果:

    1 [(2, 7), (1, 8)]

    20、用Python开发程序自动计算方案:

    公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买100只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱?

    方法一:

    1 for x in range(1, 100):
    2     for y in range(1, 100):
    3         for z in range(1, 100):
    4             if x + y + z == 100 and 5 * x + 3 * y + z / 3 == 100:  # 小鸡  1/3
    5                 print(x, y, z)

    执行结果:

    1 4 18 78
    2 8 11 81
    3 12 4 84

    方法二:

     1 for g in range(1, 100):
     2     g1 = g * 5
     3     # print(g1)
     4     for m in range(1, 100):
     5         m1 = m * 3
     6         # print(m1)
     7         for x in range(1, 100):
     8             x1 = x * 1/3
     9             # print(x1)
    10             if g1 + m1 + x1 == 100:
    11                 if g + m + x ==100:
    12                       print(" 100 文钱买 100 只鸡,其中公鸡{0}只,母鸡{1}只,小鸡{2}只".format(g,m,x))

    执行结果:

    1  100 文钱买 100 只鸡,其中公鸡4只,母鸡18只,小鸡78只
    2  100 文钱买 100 只鸡,其中公鸡8只,母鸡11只,小鸡81只
    3  100 文钱买 100 只鸡,其中公鸡12只,母鸡4只,小鸡84只
  • 相关阅读:
    IIS和ASP.NET2.0
    VS.NET里关于不能够使用向导的问题
    CodeFile
    判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
    托管和非托管资源
    ASP.NET 2.0页面框架的几处变化
    导出QQWry.Dat中IP地址到文件[C#]
    面向对象在数据库应用程序中的应用(dotNet)
    如何取得IP/用户名等信息
    验证Email是否真正存在(上)
  • 原文地址:https://www.cnblogs.com/nulige/p/6102645.html
Copyright © 2011-2022 走看看