作业
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 #这两个地方要缩进
else:
print("请重新输入")
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)
8.查找
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)
9.输出商品列表,用户输入序号,显示用户选中的商品
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("商品不存在")
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
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)
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)
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
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)