所以我在学习Python,但在使用这个我设计的小程序时遇到了麻烦,我试图进一步提高我的Codecademy技能。在
car_models = ["Ferrari", "Lamborghini", "Aston Martin", "BMW"]
bad_cars = ["Toyota", "Mazda", "Ford", "Hyundai"]
for gcar, bcar in zip(car_models, bad_cars):
ask = input("What is your favorite car brand? ")
if ask == gcar:
print("Yes!")
elif ask == bcar:
print("Ew!")
else:
print("The model is not listed")
break
当我运行这个程序时,它只会弹出一个答案,如果这个模型是列表中的第一个,否则,它只会告诉你这个模型没有被列出,即使它是。在
您的问题可能应该在Code Review而不是在堆栈溢出处提出,但是让我给您一个实际编码的大致情况。在
这将创建两个单独的列表,一个是}。在
^{pr2}$car_models
(也称为好车),另一个是{首先要在好车和坏车之间创建链接元组。一、 e.},依此类推。然后创建一个循环,在这个循环中分解刚刚创建的元组,并在每次迭代中将好的和坏的汽车存储在}中。在
Ferrari
链接到Toyota
,Lamborghini
链接到{gcar
和{然后在循环中,你认为你在询问你最喜欢的汽车品牌,并将其存储
ask
。但实际上您要做的是请求输入,然后将其作为python代码进行计算,请参见input。(即,要按原样使用,您必须输入"Ferrari"
以避免NameError
异常)然后测试刚刚输入的汽车是否与当前的}的当前迭代相匹配,如果匹配,则打印一条消息。此代码不针对汽车列表进行测试,只针对当前迭代。在
gcar
或{然后,在第一次迭代中进行测试之后,您将跳出循环。在
可能的解决方案
根据您的主要目的,有两种稍微不同的修复方法。你想不停地要新车型,直到他们累了,还是只想问一次?在
在解决这个问题之前,请尝试下面的代码,看看for循环会产生什么结果(我添加了
Opel
,由于另一个列表不够长,它就会消失):假设您要多次询问,可以按以下方式进行:
注意使用
raw_input
的变化,以及while True:
继续询问,直到给出一个未列出的车型。请注意break
的额外缩进,因此它只在列出不在两个列表中的汽车时执行。在这可能会产生以下“对话”:
break语句是错误的,只有在找到对象时才能完成循环
编辑,感谢@PM 2Ring
此外,您可能需要一个变量“found”来知道您的模型是否在列表中。在
可能的解决方案
您可以使用obj in list检查某个对象是否在列表中,因此您可以这样做:
^{pr2}$希望有帮助。在
相关问题 更多 >
编程相关推荐