如何用Python在π中寻找自己想找到的生日、学号、一串数字等

一、生成π的值

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

参考文献:

利用Python在PI中寻找生日_baidu_38271024的博客-CSDN博客(1)使用y-cruncher工具得待PI的亿万位的txt文档;cruncher下载(2)代码很简单,首先是得到可操作的文档,然后提示用户输入要查找的生日,默认的格式是year-mouth-day,例如94-01-01,先检查输入的生日格式是否正确,要是正确的话就从文档中进行查找,若查找到就返回其存在的个数,从查找的结果来看,本人的生日出现的次数还是挺多的,但是要是查找的8位的生日,就没有那么幸运...https://blog.csdn.net/baidu_38271024/article/details/79573066?utm_source=blogxgwz6

  • 14
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值