学习Python的艰难之路第35个练习的帮助

10 浏览
0 Comments

学习Python的艰难之路第35个练习的帮助

由于某种原因,当游戏到达黄金房间时,它不能正常工作。当我输入任何数字时,都会出现死亡信息“伙计,学会输入数字吧”。谢谢。

0
0 Comments

问题:为什么代码中的函数没有以def开头?

原因:在给出的代码中,函数gold_room()没有以def开头。可能是在复制代码时出现了错误。

解决方法:将函数gold_room()以def开头,并缩进函数内的代码。

修改后的代码如下:

def gold_room():
    print("This room is full of gold. How much do you take?")
    choice = input('  ')
    next = int(choice)
    if next > 50:
        dead("Man, learn to type a number.")
    else:
        print("You're not greedy. Good job!")
        exit(0)

这样修改后的代码可以正常运行,并且只有少量的代码,更加简洁有效。

0
0 Comments

在这个问题中,原因是在学习Python教程的过程中,作者只介绍了一些基本的知识点,如解析参数、读取用户输入、使用if/loop/while循环、函数、打印以及列表及其特定函数的使用。但是在这个练习中,我们不能使用像捕获错误和使用"isdigit()"这样的魔术函数。

通过在另一个示例中尝试,我发现在字符串上使用"sorted"函数会分离所有的字符,我将在这里使用这个函数。

我考虑了一下,我对数字的定义是"只包含0到9之间字符的字符串"。这足够满足练习的需求。

所以我的方法是删除输入中的所有数字,并检查是否最终为空。如果是这种情况,它就是一个整数,否则如果还有剩余字符,则不是。

def remove_all_occurences(char_list, item):
    value = "%d" % item  # convert to string
    while char_list.count(value) != 0:
        char_list.remove(value)
    return char_list
def is_int(input):
    """Personnal function to test if something is an int"""
    # The sort separates all the characters of the list
    characters_list = sorted(input)
    for num in range(0,10):
        characters_list = remove_all_occurences(characters_list, num)
    return len(characters_list) == 0

在上面的代码中,我定义了一个名为"remove_all_occurences"的函数,它用于删除列表中的所有特定元素。然后,我定义了一个名为"is_int"的函数,它使用"remove_all_occurences"函数从输入中删除所有的数字,并检查最终列表是否为空来确定输入是否是整数。

通过这种方法,我能够解决这个问题,并检查输入是否是整数。

0
0 Comments

gold_room函数中,通过if '0' in next or '1' in next判断输入的值是否包含数字0或1,如果是则转换为整数类型,否则调用dead函数并输出提示信息。这种方式只检查了是否包含0或1,并没有考虑其他数字的情况,因此当输入为2时会出错。

为了解决这个问题,可以使用tryexcept来捕获输入转换为整数类型时的异常。具体做法是,通过raw_input获取用户输入的值,然后尝试将其转换为整数类型,如果转换成功则继续执行后续操作,如果转换失败则调用dead函数并输出提示信息。

另外,还可以通过isdigit()方法来判断输入的值是否只包含数字。具体做法是,先调用isdigit()判断输入的值是否只包含数字,如果是则将其转换为整数类型,否则不进行转换。

可以通过使用tryexcept捕获异常或者使用isdigit()方法来判断输入是否只包含数字,从而解决这个问题。避免使用异常处理可能会导致一些重要和基础的问题,因此不推荐这种做法。

0