21天学通python:第5章 实验题 参考答案

1、自定义函数实现对列表中的数值进行排序

#代码一:通过直接对num赋值的列表:
def psort(num):#输入一个数字串"列表"
	x = input("请选择排序方式(升序输入:s,降序输入:r):")
	if x == 's':
		n = len(num) #计算列表的元素个数
		for i in range(n):
			for j in range(n-i -1):
				if num[j] > num[j+1]:
					num[j],num[j+1] = num[j+1],num[j]
		#return num
		print(num)
	if x == 'r':
		n = len(num) #计算列表的元素个数
		for i in range(n):
			for j in range(n-i -1):
				if num[j] < num[j+1]:
					num[j],num[j+1] = num[j+1],num[j]
		#return num
		print(num)

psort([12,13,15,117,115,2,13,15])
#代码二:通过input和append()函数获取需要排序的列表:
def psort(num):#输入一个数字串"列表"
	x = input("请选择排序方式(升序输入:s,降序输入:r):")
	if x == 's':
		n = len(num) #计算列表的元素个数
		for i in range(n):
			for j in range(n-i -1):
				if num[j] > num[j+1]:
					num[j],num[j+1] = num[j+1],num[j]
		#return num
		print(num)
	if x == 'r':
		n = len(num) #计算列表的元素个数
		for i in range(n):
			for j in range(n-i -1):
				if num[j] < num[j+1]:
					num[j],num[j+1] = num[j+1],num[j]
		#return num
		print(num)
while(1):
#psort([12,15,11,222,15,2])
	num = []
	s = input('请输入数字(数字之间用逗号分割):') #input默认获取的是字符串
	for i in s.split(','):  #将字符串s通过split以逗号(输入数字必须有逗号才能用逗号分割,split函数分割时,必须字符串已有的字符才行)为分隔符,将字符串s转换成列表
		num.append(int(i)) #通过append函数和int函数将字符串转换成整数后,添加到新的列表num中,实现"字符串”列表转成成“整数"列表
	psort(num)
#代码三:通过input和eval函数获取需要排序的列表:
def psort(num):#输入一个数字串"列表"
	x = input("请选择排序方式(升序输入:s,降序输入:r):")
	if x == 's':
		n = len(num) #计算列表的元素个数
		for i in range(n):
			for j in range(n-i -1):
				if num[j] > num[j+1]:
					num[j],num[j+1] = num[j+1],num[j]
		#return num
		print(num)
	if x == 'r':
		n = len(num) #计算列表的元素个数
		for i in range(n):
			for j in range(n-i -1):
				if num[j] < num[j+1]:
					num[j],num[j+1] = num[j+1],num[j]
		#return num
		print(num)
while(1):
#psort([12,15,11,222,15,2])
	s = input('请输入数字(数字之间用逗号分割):')
	num = s.split(',')
	print("逗号分割后列表中的元素带引号'',数字外围带分号,属于'字符串',会影响def函数中的整数计算规则,需要将字符串转换成整数:\n",num)
	for i in range(len(num)):
		num[i] = eval(num[i])  #eval()函数去掉数字外围的引号'',将字符串列表转换成整数类型列表
	print(num)
	psort(num)

在这里插入图片描述

2、自定义函数实现计算字符串中空格的个数

def count(ls = ''):
	sum = 0
	for i in ls:
		if i == ' ':
			sum +=1
		else:
			continue
	print(sum)

ls = input("请输入字符串:")
count(ls)

3、请自定义函数获取所有的超链接。

import re
html1 = '''<h3>contact us</h3>
<p>contact: manager wang</p>
<p>telephone:12345666</p>
<div id="nav">
<ul>
<li><a class="nav-first" href="/">homepage</a></li>
<li><a href="/lista.php">111</a></li> 
<li><a href="/lista.php">222</a></li>
<li><a href="/order/setorder.php">333</a></li>
<li><a href="/what/cool/ista.php">444</a></li>
</ul>
</div>'''

def get_url(html):
    urls = re.findall('href=.*?>', html)  # 正则出a链接 href
    urlList = []  # 定义urlList
    for url in urls:
        url = url.replace("href=\"", '')  # 替换href="
        urlList.append(url[:-2])  # 获取的0到-2长度的字符串
    print(urlList)

get_url(html1)

4、自定义函数实现对用户的登录验证,假设所有用户信息存在列表中,形式如下:
user = [
{‘name’:‘xuab’,‘password’:‘123’,‘usertype’:1},
{‘name’:‘hyc’,‘password’:‘1314’,‘usertype’:2},
{‘name’:‘yq’,‘password’:‘520’,‘usertype’:3},
{‘name’:‘lcz’,‘password’:‘1314520’,‘usertype’:4},
{‘name’:‘yqq’,‘password’:‘520’,‘usertype’:5}
]
验证成功返回用户类型,否则返回0

# -*- coding:utf-8 -*-
user = [
{'name':'hyc','password':'123','usertype':1},
{'name':'ww','password':'1314','usertype':2},
{'name':'qq','password':'520','usertype':3},
{'name':'tx','password':'1314520','usertype':4},
{'name':'ali','password':'520','usertype':5}
]

user_name_list = list(map(lambda name: name['name'],user))
print(user_name_list)

def logcheck():
	name_input = input("请输入用户名:")
	if name_input in user_name_list:
		user_index = user_name_list.index(name_input)
		pw_input = input("请输入密码:")
		if pw_input == user[user_index]['password']:
			print("密码正确,登录成功,欢迎使用python系统")
			print("用户类型:你是第%d个用户" % user[user_index]['usertype'])
		else:
			print('密码错误,错误代码:0')
	else:
		print('用户未注册,请注册或重新输入:')
while(1):
	logcheck()
#多字典元素组成的列表类型
user = [
{'name':'i','password':'i1314','usertype':3},
{'name':'hyc','password':'1314520','usertype':6},
{'name':'love','password':'hyc','usertype':9},
]
name_key = lambda k:k['name']
user_list = []
for dict in user:
	print('字典dict是:',dict)  #因为字典内嵌在列表中,因此需要通过for循环,获取到"各个字典"
	print('字典键key是:',name_key(dict))  #获取字典成功后,通过lambda定义的k['a'],获取a的value值
	user_list.append(name_key(dict))
print(user_list)  #将获取到的字典value保存到列表:user_list中,应用场景:用户名称的验证

def logcheck():
	name_input = input("请输入用户名:")
	print(name_input)
	if name_input in user_list:
		dict_index = user_list.index(name_input)     #通过index函数获取“输入用户名”在列表中的序号(位置)
		print("输入用户名在第%d个字典组中" %dict_index)   #获取字典组的次序,主要用于用户名和密码之间的验证
		password_input = input("请输入密码:")
		if password_input == user[dict_index]['password']:   #user[dict_index]['b'],如在第0个字典里,对应的password是:user[0][password]
			print("密码正确,登录成功,欢迎使用python系统")
			print("用户类型:你是第%d个用户" % user[dict_index]['usertype'])
		else:
			print('密码错误,错误代码:0')
	else:
		print("账号不存在,请重新输入,如账号未注册,请点击注册")

while(True):
	logcheck()
			
代码一致性说明:以下三段代码的功能一样,都是获取name的值,并保存到新列表中
user_list = []
for i in range(len(user)):
	print('字典键key是:',user[i]['name'])  #通过user[序列]['name']方式,依次获取字典的value值
	user_list.append(user[i]['name'])    #保存到列表:user_list
print(user_list)  #将获取到的每一个字典value保存到列表:user_list中,应用场景:用户名称的验证

===============================================================
name_key = lambda k:k['name']
user_list = []
for dict in user:
	print('字典dict是:',dict)  #因为字典内嵌在列表中,因此需要通过for循环,获取到"各个字典"
	print('字典键key是:',name_key(dict))  #获取字典成功后,通过lambda定义的k['a'],获取a的value值
	user_list.append(name_key(dict))
print(user_list)  #将获取到的字典value保存到列表:user_list中,应用场景:用户名称的验证
=========================================================
user_name_list = list(map(lambda name: name['name'],user))
print(user_name_list)
1、 一个三维向量类,并定义相应的特殊方法实现两个该类对象之间的加、减运算(要求支持运算符+、-),实现该类对象与标量的乘、除运算(要求支持运算符*、/),以及向量长度的计算(要求使用属性实现)。 2、 编程实现如下功能: (1)定义一个抽象类Shape,在抽象类 Shape中定义求面积 getArea()和周长 getPerimeter()的抽象方法。 (2)分别定义继承抽象类Shape的3个子类即Triangle、Rectangle、和Circle,在这3个子类中重写 Shape中的方法getArea()和 getPerimeter( )。 (3)创建类Triangle、 Rectangle、 Circle的对象,对3个类中的方法进行调用测试。 3、使用第六(王雷春)介绍的知识设计一个“书籍出租管理系统”,该系统包括以下功能。 (1) 菜单项“1”:显示书籍(包括书籍名称、价格和借出状态)。 (2) 菜单项“2”:增加书籍(包括书籍名称和价格)。 (3) 菜单项“3”:借出书籍(包括借出书籍名称和借出天数)。 (4) 菜单项“4”:归还书籍(包括归还书籍名称和应付的租书费)。 (5) 菜单项“5”:统计书籍(包括借出书籍册数、未借出书籍册数和总册数)。 (6) 菜单项“-1”:退出系统。 体会利用面向对象编程的思想。 4、设计一个“超市进销存管理系统”,要求如下: (1)系统包括7种操作,分别是:1查询所有商品;2添加商品;3修改商品;4.删除商品;5卖出端口;6.汇总;-1.退出系统。 (2)选择操作序号“1”,显示所有商品 (3)选择操作序号“2”,添加新的商品(包括商品名称、数量和进货价格)。 (4)选择操作序号“3”,修改商品 (5)选择操作序号“4”,删除商品 (6)选择操作序号“5”,卖出商品(包括商品名称、数量和售出价格)。 (7)选择操作序号“6”,汇总当天卖出商品,包括每种销售商品名称、数量、进货总价、销售总价等。 (8)选择操作序号“-1”,退出系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

京城徐董

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值