西南科技大学Python实验测试一、二
测试一
第一题
通过键盘输入系列整数值,输入0表示结束,程序筛选并输出其中的素数。
要求:程序中应该包含有对输入非法数据(小数、非数值数据)的限制,当用户输入不合法时做提示。
# -*- coding:utf-8 -*-
# Author : ZhangPeng
# Data : 2019/10/16 14:05
import math
def sushu(a):flag = Trueif a > 2:for i in range(2, int(math.sqrt(a)) + 2):if a % i == 0:flag = Falsebreakelif a == 2:return flagelse:flag = Falsereturn flag
if __name__ == "__main__":li = []while True:a = input("请输入一个正整数,输入0则结束输入:")if a.isnumeric():if eval(a) == 0:breakif sushu(eval(a)):li.append(eval(a))continueelse: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) + 1counts = 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 = 0for i in counts:zl = zl + 1print("一共输入了{}种字符!".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 = 0strd = ""for i in data:count += 1if 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 = Truestrd = ""for peo in data:if isfirst:strd += str(peo[0] + ":" + peo[1])isfirst = Falseelse: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] = numbersaveDate(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()
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
