作业

Python版本:3.6.2  操作系统:Windows  作者:明镜应缺

1.求1-100的所有数的和

sum=0
start=1
while True:  
    sum=sum+start
    if start==100: 
        break
    start+=1
print(sum)

2.输出1-100内的所有奇数

jishu=0
while True:
    if jishu%2==1:#注意:if之后的代码块,一定要缩进。这里的print和下面的break要缩进。
        print(jishu)
    jishu+=1
    if jishu==100:
        break    

3.输出1-100内的所有偶数

oushu=0
while True:
    if oushu%2==0:
        print(oushu)
    oushu+=1
    if oushu==100:
        break

4.求1-2+3-4+5.....99的所有数的和

sum=0
shu=0
while True:
    if shu%2==1:
        sum=sum+shu
    elif shu%2==0:
        sum=sum-shu
    shu+=1
    if shu==100:
        break
print(sum)#这边的print,如果对标while,那么输出的就是循环完之后的和,如果对标if,那么就是每一步的和。由于加完99之后有break,所以输出不了加完99之后的数。

5.用户登录(三次重试机会)

i=0
while i<3:
    user=input("请输入用户名:")
    pwd=input("请输入密码:")
    if user=="wangduo" and "pwd==qiuyu": #是==不是=,且wangduo和qiuyu要加引号表示字符串。
        print("登录成功!")
        break       #这两个地方要缩进
    elseprint("请重新输入")
    i+=1

 6.电脑,鼠标垫,键盘。通过让用户输入商品代码来选择商品。

# 电脑,鼠标垫,键盘。通过让用户输入商品代码来选择商品。
shangpin=["电脑","鼠标垫","键盘"]
for key,item in enumerate(shangpin):
    print(key,item)
inp=input("请选择商品:")
# 这里的inp默认就是字符串,不是数字,后面需要用到数字形式的,所以需要转换成数字
print(shangpin[int(inp)])

 

7.元素分类

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

dic={"k1":[],"k2":[]}
i=[11,22,33,44,55,66,77,88,99,90]
for x in i:
    if x<=66:
        dic["k1"].append(x)
    else:
        dic["k2"].append(x)
print(dic)
View Code

 8.查找

查找列表中元素,移除每个元素的空格,并查找以 a或A开头 并且以 c 结尾的所有元素。
    li = ["alec", " aric", "Alex", "Tony", "rain"]
    tu = ("alec", " aric", "Alex", "Tony", "rain") 
    dic = {'k1': "alex", 'k2': ' aric',  "k3": "Alex", "k4": "Tony"}
li = ["alec", " aric", "Alex", "Tony", "rain"]
tu = ("alec", " aric", "Alex", "Tony", "rain")
dic = {'k1': "alex", 'k2': ' aric', "k3": "Alex", "k4": "Tony"}
for i in li:
b=i.strip()
if (b.startswith("a") or b.startswith("A")) and b.endswith("c"):
print(b)
View Code

9.输出商品列表,用户输入序号,显示用户选中的商品

    商品 li = ["手机", "电脑", '鼠标垫', '游艇']
li = ["手机", "电脑", '鼠标垫', '游艇']
for x,y in enumerate(li,1):
    print(x,y)
z=input("请输入商品序号:")
if int(z)>0 and int(z)<=len(li):
    print(li[int(z)-1])
else:
    print("商品不存在")
View Code

10.功能要求:

  • 要求用户输入总资产,例如: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},
]
car={}
for x,y in enumerate(goods):
    print(x,y["name"],y["price"])
money=input("请输入总资产:")
int_money=int(money)
while True:
    select_goods=input("请选择商品(9结算):")
    if int(select_goods)==9:
        break
    else:
        good = int(select_goods)
        select_num=input("请选择商品数量:")
        num=int(select_num)
        name=goods[good]["name"]
        price=goods[good]["price"]
        car[name]={"数量":num,"价格":price*num}
        print(car)
sum=0
for i in car:
    sum=sum+car[i]["价格"]
if sum<=int_money:
    print("购买成功")
else:
    print("穷逼")











#别人写的
shopping_cart = []
salary = 2000
goods = [
    {"name": "电脑", "price": 3000},
    {"name": "鼠标", "price": 103},
    {"name": "游艇", "price": 200000},
    {"name": "美女", "price": 998},
]
for i in enumerate(goods):
    index = i[0]    #序号
    p_list = i[1]   #商品清单
    p_name_list = p_list.get('name')#商品名称列表
    p_price_list = p_list.get('price')#商品价格列表
    print(index,":",p_name_list,p_price_list)
 
while True:
    choice = input("please enter your choice:").strip()
    if choice.isdigit():#如果选择为正整数
        choice = int(choice)#输入为数字
        if choice < len(goods) and choice >= 0:#选择小于列表长度大于0时
            p_item = goods[choice]#加入购物车
            p_name = p_item.get('name')
            p_monery = p_item.get('price')
            if p_monery <= salary:#如果商品价格小于等于余额
                shopping_cart.append(p_item)#加入购物车
                salary -= p_monery#结算
                print("购买的商品\033[32m:%s\033[0m已加入到购物车".center(40, '-') %p_name)
                for p_item in shopping_cart:
                    print(p_name,p_monery)
                    print("您的余额为\033[31m:%s\033[0m元" % salary)
            else:
                print("您的余额不足,差%s元"%(abs(p_monery - salary)))
        else:
            print("没有此件商品!")
    else:
        print("参数错误")
    if choice == "q" or choice == "quit":
        cost = 0
        print("您购买的商品清单如下:")
        for p in shopping_cart:
            print(p_name, p_monery)
            cost += p_monery
        print("\033[32m消费总金额:",cost,"元\033[0m")
        print("\033[32m您的余额为:",salary,"元\033[0m")
        break
View Code

 

11.省市县三级联动

dic = {
"河北": {
"石家庄": ["鹿泉", "藁城", "元氏"],
"邯郸": ["永年", "涉县", "磁县"],
},
"河南": {
"郑州": ["少林寺", "中牟", "嵩山"],
"开封": ["包拯", "清明上河图"],
},
"山西": {
"太原": ["嘻嘻嘻", "防辐射的", "铵根"],
"离石": ["好", "地方", "广东省"],
},

}

dic = {
    "河北": {
        "石家庄": ["鹿泉", "藁城", "元氏"],
        "邯郸": ["永年", "涉县", "磁县"],
    },
    "河南": {
        "郑州": ["少林寺", "中牟", "嵩山"],
        "开封": ["包拯", "清明上河图"],
    },
    "山西": {
        "太原": ["嘻嘻嘻", "防辐射的", "铵根"],
        "离石": ["", "地方", "广东省"],
    },

}
# 循环输出所有的省
for x in dic:
    print(x)
sheng=input("请输入省份:")
a=dic[sheng]
# 循环输出所有的市
for y in dic[sheng]:
    print(y)
shi=input("请输入市:")
#循环输出所有的县
for z in dic[sheng][shi]:
    print(z)
View Code

 12.谁需要删除?谁需要新建?谁需要更新?

.# 数据库中原有

old_dict = {
    "#1":{ 'hostname':c1, 'cpu_count'2'mem_capicity'80 },
    "#2":{ 'hostname':c1, 'cpu_count'2'mem_capicity'80 }
    "#3":{ 'hostname':c1, 'cpu_count'2'mem_capicity'80 }
}
   
# cmdb 新汇报的数据
new_dict = {
    "#1":{ 'hostname':c1, 'cpu_count'2'mem_capicity'800 },
    "#3":{ 'hostname':c1, 'cpu_count'2'mem_capicity'80 }
    "#4":{ 'hostname':c2, 'cpu_count'2'mem_capicity'80 }
new_dict = {
    "#1": {'hostname': c1, 'cpu_count': 2, 'mem_capicity': 800},
    "#3": {'hostname': c1, 'cpu_count': 2, 'mem_capicity': 80},
    "#4": {'hostname': c2, 'cpu_count': 2, 'mem_capicity': 80}
}
old_keys=old_dict.keys()
new_kews=new_dict.keys()
old_set=set(old_keys)
new_set=set(new_keys)
# 需要删除的
shanchu=old_set.difference(new_set)
xinjian=new_set.difference(old_set)
gengxin=old_set.intersection(new_set)
View Code

 13.写函数

  ①计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数

 

  ②写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。

 

  ③写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。

 

#①计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数
    def jisuan(s):
    int_num=0
    alp_num=0
    space_num=0
    others_num=0
    for i in s:
        if i.isdigit():
            int_num+=1
        elif i.isalpha():
            alp_num+=1
        elif i.isspace():
            space_num = 1
        else:
            others_num += 1
    return("数字数:",int_num,"字母数:",alp_num,"空格数:",space_num,"其他:",others_num)
r=jisuan("asdgfas  45131 sdf ")
print(r)
    #结果('数字数:', 5, '字母数:', 10, '空格数:', 1, '其他:', 0)

#②判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def panduan(s):
    if len(s)>5:
        return True
    else:
        return False
a=panduan("sagadg df")
b=panduan([3,23,214,1])
c=panduan((12,132,12,12,12))
print(a,b,c)
    #结果True False False
#③检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
def has_space(args):
    ret=True
    for c in args:
        if c.isspace():
            ret=False
            break
    return ret
result=has_space("sdgfasgsdf  ")
print(result)
# 有空格的话,输出False
View Code

 14.写函数

  ①检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。  

  ②检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。

  ③写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

  dic = {"k1""v1v1""k2": [11,22,33,44]}

       PS:字典中的value只能是字符串或列表
# ①检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
def check_list(args):
    if isinstance(args,list):
        if len(args)>2:
            ret=args[0:2]
            return ret
        else:
            return args
    else:
        return None
result=check_list([123,45,123,14,325])
print(result)

#② 检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
def check_ji(args):
    ret=[]
    if isinstance(args,list) or isinstance(arge,tuple):
        for i in range(len(args)):
            if i%2==1:
                ret.append(args[i])
        return ret
    else:
        return None
result=check_ji([12,"asd,","asg",31,35,346])
print(result)

#③写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
def check_dic(args):
    if isinstance(args,dict):
        ret={}
        for key,value in args.items():
            if len(value)>2:
                ret[key]=value[0:2]
            else:
                ret[key]=value
        return ret
    else:
        return None
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
result=check_dic(dic)
print(result)
View Code

 

 

 

 

 

posted @ 2018-02-26 21:47  明镜应缺  阅读(130)  评论(1编辑  收藏  举报