测试一
第一题
通过键盘输入系列整数值,输入0表示结束,程序筛选并输出其中的素数。
要求:程序中应该包含有对输入非法数据(小数、非数值数据)的限制,当用户输入不合法时做提示。
# -*- coding:utf-8 -*-
# Author : ZhangPeng
# Data : 2019/10/16 14:05
import math
def sushu(a):
flag = True
if a > 2:
for i in range(2, int(math.sqrt(a)) + 2):
if a % i == 0:
flag = False
break
elif a == 2:
return flag
else:
flag = False
return flag
if __name__ == "__main__":
li = []
while True:
a = input("请输入一个正整数,输入0则结束输入:")
if a.isnumeric():
if eval(a) == 0:
break
if sushu(eval(a)):
li.append(eval(a))
continue
else:
print("输入非法,请重新输入!")
li=set(li)
li=list(li)
print("您输入的正整数中,属于素数的有:{}".format(li))
第二题
从键盘输入一串字符,统计输出出现次数最多的前3个字符及次数,并输出总共出现了多少种字符。
# -*- coding:utf-8 -*-
# Author : ZhangPeng
# Data : 2019/10/16 14:36
if __name__ == "__main__":
st = input("请输入一串字符,输入完毕按回车键:")
counts = {}
for i in st:
counts[i] = counts.get(i, 0) + 1
counts = list(counts.items())
counts.sort(key=lambda x: x[1], reverse=True)
print("出现次数最多的前三个字符如下:")
for i in range(3):
print("字符:{0:<10} 出现次数:{1:<5}".format(counts[i][0], counts[i][1]))
zl = 0
for i in counts:
zl = zl + 1
print("一共输入了{}种字符!".format(zl))
测试二
一、题目1
编写程序完善下面3个函数,完成从data1.txt文件中读取数据,用其中的数字组成互不相同的三位数(个位、十位、百位数字可以重复),并将生成的三位数数目和所有生成的三位数用‘,’分隔后追加到data1.txt文件末尾。
def getData(name):name是读取的文件名称,函数返回一个列表,包含解析出来的数字;
def genNumber(data):data是getData返回的数字列表,函数返回一个列表,包含生成的互不相同的三位数按照升序排列;
def saveData(name,data):name是写入的文件名称,data是genNumber产生的三位数列表,函数将data中的三位数数量和所有三位数用‘,’分隔后追加到‘name’指定文件末尾。
输出文件示例:
# -*- coding:utf-8 -*-
# Author : ZhangPeng
# Data : 2019/10/25 19:03
#获取数据,返回升序列表
def getData(name):
dat = []
op = open(name, "r", encoding='utf-8')
txt = op.readline()
dat += str(txt)[0:7].split("$")
txt = op.readline()
dat += str(txt)[0:7].split("*")
dat = sorted(dat)
op.close()
return dat
#三位数字组合,返回列表保存的升序的数字组合
def genNumber(data):
dat = []
for i in range(0, 7):
for j in range(0, 7):
for k in range(0, 7):
num = int(data[i] + data[j] + data[k])
dat.append(num)
return dat
#保存数据
def saveData(name, data):
count = 0
strd = ""
for i in data:
count += 1
if count == 1:
strd += str(i)
else:
strd += "," + str(i)
op = open(name, "a+", encoding='utf-8')
tota = "total:" + str(count) + "\n"
op.write(tota)
op.write(strd + "\n")
op.close()
if __name__ == "__main__":
Data = getData("data1.txt")
Number = genNumber(Data)
saveData("data1.txt", Number)
二、题目2
请编写程序完成如下的功能,要求每个子功能模块都对应一个函数来实现。
程序读取源文件路径下的 contact.txt文件,若没有就创建一个。文件内容存储格式为“姓名:电话号码”,每人仅允许一个电话号码。程序提示用户如下操作信息。(提示:字典的存取可以通过json库的loads和dumps方法进行字符串转换)
‘’’
|-----欢迎进入通讯录-----|
|—1、查询联系人信息—|
|—2、插入新的联系人—|
|—3、删除联系人信息—|
|—4、退出通讯录程序—|
‘’’
接收用户的操作指令并进行对应操作,如果用户输入不合法,则提示“输入指令不合法。”
查询联系人:提示信息“请输入联系人姓名:”,并接收输入姓名,查询当前通讯录里面的联系人信息,若联系人存在,则输出联系人信息“姓名:联系电话”,若不存在,则提示信息“联系人不存在。”;
插入联系人:提示信息“请输入插入联系人姓名:”,并接收输入姓名,若联系人已经存在,则提示“联系人已经存在。”若不存在,则提示“联系人不存在。请输入电话:”,接收输入电话进行插入,并提示信息“联系人插入成功。”
删除联系人:提示信息“请输入删除联系人姓名:”,并接收输入姓名,若联系人不存在,则提示“联系人不存在。”,若联系人存在,则删除通讯录中的联系人信息,并提示“联系人删除成功。”
退出通讯录:提示信息“谢谢你的使用。”,并存储通讯录到contact.txt中,并退出程序。
# -*- coding:utf-8 -*-
# Author : ZhangPeng
# Data : 2019/10/25 20:15
# 电话号码格式(一行存储,末尾没有回车(\n)),数据格式如下:
# 张鹏:17777353550,罡哥:17777353550
# 读取数据,返回号码字典,setnumber["姓名"]=="号码"
def readData(fname="contact.txt", op="a+"):
dat = []
op = open(fname, op, encoding='utf-8')
op.seek(0)
txt = op.readline()
if not txt:
return {}
dat = txt.split(",")
setnumber = {}
for peo in dat:
peo = str(peo).split(":")
setnumber[peo[0]] = peo[1]
op.close()
return setnumber
# 保存数据,接接收数据为列表,列表里面的数据为对象:[("张鹏":"17777353550")]
def saveDate(data, fname="contact.txt", op="w+"):
isfirst = True
strd = ""
for peo in data:
if isfirst:
strd += str(peo[0] + ":" + peo[1])
isfirst = False
else:
strd += "," + str(peo[0] + ":" + peo[1])
op = open(fname, op, encoding='utf-8')
op.write(strd)
op.close()
# 根据姓名查询号码
def selectNumber(pname):
setnumber = readData()
if pname in setnumber.keys():
print(pname + ":" + setnumber[pname])
else:
print("联系人不存在。")
# 插入号码
def inserNumber(name):
setnumber = readData()
if name in setnumber:
print("联系人已存在。")
else:
number = input("联系人不存在。请输入电话:")
setnumber[name] = number
saveDate(list(setnumber.items()))
# 删除号码
def delNumber(name):
setnumber = readData()
if name in setnumber:
del setnumber[name]
saveDate(list(setnumber.items()))
print("号码删除成功!")
else:
print("联系人不存在。")
def menu():
print("|---1、查询联系人信息---|")
print("|---2、插入新的联系人---|")
print("|---3、删除联系人信息---|")
print("|---4、退出通讯录程序---|")
def welcome():
print("|-----欢迎进入通讯录-----|")
def control():
while True:
menu()
num = input("请输入你想要的操作序号,如查询则输入1然后回车:")
jug = ["1", "2", "3", "4"]
if num in jug:
if num == "1":
name = input("请输入联系人姓名:")
selectNumber(name)
elif num == "2":
name = input("请输入插入联系人姓名:")
inserNumber(name)
elif num == "3":
name = input("请输入删除联系人姓名:")
delNumber(name)
else:
exit(0)
else:
print("输入错误,请重新输入:")
if __name__ == "__main__":
welcome()
control()