# Author: 刘佳赐-Isabelle October 28,2018

"""
1. 文件a1.txt内容 序号 部门 人数 平均年龄 备注
1 python 30 26 单身狗
2 Linux 26 30 没对象
3 运营部 20 24 女生多
.......
通过代码,将其构建成这种数据类型:
[{'序号':'1','部门':Python,'人数':30,'平均年龄':26,'备注':'单身狗'},......]
"""
# with open("a1.txt", "w", encoding="utf-8") as f1:
# message = """
# 序号 部门 人数 平均年龄 备注
# 1 python 30 26 单身狗
# 2 Linux 26 30 没对象
# 3 运营部 20 24 女生多
# """
# f1.write(message)
#
# with open("a1.txt", "r", encoding="utf-8") as f2:
# lis = []
# line_num = 0
# for line in f2:
# if len(line.strip()) > 0:
# lis.append(line.strip().split())
# line_num += 1
#
# result = []
# for i in range(1, line_num):
# dic = {}
# for j in lis[0]:
# dic[j] = lis[i][lis[0].index(j)]
# result.append(dic)
# print(result) """
2. 传入函数的字符串中,[数字]、[字母]、[空格] 以及 [其他]的个数,并返回结果。
"""
# def func2(a=str):
# num = 0
# alpha = 0
# nul = 0
# other = 0
# for i in a:
# if i.isdigit():
# num += 1
# elif i.isalpha():
# alpha += 1
# elif i == " ":
# nul += 1
# else:
# other += 1
# return num, alpha, nul, other
#
#
# message = input("请输入信息:")
# print(func2(message)) """
3. 写函数,接收两个数字参数,返回比较大的那个数字。
"""
# def func3(a, b): return a if a > b else b
# print(func3(2, 3)) """
4. 写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
PS:字典中的value只能是字符串或列表
"""
# def func4(dic):
# for keys in dic:
# if len(dic[keys]) > 2:
# dic[keys] = dic[keys][:2]
# return dic
#
#
# dic_check = {"k1": "v1v1", "k2": [11, 22, 33, 44]}
# print(func4(dic_check)) """
5. 写函数,此函数只接收一个参数且此参数必须是列表数据类型,此函数完成的功能是返回给调用者一个字典,
此字典的键值对为此列表的索引及对应的元素。
例如传入的列表为:[11,22,33] 返回的字典为 {0:11,1:22,2:33}。
"""
# enumerate函数
# def func5(a=[]):
# result = {}
# for index, name in enumerate(a, 0):
# result[index] = name
# return result
#
#
# lis = [11, 22, 33]
# print(func5(lis)) # for 循环法
# def func5(args=[]):
# result = {}
# for i in args:
# result.setdefault(args.index(i), i)
# return result
#
#
# test = [11, 22, 33]
# print(func5(test)) """
6. 写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。用户通过输入这四个内容,
然后将这四个内容传入到函数中,此函数接收到这四个内容,将内容追加到一个student_msg文件中。 """
# def func6(name, gender, age, degree):
# with open("student_msg", "a", encoding="utf-8") as f1:
# f1.write("{} {} {} {}\n".format(name, gender, age, degree))
#
#
# name = input("请输入姓名:")
# gender = input("请输入性别:")
# age = input("请输入年龄:")
# degree = input("请输入学历:")
# func6(name, gender, age, degree) """
7. 对第6题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。
"""
# def func6(name, age, degree, gender="男"):
# with open("student_msg", "a", encoding="utf-8") as f1:
# f1.write("{} {} {} {}\n".format(name, age, gender, degree))
#
# while 1:
# name = input("请输入姓名(Q/q退出):")
# if name.upper() == "Q": break
# else:
# age = input("请输入年龄:")
# degree = input("请输入学历:")
#
# if name.startswith("1"):
# gender = input("请输入性别:")
# func6(name.strip("1").strip(" "), age, degree, gender)
# else:
# func6(name, age, degree) """
8. 写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作。
读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
a=10
b=20
def test5(a,b):
print(a,b)
c = test5(b,a)
print(c)
"""
# def func8(file_path, gender):
# with open(file_path, mode="r+", encoding="utf-8") as file:
# f1 = file.read()
# f1.replace(gender, "Male")
#
# func8("student_msg", "男") # 打印出来的值a,b,c分别是:20,10,None
# 因为test5按顺序打印输入的b(20), a(10), 且函数test5没有任何返回值
# a = 10
# b = 20
# def test5(a, b):
# print(a, b)
# c = test5(b, a)
# print(c) """
9. 读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
a=10
b=20
def test5(a,b):
a=3
b=5
print(a,b)
c = test5(b,a)
print(c)
""" # 打印出来的值a,b,c分别是:3,5,None
# 因为test5给a/b分别赋值为3/5,且函数没有任何返回值
# a = 10
# b = 20
#
#
# def test5(a, b):
# a = 3
# b = 5
# print(a, b)
#
#
# c = test5(b, a)
# print(c) """
10. 写函数,传入函数中多个实参(均为可迭代对象如字符串,列表,元祖,集合等),将每个实参的每个元素依次添加到函数的动态参数args里面.
例如 传入函数两个参数[1,2,3] (22,33)最终args为(1,2,3,22,33)
"""
#
#
# def func10(*args):
# return args
#
#
# l1 = [1, 2, 3]
# t1 = (22, 33)
#
# print(func10(*l1, *t1)) """
11. 写函数,传入函数中多个实参(实参均为字典),将每个实参的键值对依次添加到函数的动态参数kwargs里面.
例如 传入函数两个参数{‘name’:’alex’} {‘age’:1000}最终kwargs为{‘name’:’alex’ ,‘age’:1000}
""" #
# def func11(**kwargs):
# return kwargs
#
#
# dic1 = {"name": "alex"}
# dic2 = {"age": 1000}
# print(func11(**dic1, **dic2)) """
12. 下面代码成立么?如果不成立为什么报错?怎么解决?
题目一:
a = 2
def wrapper():
print(a)
wrapper() 题目二:
a = 2
def wrapper():
a += 1
print(a)
wrapper()
题目三:
def wrapper():
a = 1
def inner():
print(a)
inner()
wrapper()
题目四:
def wrapper():
a = 1
def inner():
a += 1
print(a)
inner()
wrapper()
"""
# 题目一:成立 # 题目二:不成立,函数不可以修改全局变量
# a = 2
# def wrapper():
# global a
# a += 1
# print(a)
# wrapper() # 题目三:成立 # 题目四:不成立
# def wrapper():
# a = 1
# def inner():
# nonlocal a
# a += 1
# print(a)
# inner()
# wrapper() """
13. 写函数,接收两个数字参数,将较小的数字返回. """ # def func13(a, b): return a if a < b else b
#
#
# a = input("please input a:")
# b = input("please input b:")
# result = func13(a, b)
# print(result) """
14. 写函数,接收一个参数(此参数类型必须是可迭代对象),将可迭代对象的每个元素以’_’相连接,形成新的字符串,并返回.
例如 传入的可迭代对象为[1,'老男孩','武sir']返回的结果为’1_老男孩_武sir’ """ # def func14(lis):
# for item in lis:
# lis[lis.index(item)] = str(item)
# return "_".join(lis)
#
# li = [1, "老男孩", "武sir"]
# print(func14(li)) """
15. 写函数,传入n个数,返回字典{‘max’:最大值,’min’:最小值}
例如:如:min_max(2,5,7,8,4) 返回:{‘max’:8,’min’:2}(此题用到max(),min()内置函数)
"""
#
# def func15(*args):
# result = {}
# result["max"] = max(args)
# result["min"] = min(args)
# return result
#
# res = func15(2, 5, 7, 8, 4)
# print(res)
# """
16. 写函数,传入一个参数n,返回n的阶乘
例如:cal(7) 计算7*6*5*4*3*2*1
"""
# def func16(a=int):
# result = a
# while 1:
# if a > 1:
# a -= 1
# result = result * a
# else:
# break
# return result
#
# print(func16(6))
# """
17. 写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组
例如:[(‘红心’,2),(‘草花’,2), …(‘黑桃’,‘A’)]
"""
# def func17(l1, l2):
# result = []
# for suit in l1:
# for num in l2:
# result.append((suit, num))
# return result
#
#
# lis1 = ["红心", "草花", "方片", "黑桃"]
# lis2 = []
# for i in range(2, 14, 1):
# lis2.append(i)
# lis2.append("A")
# print(func17(lis1, lis2)) """
18. 有如下函数:
def wrapper():
def inner():
print(666)
wrapper() 你可以任意添加代码,用两种或以上的方法,执行inner函数.
"""
# 方法1
# def wrapper():
# def inner():
# print(666)
# inner()
#
# wrapper() # 方法2
#
# def wrapper():
# def inner():
# print(666)
# return inner()
# wrapper() """
购物车进阶
1,启动程序,用户可选择四个选项:登录,注册,购物,退出。
2,用户注册,用户名不能重复,注册成功之后,用户名密码记录到文件中。
3,用户登录,用户名密码从文件中读取,进行三次验证,验证不成功则退出整个程序。
4,用户登录成功之后才能选择购物功能进行购物,购物功能(就是将购物车封装到购物的函数中)。
5,退出则是退出整个程序。
""" #
# def register():
# username = input("Please set your username:")
# username_check = []
# with open("userbook", "r+", encoding="utf-8") as file:
# for line in file:
# username_check.append(line.strip().split()[0])
# while 1:
# if username not in username_check:
# password = input("Please set your password:")
# file.write("{} {}\n".format(username, password))
# print("Successfully registered! Please login!")
# break
# elif username in username_check:
# print("Username has been taken, please reset your username!!")
# username = input("Please set your username again:")
# return login()
#
#
# def login():
# times = 0
# username = input("Please input your username:")
# password = input("Please input your password:")
# user_info = [username, password]
# check_list = []
# with open("userbook", "r", encoding="utf-8") as file:
# for line in file:
# check_list.append(line.strip().split())
# while 1:
# if user_info in check_list:
# print("Login successfully! You could start shopping!")
# return shopping()
# elif user_info not in check_list and times < 2:
# print("Incorrect user name or password, left %d times!" % (2-times))
# username = input("Please input username again:")
# password = input("Please input password again:")
# user_info = [username, password]
# times += 1
# elif user_info not in check_list and times >= 2:
# print("Failed for three times!! You account has been locked!")
# break
#
#
# def shopping():
# message = """
# 1 电脑 1999
# 2 鼠标 10
# 3 耳机 388
# n 购物车结算
# """
#
# item_dic = {1: "电脑", 2: "鼠标", 3: "耳机"} # 创建商品名称字典
# price_dic = {1: 1999, 2: 10, 3: 388} # 创建商品价格字典
#
# # 依据商品名称字典创建购物车商品名称与商品数量字典
# item_num_dic = {}
# for i in range(len(item_dic.keys())):
# defaul_num = [0] * len(item_dic.keys())
# item_num_dic.setdefault(list(item_dic.values())[i], defaul_num[i])
#
# total_budget = 0.0 # 购物车商品总计金额
# item_name = [] # 购物车商品名称列表
#
# my_purse = input("请输入存入金额:")
# print(message)
# item_num = input("请输入需要购买商品的编号:")
#
# while 1:
# if item_num == "n":
# if total_budget <= float(my_purse):
# print("已购买商品:")
# for i in range(len(item_name)):
# print("{}{} {} {}".format(str(i + 1), ".", item_name[i], str(item_num_dic[item_name[i]])))
# # print(str(i + 1) + ". " + item_name[i] + " " + str(item_num_dic[item_name[i]]))
# print("总计:%f" % total_budget)
# print("余额:%f" % (float(my_purse) - total_budget))
# break
# else:
# del_item = input("已超预算,请删减购物车产品:")
# # 当输入编号有效、超出预算且该商品购物车数量为1时,购物列表删掉该商品、商品数量减1、预算减去相应商品价格
# if item_dic[int(del_item)] in item_name and total_budget > float(my_purse) and \
# item_num_dic[item_dic[int(del_item)]] == 1:
# item_num_dic[item_dic[int(del_item)]] -= 1
# total_budget -= price_dic[int(del_item)]
# item_name.pop(int(del_item) - 1)
# # 当输入编号有效、超出预算且该商品购物车数量大于1时,购物列表不变、对应商品数量减1、预算减去相应商品价格
# elif item_dic[int(del_item)] in item_name and total_budget > float(my_purse) and \
# item_num_dic[item_dic[int(del_item)]] > 1:
# item_num_dic[item_dic[int(del_item)]] -= 1
# total_budget -= price_dic[int(del_item)]
# # 特殊情况:当输入参数无效时,提示重新输入
# elif item_dic[int(del_item)] not in item_name:
# del_item = input("内容有误,请重新输入:")
# elif item_num in str(item_dic.keys()):
# message1 = """---%s已添加到您的购物车,单价为%.2f---""" % (item_dic[int(item_num)], price_dic[int(item_num)])
# print(message1)
# if item_dic[int(item_num)] in item_name:
# item_num_dic[item_dic[int(item_num)]] += 1 # 若已有该产品,则只增加该产品购买数量
# else:
# item_name.append(item_dic[int(item_num)]) # 若没有该产品,则将该产品添加到购买列表
# item_num_dic[item_dic[int(item_num)]] += 1 # 同时增加产品购买数量
# total_budget += price_dic[int(item_num)] # 累计消费额
# item_num = input("请继续输入商品编号:") # 继续购买
# elif item_num.upper() == "Q":
# print("已购买商品:")
# for i in range(len(item_name)):
# print(str(i + 1) + ". " + item_name[i] + " " + str(item_num_dic[item_name[i]]))
# print("总计:%f" % total_budget)
# print("余额:%f" % (float(my_purse) - total_budget))
# break
# else:
# item_num = input("输入有误,请重新选择:")
#
#
# if __name__ == '__main__':
# message = input("Please select your command(R/L):")
# if message.upper() == "R":
# register()
# elif message.upper() == "L":
# login()
# else:
# message = input("Incorrect input, please reselect your command(R/L):")

day3-exercise的更多相关文章

  1. MIT 6.828 JOS学习笔记12 Exercise 1.9

    Lab 1中Exercise 9的解答报告 Exercise 1.9: 判断一下操作系统内核是从哪条指令开始初始化它的堆栈空间的,以及这个堆栈坐落在内存的哪个地方?内核是如何给它的堆栈保留一块内存空间 ...

  2. MIT 6.828 JOS学习笔记13 Exercise 1.10

    Lab 1 Exercise 10 为了能够更好的了解在x86上的C程序调用过程的细节,我们首先找到在obj/kern/kern.asm中test_backtrace子程序的地址, 设置断点,并且探讨 ...

  3. MIT 6.828 JOS学习笔记11 Exercise 1.8

    Exercise 1.8       我们丢弃了一小部分代码---即当我们在printf中指定输出"%o"格式的字符串,即八进制格式的代码.尝试去完成这部分程序. 解答: 在这个练 ...

  4. MIT 6.828 JOS学习笔记8. Exercise 1.4

    Lab 1 Exercise 4 阅读关于C语言的指针部分的知识.最好的参考书自然是"The C Programming Language". 阅读5.1到5.5节.然后下载poi ...

  5. MIT 6.828 JOS学习笔记9. Exercise 1.5

    Lab 1 Exercise 5 再一次追踪一下boot loader的一开始的几句指令,找到第一条满足如下条件的指令处: 当我修改了boot loader的链接地址,这个指令就会出现错误. 找到这样 ...

  6. MIT 6.828 JOS学习笔记5. Exercise 1.3

    Lab 1 Exercise 3 设置一个断点在地址0x7c00处,这是boot sector被加载的位置.然后让程序继续运行直到这个断点.跟踪/boot/boot.S文件的每一条指令,同时使用boo ...

  7. MIT 6.828 JOS学习笔记3. Exercise 1.2

    这篇博文是对Lab 1中的Exercise 2的解答~ Lab 1 Exercise 2: 使用GDB的'si'命令,去追踪ROM BIOS几条指令,并且试图去猜测,它是在做什么.但是不需要把每个细节 ...

  8. Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 2)及总结

    Exercise 1:Linear Regression---实现一个线性回归 关于如何实现一个线性回归,请参考:http://www.cnblogs.com/hapjin/p/6079012.htm ...

  9. stanford coursera 机器学习编程作业 exercise 3(逻辑回归实现多分类问题)

    本作业使用逻辑回归(logistic regression)和神经网络(neural networks)识别手写的阿拉伯数字(0-9) 关于逻辑回归的一个编程练习,可参考:http://www.cnb ...

  10. Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 1)

    Exercise 1:Linear Regression---实现一个线性回归 在本次练习中,需要实现一个单变量的线性回归.假设有一组历史数据<城市人口,开店利润>,现需要预测在哪个城市中 ...

随机推荐

  1. C++ inheritance: public, private. protected ZZ

    公有继承(public).私有继承(private).保护继承(protected)是常用的三种继承方式. 1. 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时, ...

  2. 关于map容器的元素被无参初始化

    使用C++中的map容器定义一个mp,当你执行if语句判断mp[3]是否为1时,那么如果mp[3]以前不存在,此时mp[3]就会被无参初始化,second赋值为0. 以下的程序可以证明这一点.执行了第 ...

  3. 爬虫入门之Scrapy 框架基础功能(九)

    Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非 ...

  4. 使用jQuery操作input的value值

    表单控件是我们的重中之重,因为一旦牵扯到数据交互,离不开form表单的使用,比如用户的注册登录功能等 那么通过上节知识点我们了解到,我们在使用jquery方法操作表单控件的方法: $(selector ...

  5. 浅析tnsping

    首先,先弄清楚tnsping是什么: Oracle Net 工具(命令)tnsping,是一个OSI会话层的工具,测试数据库服务的命令,用来决定是否一个Oracle Net 网络服务(service) ...

  6. SAP技术专家的ABAP调试器培训材料

    首先弄清楚ABAP Classic调试器和新调试器的区别: Classic debugger: (1) Static breakpoint a. BREAK-POINT : non-user spec ...

  7. vs中ctrl+w选中智能感应的整个单词

    vs中ctrl+w选中智能感应的整个单词

  8. c++ auto_ptr超简易版实现

    namespace wang{ template<class T> class shared_ptr{ public: explicit shared_ptr(T *p) : count( ...

  9. 使用react-redux开发的简单步骤

    一.安装相关包 npm install redux react-redux --save 二.根据具体情形创建模块文件 Store.js.Reducer.js.Actions.js Store.js的 ...

  10. CF#538(div2) B. Yet Another Array Partitioning Task 【YY】

    任意门:http://codeforces.com/contest/1114/problem/B B. Yet Another Array Partitioning Task time limit p ...