🎃个人专栏:
🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客
🐳Java基础:Java基础_IT闫的博客-CSDN博客
🐋c语言:c语言_IT闫的博客-CSDN博客
🐟MySQL:数据结构_IT闫的博客-CSDN博客
🐠数据结构:数据结构_IT闫的博客-CSDN博客
💎C++:C++_IT闫的博客-CSDN博客
🥽C51单片机:C51单片机(STC89C516)_IT闫的博客-CSDN博客
💻基于HTML5的网页设计及应用:基于HTML5的网页设计及应用_IT闫的博客-CSDN博客
🥏python:python_IT闫的博客-CSDN博客
🐠离散数学:离散数学_IT闫的博客-CSDN博客
欢迎收看,希望对大家有用!
目录
[一. 程序题](#一. 程序题)
[二. 填空题(共4题,45分)](#二. 填空题(共4题,45分))
[三. 简答题(共1题,20分)](#三. 简答题(共1题,20分))
一. 程序题
1. (程序题, 15分)
编写函数,接收一个字符串,判断该字符串是否为回文。所谓回文是指从前向后读和从后向前读是一样的。例如:例如: 121是回文, 123454321是回文,abba是回文。(使用切片完成是否是回文的判断条件,切取字符串前一半和后一半比较是否相等)
输入输出示例如下:
2. (程序题, 20分)
判断用户是否登录成功。
(1)系统里面有多个用户, 用户名和对应的密码信息保存在以下元组和列表里面:
userName = ("zhangsan","lisi","wangwu","zhaoliu","xiaolin","xiaohua")
pwList=['123','456','789','246','abc','abc1234']
用户名和密码的顺序是对应的,例如:zhangsan的密码是123,lisi的密码是456
(2)用户登录(判断用户登录是否成功):
①编写一个函数username_test判断用户是否存在?如果用户存在,返回用户索引;如果输入的用户不存在:重新输入用户名,总共有三次输入用户名的机会,三次输入都失败,退出程序。
②编写一个函数password_test判断用户密码是否正确? 根据存在的用户名返回的索引,用pwList[用户索引]取出该用户的密码与输入的密码对比,如果密码正确,登录成功, 退出程序;否则如果密码不正确:重新输入密码,总共有三次输入密码的机会,三次输入密码失败,退出程序。
③编写一个main函数,在其中创建用户名列表和密码列表,调用username_test函数,判断用户名是否存在,存在的话,返回用户名的索引,调用password_test判断用户输入的密码是否正确。
二. 填空题(共4题,45分)
3. (填空题, 9分)
def Sum(a,b=3,c=5):
return sum([a,b,c])
print(Sum(a=3,c=2))
print(Sum(8))
print(Sum(8,2))
4. (填空题, 6分)
编写一个猜数游戏,该游戏会随机产生一个数字,用户可以随意输入一个数进行比较,在比较过程中,会不断提示用户输入的数是大了还是小了,直到用户输入的数等于随机数或者用户猜够5次,程序终止。
请填空完善代码。
import random
import sys
def guess_num(n):
if n>key:
return "大了"
elif n<key:
return "小了"
else:
print("恭喜猜对了")
sys.exit(0)
key=random.randint(1,100)
while True:
if count<=5:
x = int(input("num="))
print(_______________)
count=count+1
else:
print(f"很遗憾您5次都没有猜对,生成的数字是{key}")
break
5. (填空题, 24分)
游戏角色管理。
请填空把代码填写完整。
import sys
print('*' * 40)
print('--------------游戏角色管理--------------')
print('1:查询角色')
print('2:添加角色')
print('3:修改角色')
print('4:删除角色')
print('5:显示所有角色')
print('-1:退出程序')
print('*' * 40)
角色列表.
roleList = [{"姓名": "刘备","单位": "蜀国","职务": "董事长兼总经理","武力": 6}]
(1)
姓名 = input("请输入要查找角色的姓名: ")
for role in roleList:
if 姓名 == role['姓名']:
print("姓名: %s, 单位: %s, 职务: %s, 武力: %3.1f." % (role['姓名'], role['单位'], role['职务'], role['武力']))
break
else:
print('对不起。没有您要查找的角色!')
(2)
姓名 = input('请输入姓名: ')
for role in roleList:
if 姓名 == role['姓名']:
print("您所输入的角色已存在!")
break
else:
单位 = input('请输入单位: ')
职务 = input('请输入职务: ')
武力 = float(input('请输入武力: '))
newRole = {}
newRole["姓名"] = 姓名
newRole["单位"] = 单位
newRole["职务"] = 职务
newRole["武力"] = 武力
roleList.append(newRole)
(3)
姓名 = input('请输入要修改角色的姓名: ')
for role in roleList:
if role['姓名'] == 姓名:
role['单位'] = input('请输入新的单位: ')
role['职务'] = input('请输入新的职务: ')
role['武力'] = float(input('请输入新的武力: '))
print("修改角色成功!")
break
else:
print('您要修改的角色不存在!')
(4)
姓名 = input("请输入要删除角色的姓名: ")
for role in roleList:
if role['姓名'] == 姓名:
roleList.remove(role)
print("删除角色成功!")
break
else:
print("您要删除的角色不存在!")
(5)
for role in roleList:
print("姓名: %s, 单位: %s, 职务: %s, 武力: %3.1f." % (role['姓名'], role['单位'], role['职务'], role['武力']))
(6)
print('退出程序!')
sys.exit(0)
while True:
SN = int(input('===请输入操作序号: ')) # 输入操作序号.
if SN in [1,2,3,4,5,-1]:
if SN == 1: # 查询角色.
queryRole( )
elif SN == 2: # 添加新角色
addRole( )
elif SN == 3: # 修改角色.
modifyRole( )
elif SN == 4: # 删除角色.
deleteRole( )
elif SN == 5: # 显示所有角色.
displayAllRole( )
else: # 退出程序.
exitP( )
else:
print("输入错误!请重新输入'-1,1-5'之间的操作序号!")
6. (填空题, 6分)
下面代码
def deco(func):
def wrapper():
print(f"before {func.name} called.")
func()
print(f"after {func.name} called.")
return wrapper
(1)__
def myfunc1():
print("myfunc1() called.")
(2)___
def myfunc2():
print("myfunc2() called")
myfunc1()
myfunc2()
请完成填空,使代码的执行结果如下:
before myfunc1 called.
myfunc1() called.
after myfunc1 called.
before myfunc2 called.
myfunc2() called
after myfunc2 called.
三. 简答题(共1题,20分)
7. (简答题, 20分)
编写程序产生彩票游戏超级大乐透的投注号码。
1.户输入投注的注数time,显示给用户time组号码。
2.编写函数实现投注号码的生成。
3.请把自己的代码填写到答案框,并截图自己的运行结果。输出结果的第一行
'软工某某班张三的大乐透号码生成器'字符串中的班级和姓名要改写为自己的班级姓名。
备注:
(1)超级大乐透基本投注是指从前区号码(红色球)中任选五个号码,并从后区号码(蓝色球)中任选两个号码的组合进行投注。
其中,前区号码由01---35共三十五个号码组成,后区号码由01---12共十二个号码组成。
(2)显示时,前区号码和后区号码分别按照从小到大的顺序显示
(3) random模块中的random.sample(seq,number)函数可以实现从样本空间seq中随机选择number个数字。
🎯答案:
第一题:
python
def a(string):
l1 = len(string)//2
first = string[:l1]
second = string[:-l1-1:-1]
if first == second:
print(f"{string} 是回文")
else:
print(f"{string} 不是回文")
string1 = input("请输入字符串")
a(string1)
第二题:
python
def username_test():
userName = ("zhangsan", "lisi", "wangwu", "zhaoliu", "xiaolin", "xiaohua")
count = 0
while count<3:
userName1 =input("请输入用户名:")
if userName1 in userName:
return userName.index(userName1)
else:
print("用户不存在")
count += 1
print("用户名输入超过3次")
exit(0)
def password_test(user_index):
pwList = ['123', '456', '789', '246', 'abc', 'abc1234']
count = 0
while count < 3:
password = input("请输入密码:")
if password == pwList[user_index]:
print("登录成功")
exit(0)
else:
print("密码不正确")
count+=1
print("密码输入超过3次")
exit(0)
def main():
index1 = username_test()
password_test(index1)
if __name__ =="__main__":
main()
第三题:
(1) 8
(2) 16
(3) 15
第四题:
(1) count=1;count = 1
(2) guess_num(x);f"{guess_num(x)}"
第五题:
(1)def queryRole():
(2) def addRole():
(3) def modifyRole():
(4) def deleteRole():
(5) def displayAllRole():
(6) def exitP():
第六题:
(1) @deco
(2) @deco
第七题:
python
import random
def Great_lotto(times):
Greatnumber = []
for i in range(0,times):
numbers = []
redbubble_list = list(range(1,36))
number_red = random.sample(redbubble_list,5)
bluebubble_list = list(range(1,13))
number_blue = random.sample(bluebubble_list,2)
number_red.sort()
number_blue.sort()
numbers = number_red+number_blue
for n in range(len(numbers)):
if numbers[n]<10:
numbers[n] = '0'+str(numbers[n])
Greatnumber.append(numbers)
return Greatnumber
print('软工某某班张三的大乐透号码生成器')
time = input('请输入要生成的大乐透号码注数:')
Greatnumber = Great_lotto(int(time))
for i in range(0,int(time)):
print(Greatnumber[i][0],Greatnumber[i][1],Greatnumber[i][2],Greatnumber[i][3],
Greatnumber[i][4],Greatnumber[i][5],Greatnumber[i][6])
for i in range(0,int(time)):
# for j in range(7):
# if j!=6:
# print(f"{Greatnumber[i][j]}",end=" ")
# else:
# print(f"{Greatnumber[i][j]}")