#!/usr/bin/python3
import random
def is_digit(num):
'''
判断是否是正整数
:return: 判断的数字
'''
while True:
if str.isdigit(num) == True: # 字符串是否只由数字组成
num=int(num)
if num==0:
num=input('请输入大于0的整数:')
else:
return num
else:
num = input("请输入一个整数:")
def count_up(num,count):
'''
猜测次数记录
:return: 猜的数,次数
'''
while True:
count = count + 1 # 次数+1
if str.isdigit(num) == True: # 字符串是否只由数字组成
num = int(num) # 整数输入
return num,count
else:
num = input("请输入一个整数:")
def guess_num_in_range(guess_num,max_num,count):
'''
猜的数字是否在范围内
'''
while True:
guess_num, count = count_up(guess_num, count)
if guess_num in range(0, max_num + 1):
return guess_num,max_num,count
else:
guess_num = input(f"请输入0到{max_num}以内的数字:")
def play_again():
'''
是否继续游戏
'''
while True:
play = input('再试一次(Y/N)?:')
if play.upper() == 'Y':
# 这里需要用return退出,否则再次执行时会重复两次判断后面elif语句
return start_game()
elif play.upper() == 'N':
print('感谢使用,再见!')
break
else:
print('请输入Y或者N!')
def guess_randnum(guess_num,max_num,rand_num,count):
'''
判断猜测数字与随机数是否相等
'''
while True:
guess_num,max_num,count = guess_num_in_range(guess_num,max_num,count)
if rand_num > guess_num: # 小于随机数时
print('你猜的数字小了,再试一次吧!')
guess_num = input("请重新输入:")
elif rand_num < guess_num: # 大于随机数时
print('你猜的数字大了,再试一次吧!')
guess_num = input("请重新输入:")
else: # 等于随机数时
print(f'猜对了,你猜了{count}次!')
print('答案是:', rand_num)
play_again()
break #结束比较循环
def start_game():
max_num = int(is_digit(input('你想猜0到多少的数:'))) #初始范围
guess_num = input(f'从0-{max_num}内猜一个数字:') #输入猜测数字
rand_num = random.randint(0, max_num) #初始随机数
count = 0 # 初始次数
guess_randnum(guess_num,max_num,rand_num,count) #猜测
start_game()
注意函数之间的调用