Python Can';t中断while循环,该循环正在搜索列出的值

Python Can';t中断while循环,该循环正在搜索列出的值,python,while-loop,Python,While Loop,所以我很确定我做得完全错误,但我不知道怎么做。我计划使用数组,但不知道如何使用。我对Python不太熟悉(在学校学习) 因此,如果我能帮上忙,我将不胜感激 所以我正在尝试一些设计和编程的实践,我想用下面的图表来做一个神奇宝贝类型的比较: 因此,我的想法是输入类型,它将输出其优点和缺点。但就我的一生而言,我无法通过选择类型的初始阶段 以下是我的前几行: Elements = "Normal","Fire","Water","Grass","Electric","Bug","Flying","Gr

所以我很确定我做得完全错误,但我不知道怎么做。我计划使用数组,但不知道如何使用。我对Python不太熟悉(在学校学习) 因此,如果我能帮上忙,我将不胜感激

所以我正在尝试一些设计和编程的实践,我想用下面的图表来做一个神奇宝贝类型的比较:

因此,我的想法是输入类型,它将输出其优点和缺点。但就我的一生而言,我无法通过选择类型的初始阶段

以下是我的前几行:

Elements = "Normal","Fire","Water","Grass","Electric","Bug","Flying","Ground","Rock","Posion","Dragon","Dark","Fairy","Psychic","Steel","Fighting","Ice"
type1 = input("Please input a type")
while type1 != Elements:
    type1 = input("Please input a real type")

print("Good Job, this part works!") # But it doesn't get to this point...
我很抱歉这很糟糕,但每个人一开始都很幼稚,对吗?
提前感谢您对我的任何帮助

我想您应该检查type1是否在元素中,而不是它是否等于它。元素是字符串的元组,type1将只是一个字符串。这两样东西永远不会相等

您可以使用
in
关键字测试它是否在中,如下所示:

while( type1 not in Elements ):
    type1 = raw_input( "Enter a valid type" )

我想你应该检查type1是否在元素中,而不是它是否等于它。元素是字符串的元组,type1将只是一个字符串。这两样东西永远不会相等

您可以使用
in
关键字测试它是否在中,如下所示:

while( type1 not in Elements ):
    type1 = raw_input( "Enter a valid type" )

首先,您需要一个列表来存储所有类型,然后反复请求用户输入,然后将输入与预定义的元素列表进行匹配,如果找到匹配项,您将中断
,而
循环,否则您只需继续,这是本例中要遵循的简单算法

elements = ["Normal","Fire","Water","Grass","Electric","Bug","Flying","Ground","Rock","Posion","Dragon","Dark","Fairy","Psychic","Steel","Fighting","Ice"]
#Initialized the various types in a list.
while True:    #Infinite loop
    type1 = input("Please input a real type")   #Taking input from the user
    if type1 in elements:    #Checking if the input is already present in the given list of elements.
        print("Good Job, this part works!")
        break

首先,您需要一个列表来存储所有类型,然后反复请求用户输入,然后将输入与预定义的元素列表进行匹配,如果找到匹配项,您将中断
,而
循环,否则您只需继续,这是本例中要遵循的简单算法

elements = ["Normal","Fire","Water","Grass","Electric","Bug","Flying","Ground","Rock","Posion","Dragon","Dark","Fairy","Psychic","Steel","Fighting","Ice"]
#Initialized the various types in a list.
while True:    #Infinite loop
    type1 = input("Please input a real type")   #Taking input from the user
    if type1 in elements:    #Checking if the input is already present in the given list of elements.
        print("Good Job, this part works!")
        break

您试图查看一个单词是否等于一个列表,这永远不会是真的,您想查看该单词是否在列表中

elements = "Normal","Fire","Water","Grass","Electric","Bug","Flying","Ground","Rock","Posion","Dragon","Dark","Fairy","Psychic","Steel","Fighting","Ice"
type1 = input("Please input a type")
while type1 not in elements:
    type1 = input("Please input a real type")

print("Good Job, this part works!") # But it doesn't get to this point...

您试图查看一个单词是否等于一个列表,这永远不会是真的,您想查看该单词是否在列表中

elements = "Normal","Fire","Water","Grass","Electric","Bug","Flying","Ground","Rock","Posion","Dragon","Dark","Fairy","Psychic","Steel","Fighting","Ice"
type1 = input("Please input a type")
while type1 not in elements:
    type1 = input("Please input a real type")

print("Good Job, this part works!") # But it doesn't get to this point...


不要将变量名大写。写
元素
而不是
元素
是一个列表。使用以下语法定义一个列表
[“apple”,“banana”]
@Yeo
元素
是一个元组,对于当前的目的来说这是很好的。如果我建议使用
集合
而不是
列表
。这仍然是一种糟糕的做法,Python Zen:
显式优于隐式
。使用
(“苹果”、“香蕉”、“樱桃”)
@Yeo per(我的重点):“元组由逗号运算符(不在方括号内)构造,带或不带圆括号。”。我同意显式是好的,但逗号本身就足以表示非空元组的语法。不要将变量名大写。写
元素
而不是
元素
是一个列表。使用以下语法定义一个列表
[“apple”,“banana”]
@Yeo
元素
是一个元组,对于当前的目的来说这是很好的。如果我建议使用
集合
而不是
列表
。这仍然是一种糟糕的做法,Python Zen:
显式优于隐式
。使用
(“苹果”、“香蕉”、“樱桃”)
@Yeo per(我的重点):“元组由逗号运算符(不在方括号内)构造,带或不带圆括号。”。我同意显式是好的,但逗号本身就足以表示非空元组的语法。从这个意义上讲,Break是不好的,只有在处理case@Yeo“在正确时避免,然后破译代码”-根据谁的说法?我想说,这绝对是正确的方法,比设置标志或将
输入
放在多个位置更具Python风格。@heinst Python没有这些<代码>中断
绝对适用于循环-参见例如@Yeo它与
转到
不同<代码>为
/
中断
ing出一个
,而
循环在Python中是完全可以接受的;你有权发表你的意见,但我不明白你怎么能声称“终止条件未知”。你把孩子和洗澡水一起扔掉了——仅仅因为
break
使一些复杂的循环更难阅读,并不意味着你应该将不适用的简单循环过度复杂化,以摆脱它。我认为这就是所谓的“愚蠢的一致性”。从这个意义上讲,Break是不好的,Break应该只在处理问题时使用case@Yeo“在正确时避免,然后破译代码”-根据谁的说法?我想说,这绝对是正确的方法,比设置标志或将
输入
放在多个位置更具Python风格。@heinst Python没有这些<代码>中断
绝对适用于循环-参见例如@Yeo它与
转到
不同<代码>为
/
中断
ing出一个
,而
循环在Python中是完全可以接受的;你有权发表你的意见,但我不明白你怎么能声称“终止条件未知”。你把孩子和洗澡水一起扔掉了——仅仅因为
break
使一些复杂的循环更难阅读,并不意味着你应该将不适用的简单循环过度复杂化,以摆脱它。我认为这就是所谓的“愚蠢的一致性”。更新了我的答案,将用于测试输入值是否在元素tupleNote中的示例代码包括在内,这将需要在循环之前初始化
type1
。完全正确@johrsharpe,我认为这是问题中代码的一个补充,但这是一个很好的说明,我的示例代码不完整。如果输入的值在需要的元素tupleNote中,则更新我的答案以包含用于测试的示例代码