一、生成π的值

大多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()