【Python】学习笔记——一个非常简单的猜数字的程序

先放代码:

import sys
import random
from datetime import datetime

l1 = []


def guide_page(guide_word):
    """
    提示玩家进入游戏
    :param guide_word:
    :return: None
    """
    print("**************{}************".format(guide_word))


def all_num(n):
    """
    判断指定的值是否为数字
    :param n:
    :return: True or False
    """
    if n.isdigit() == True:
        return True
    else:
        print("您所输入的为非数字字符,请重新启动!")
        sys.exit()


def num_legal(ls):
    """
    判断指定序列中的数值是否相等
    记录数字区间起始位置的值是否大于记录数字区间终止位置的值
    :param ls: 数字区间列表
    :return: 满足条件返回1,不满足退出程序
    """
    if ls[0] == ls[1]:
        print("您输入的区间数字相同!!请重新启动程序")
        sys.exit()
    elif ls[0] > ls[1]:
        print("您输入的区间数字大小有误!!请重新启动程序")
        sys.exit()
    else:
        return 1


def set_final_num(num1, num2):
    """
    产生一个位于区间内的随机数
    :param num1: 区间左端点
    :param num2: 区间右端点
    :return: 随机数的值
    """
    global l1
    l = []
    l.append(num1)
    l.append(num2)
    l1 = list(filter(all_num, l))
    l1[0] = int(l1[0])
    l1[1] = int(l1[1])
    if num_legal(l1) == 2:
        print("所产生的随机数字区间为:" + "[" + str(l1[0]) + "," + str(l1[1]) + "]")
        right_number = random.randint(l1[0], l1[1])
        return right_number
    else:
        print("您所输入的为非数字字符,请重新启动!")
        sys.exit()


def check_num_legal(num):
    """
    判断所输入的数值是否在指定的区间
    :param num: 输入数值
    :return: 是返回1 否返回0
    """
    global l1
    # print(l1)
    if num < l1[0] or num > l1[1]:
        return 0
    else:
        return 1


def write_record(times, value):
    """
    写入日志
    :param times: 猜测次数
    :param value: 猜测的数字
    :return: None
    """
    now_time = datetime.now()
    str1 = now_time.strftime("%Y-%m-%d %H:%M:%S")
    with open("record.txt", 'a') as f:
        f.write(str1 + ": 第" + str(times) + "次您猜测的数字为:" + str(value) + "\n")


def main(rand1):
    """
    主函数
    :param rand1: 产生的随机数
    :return: None
    """
    cnt = 1  # 猜测数字的次数
    temp = rand1
    # print(temp)
    while True:
        num = int(input("请继续输入您猜测的数字:"))
        print("*************")
        if check_num_legal(num) == 0:
            print("对不起您输入的数字未在指定区间!!!")
            continue
        if num > temp:
            print("Higher than the answer")
            write_record(cnt, num)
            cnt += 1
        elif num < temp:
            print("Lower than the answer")
            write_record(cnt, num)
            cnt += 1
        else:
            print("恭喜您! 只用了{}次就赢得了游戏".format(cnt))
            write_record(cnt, num)
            sys.exit()

if __name__ == '__main__':
    word = "欢迎进入数字猜猜猜小游戏"
    guide_page(word)
    i = input("数字区间起始值:")
    j = input("数字区间终止值:")
    right_number = set_final_num(i, j)
    main(right_number)

未完待续。。。

猜你喜欢

转载自blog.csdn.net/qq_41279172/article/details/97524050