一、生成π的值
大多8位数字在π的一亿位以内即可找到,那么如何生成π的一亿位文档呢?
具体代码在这里不做显示,如果想要代码的同学可以关注后私聊我获取。
π.txt(小数点后一亿位,文件大小为95.3MB,别下错了)在我上传的资源中有,大家可以自行下载。
二、查询
这里提供生日(即年月日)和学号(其他数字即可)的查询
import sys
import re
def get_file():
#读文件
f = open(r"pi.txt", "r") #"pi.txt中即为你π值文件所在的位置","r"为“读”的意思
lines = f.read()#将文件中的内容赋给lines
f.close()#关闭文件
return lines#返回lines值
def judge_birthday(number):
#这一个函数是对年月日的判断,包括月份在1~12的范围内、每个月不同的天数、是否为闰年
dir_birthday = {'01': 31, "02": 28, "03": 31, "04": 30,
"05": 31, "06": 30, "07": 31, "08": 31,
"09": 30, "10": 31, "11": 30, "12": 31
}
if len(number) < 8:
number = '19' + number
year = int(number[:4])
mouth = int(number[4:6])
day = int(number[6:])
if (mouth > 12) or (mouth < 1):
return False
else:
day_correct = dir_birthday[number[4:6]]
if (year % 400 == 0) | (year % 4 == 0 and year % 100 != 0):
day_correct += 1
if (day < 1) | (day > day_correct):
return False
return True
def searchbirth_in_PU(number, lines):
#查找生日(年月日)
length = len(re.findall(number, lines))
if length < 1:
print("ヽ(;▽;)ノ对不起っ!!,在当前π文件的位数中未发现您想查询的年月日。\n")
else:
m = lines.index(number)
n = m + 8
print("您想查询的年月日为:" + number + "\n它所在的位数为: " + str(m) + "~" + str(n) + "\n")
def searchlearn_in_PU(number, lines):
#查找学号(或一串数字)
length = len(re.findall(number, lines))
if length < 1:
print("ヽ(;▽;)ノ对不起っ!!,在当前π文件的位数中未发现您想查询的学号。\n")
else:
m = lines.index(number)
n = m + 8 #这里的“8”可以改为你想查找的数字串的长度
print("您想查询的学号为:" + number + "\n它所在的位数为: " + str(m) + "~" + str(n) + "\n")
def outputbirth():
#输出生日(年月日)的位置情况
print("请输入您想查询的年月日(格式:YYYYMMDD):")
number = input()
flag = judge_birthday(number)
if flag:
searchbirth_in_PU(number, lines)
else:
print("请您重新运行并输入规范的年月日(格式:YYYYMMDD)。\n")
def outputlearn():
#输出学号(或一串数字)的位置情况
print("请输入您想查询的学号:")
number = input()
if number:
searchlearn_in_PU(number, lines)
while 1:
lines = get_file() #打开并读取文件
s = input('请问您想查询的是生日/学号:\n') #选择并判断想查询的类型
if (s == '生日') :
outputbirth()
elif (s == '学号') :
outputlearn()