Python就业班——Python基础知识——考试——猜数字

业务要求:

# 提示进入游戏,打印提示信息;设置参数guide_word,记录打印的文字提示信息
# 判断指定的值是否为数字;设置n接收用于进行判定的变量的值,运用isdigit()方法进行判定并返回判定结果
# 判断指定序列中的数值是否相等;设置列表类型的参数用于接收指定序列;取出序列中的值并进行比较,若相等,则退出程序将返回值置为0,并提示重启程序;反之,则返回值为
# 根据参数值,产生一个位于参数值区间内的随机数;设置两个参数用于接收所输入的区间起始和终止值,并将其保存在列表中;利用内置函数filter()过滤以确保输入值为数字;调用自定义函数判断输入值是否相等,并根据返回值,提示用户产生随机数的区间;正确运用random模块,产生区间内的随机数
# 将用户输入的区间起始值和终止值由str类型转换为int类型;运用合理的方法将输入数据类型转变为目标类型,并以列表形式返回
# 判断所输入的数值是否在指定的区间;利用条件语句判断输入数值是否在指定区间,若不在,则提示信息
# 将每次猜测数字和本次猜测次数两项信息写入日志文件;设置参数接收玩家猜测的次数和本次猜测的具体数字;根据datetime模块获取每次猜测数字输入的时间;使用with语法操作日志文件,将获取到的参数和时间信息以追加方式写入日志文件
# 根据产生的随机数,提示输入数字并进行比对,指导猜测到正确数字;设置参数获取以产生的随机数;提示输入所猜测数字,并转换int类型;调用核查数值属于指定区间函数,并记录猜测数字的次数;调用日志写入函数,传入指定数据;设置循环判断猜测数字与产生的随机数是否相等,若相等返回猜测次数,若不等,提示玩家
 
 
  
#!/usr/bin/env python3
# coding=utf-8
# Version:python3.6.1
# Project:practice
# File:Number_Riddle_猜数字.py
# Data:2020/7/2 21:36
# Author:LGSP_Harold

import random

from datetime import datetime


def number_riddle():
print('进入小游戏')
m = input('数字区间起始值:')
n = input('数字区间终止值:')
if not check_num(m) or not check_num(n):
print('程序结束')
elif m >= n:
print('输入区间大小有误,程序结束')
else:
m = int(m)
n = int(n)
print('所产生的随机数字区间为:["{0}", "{1}"]'.format(m, n))
func(m, n)


def func(m, n):
random_region = random.randint(m, n)
j = 0
while True:
i = input('请输入猜测的数字:')
rest = check_num(i)
if not rest:
continue
else:
i = int(i)
j += 1
rest = check_correctness(i, j, m, n, random_region)
if rest:
break


def check_num(num):
rest = True
if num == '':
print('不能为空')
rest = False
elif not num.isdigit():
print('请输入数字')
rest = False
return rest


def check_correctness(i, j, m, n, random_region):
rest = True
if i < m or i > n:
print('数字不在区间内')
rest = False
elif i < random_region:
print("小了")
result = '{0}次,{1}小了'.format(j, i)
write_log(result)
rest = False
elif i > random_region:
print("大了")
result = '{0}次,{1}大了'.format(j, i)
write_log(result)
rest = False
else:
print('恭喜,用了{}次'.format(j))
result = '恭喜,用了{0}次,数字为{1}'.format(j, i)
write_log(result)
return rest


def write_log(rest):
file_name = 'number_riddle.log'
with open(file_name, 'a+', encoding='utf-8') as f:
f.write('{0},时间:{1}\n'.format(rest, datetime.now()))


if __name__ == '__main__':
number_riddle()
 

 

P.S.1:我不按业务写,能咋地....

P.S.2:为啥业务要求不自动换行呢....

你可能感兴趣的:(Python就业班——Python基础知识——考试——猜数字)