首页 > 解决方案 > 有什么建议可以改进我的代码(没有装饰器)?

问题描述

该代码是关于用户试图猜测 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()

标签: pythonpython-3.x

解决方案


有很多更干净的方法可以做到这一点,但这里有一个快速的方法:

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

推荐阅读