跳过Python中的if语句

时间:2020-04-10 21:04:54

标签: python python-3.x list

我正在写一个子手游戏,用户可以在预制单词列表之间进行选择来猜测或创建自己的单词列表。稍后程序将自动选择要猜测的单词。 导致问题的部分代码在这里:

question_choice = input("Would you like to guess from premade list or to create your own list of words? Please write premade or own: ")

if question_choice == "premade":
    print(premade_list[quest])

if question_choice == "own":

    length_of_list = int(input("Number of words in your list: "))

    for i in range(0, length_of_list):
        words = input("Your words: ")
        user_list.append(words)

当我选择“拥有”以创建自己的列表时,它进行得很好。但是,当我选择“预制”(预制列表)时,程序将返回与var length_of_list相关的错误,如下所示:

“ NameError:名称'length_of_list'未定义”

我当然可以理解,这是由于程序遍历代码的每一行并得到“ length_of_list”这一事实造成的,在选择预制列表的情况下,将不会对其进行定义。 我的问题是,当我选择“预制列表”选项时,如何才能完全跳过或避免使用if语句? 我试图将其放入while循环和中断,但不适用于我的尝试。

*我不是在寻找现成的答案。请告诉我要遵循的道路。

2 个答案:

答案 0 :(得分:1)

首先,您应该考虑使用elif。这样,如果满足您的第一个条件,则无需检查第二个条件。

https://www.w3schools.com/python/python_conditions.asp

第二,我认为在代码的后面,您引用的是length_of_list,仅当您选择“ own”时才定义。运行时,如果question_choice ==“ premade”返回true,则“ own”中的任何代码都不会运行,因此,是否定义了length_of_list都没有关系。

答案 1 :(得分:1)

您的问题稍后在代码中,您在其中使用length_of_list变量。如果选择“预制”,则永远不会定义length_of_list。

考虑在question_choice ==“预制”分支中定义length_of_list。也许通过使用len(premade_list [quest]),假设premade_list [quest]是一个列表,而不是字符串!

如果premade_list [quest]是字符串,则必须在使用len()之前使用.split()方法。