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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/chenhyc/article/details/102687936

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)

猜你喜欢

转载自blog.csdn.net/chenhyc/article/details/102687936