【问题标题】:CS50 Introduction to Programming with Python: Problem with Check50 in PSet4CS50 Python 编程简介:PSet4 中 Check50 的问题
【发布时间】:2022-08-14 16:28:36
【问题描述】:

我正在参加 CS50 Introduction to Programming with Python。我对 PSet4(小教授)有疑问。我在运行时没有任何问题,但是当 check50 运行时它一直给出这个错误:\“小教授接受有效级别在等待程序退出时超时。\”当我手动运行程序时,它接受任何低于 4 的级别值。但 check50 另有说明。这是我的代码:

import random

def main():
    try:
        level = input(\"Level: \")
        first, second = get_level(level)
        game_on(first, second, 0, 2, 0, level)
    except WrongInputError:
        main()

def get_level(x):
    try:
        x = int(x)
        if 0 < x < 4:
            first = generate_integer(x)
            second = generate_integer(x)
            return first, second
        else:
            raise WrongInputError
    except ValueError:
        raise WrongInputError


class WrongInputError(Exception):
    \"\"\"You entered something wrong, try again \"\"\"

def generate_integer(level):
    if level == 1:
        integer = random.randrange(10)
        return integer
    elif level == 2:
        x = str(random.randrange(1, 10))
        y = str(random.randrange(10))
        integer = int(x + y)
        return integer
    elif level == 3:
        x = str(random.randrange(1, 10))
        y = str(random.randrange(10))
        z = str(random.randrange(10))
        integer = int(x + y + z)
        return integer

def game_on(x , y, count, lives, score, level):
    game_set = [x, y]
    try:
        if count < 10:
            calculation = int(input(f\"{x} + {y} = \"))
            count += 1
            if calculation == sum(game_set):
                score +=1
                first, second = get_level(level)
                game_on(first, second, count, 3, score, level)
            elif calculation == sum(game_set):
                print(\"EEE\")
                if lives > 0:
                    lives -= 1
                    count -= 1
                    game_on(x, y, count, lives, score, level)
                elif lives == 0:
                    print(f\"{x} + {y} = {sum(game_set)}\")
                    first, second = get_level(level)
                    game_on(first, second, count, 2, score, level)
        else:
            print(f\"Score: {score}\")
    except ValueError:
        print(\"EEE\")
        if lives > 0:
            lives -= 1
            game_on(x, y, count, lives, score, level)
        elif lives == 0:
            print(f\"{x} + {y} = {sum(game_set)}\")
            first, second = get_level(level)
            game_on(first, second, count, 2, score, level)

if __name__ == \"__main__\":
    main()

main()
  • 只是好奇,您不是根据最后 3 行运行代码两次吗?

标签: python cs50


【解决方案1】:
import sys
import random

def main():
    num = get_level()

    errors = 1
    score = 0

    for i in range(10):
        x = generate_integer(num)
        for j in range(1):
            y = generate_integer(num)

            answer = x + y
            equation = input(f"{x} + {y} = ")

            if int(equation) == answer:
                score += 1

            while int(equation) != answer:
                errors += 1
                print("EEE")
                equation = input(f"{x} + {y} = ")
                if errors >= 3:
                    print(answer)
                    sys.exit("Score: " + str(score))

    print("Score: " + str(score))

# prompt for level and reprompt if needed
def get_level():
    levelChoice = input("Level: ")

    if levelChoice.isalpha() or int(levelChoice) <= 0 or int(levelChoice) > 3:
        input("Level: ")
    else:
        levelChoice = int(levelChoice)
        for i in [1,2,3]:
            if levelChoice == i:
                return levelChoice

# generate int from level choice
def generate_integer(level):
    try:
        if level == 1:
            return random.randint(0, 9)
        elif level == 2:
            return random.randint(10, 99)
        elif level == 3:
            return random.randint(100, 999)
    except:
        raise ValueError

if __name__ == "__main__":
    main()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-11
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    相关资源
    最近更新 更多