python - 有什么建议可以改进我的代码(没有装饰器)?
问题描述
该代码是关于用户试图猜测 1 到 10 之间的数字
from random import randint
answer = None
random_number = randint(1, 10)
以下块强制用户输入一个整数并返回其值
def ask_int_number():
try:
num_guess = int(input("Pick a number from 1 to 10: "))
except ValueError as err:
num_guess = None
print("You must enter an integer!")
print(err)
return num_guess
检查数字是否满足游戏条件
1- 介于 1 和 10 之间的数字
2- 如果较小则太低,如果较大则太高,如果相等则正确
def check_number(guess):
if num_guess in range(1, 11):
if num_guess < random_number:
print("Too low!")
return False
elif num_guess > random_number:
print("Too high!")
return False
else:
print("Correct!")
return True
elif type(num_guess) is int:
print("Number must be between 1 and 10")
return False
检查用户是否希望继续播放
def check_answer():
answer = input("Play again? Y/N\n")
answer = answer[0].lower()
if answer not in ("y", "n"):
print("Please answer by 'Y' or 'N'")
return False
return answer
运行游戏的功能
def run_game():
while answer != "n":
num_guess = ask_int_number()
if not check_number(num_guess):
continue
answer = check_answer()
if answer == "y":
random_number = randint(1, 10)
run_game()
解决方案
有很多更干净的方法可以做到这一点,但这里有一个快速的方法:
import random
num = []
def ran_gen():
global num
for x in range(1):
num = random.randrange(0, 10)
number_guess()
def number_guess():
print('''
Guess a number between 1-10
''')
while True:
try:
guess = int(input(':> '))
if guess == num:
print('You guessed correct!')
exit()
if guess != num:
print('That\'s not the number, guess again')
except ValueError:
print('That is not a number')
ran_gen()
推荐阅读
- java - 在 Java 中使用 apache 数学计算斜率的简单回归
- linux - 基于文件路径循环遍历一组文件linux
- python - 如何从 api 密钥获取 twitter 应用程序名称
- eclipse - Jetbrains MPS 优于 Xtext 的优势
- javascript - 在 React 项目中添加 js 脚本
- c++ - 如何使用新的 C++ 创建动态数组?
- codenameone - 文本和图标的垂直对齐
- python-3.x - 我已经安装了 Aiosqlite,但它不会导入
- vue.js - Nginx 与 vuejs 保留路由
- javascript - 单击锚链接时关闭移动菜单