Python 打印代码不起作用
我用Python编写了这段代码,我想打印一个文本,该文本的颜色由用户输入,可以在变量中找到。这就是代码的样子Python 打印代码不起作用,python,if-statement,Python,If Statement,我用Python编写了这段代码,我想打印一个文本,该文本的颜色由用户输入,可以在变量中找到。这就是代码的样子 Counter = 1 While True: rainbow="Red,Orange,Yellow,Green,Blue,Indigo,Voilet" color = input ("Enter your rainbow color;") 即使条件评估为true,此打印颜色代码也不起作用。 if color.lower () in rainbow: pr
Counter = 1
While True:
rainbow="Red,Orange,Yellow,Green,Blue,Indigo,Voilet"
color = input ("Enter your rainbow color;")
即使条件评估为true,此打印颜色代码也不起作用。
if color.lower () in rainbow:
print (color)
if Counter == 4
break
Counter = Counter +1
这不是解决问题的最简单方法。我想你的代码应该是这样的
Counter = 1
while True:
rainbow="red,orange,yellow,green,blue,indigo,voilet"
color = input ("Enter your rainbow color")
if color.lower() in rainbow:
print(color)
if Counter == 4:
break
Counter = Counter +1
但是你为什么不在时使用常规的
Counter = 1
while Counter < 4:
rainbow="red,orange,yellow,green,blue,indigo,voilet"
color = input ("Enter your rainbow color ")
if color.lower() in rainbow:
print(color)
Counter += 1
最简单的方法:
Counter = 1
while Counter < 4:
rainbow="Red,Orange,Yellow,Green,Blue,Indigo,Voilet"
color = input ("Enter your rainbow color ")
l = rainbow.split(",")
if color.title() in l:
print(color)
Counter += 1
计数器=1
当计数器<4时:
彩虹=“红色、橙色、黄色、绿色、蓝色、靛蓝、Voilet”
颜色=输入(“输入彩虹颜色”)
l=彩虹分割(“,”)
如果l中有color.title():
印刷品(彩色)
计数器+=1
您的代码中存在一些问题。主要有:
while
notwhile
不良压痕
rainbow
是一个字符串,而不是列表
rainbow
包含大写字符串
首先,Python是一种区分大小写的编程语言,如果在代码中使用While
而不是While
,它会给您带来一个错误。但是,我相信这只是一个复制粘贴错误,因为这不是您提出的问题
其次,代码没有正确缩进。虽然在你的问题中,这两个部分是不相交的,但我认为它是:
Counter = 1
while True:
rainbow="Red,Orange,Yellow,Green,Blue,Indigo,Voilet"
color = input ("Enter your rainbow color;")
if color.lower () in rainbow:
print (color)
if Counter == 4
break
Counter = Counter +1
这意味着您的代码将永远留在循环中,而True:
循环中。我认为您打算做的是获得4个有效的用户输入,然后离开循环。在这种情况下,您应该在while
循环下缩进代码:
Counter = 1
while True:
rainbow="Red,Orange,Yellow,Green,Blue,Indigo,Voilet"
color = input ("Enter your rainbow color;")
if color.lower () in rainbow:
print (color)
if Counter == 4
break
Counter = Counter +1
另一种方法是使用条件中断
,而不是真
:
Counter = 1
while Counter != 4:
rainbow="Red,Orange,Yellow,Green,Blue,Indigo,Voilet"
color = input ("Enter your rainbow color;")
if color.lower () in rainbow:
print (color)
Counter = Counter +1
"lue" in "Blue" # == True
第三,因为您只想匹配您定义的颜色,所以使用字符串不会剪切它。使用字符串时,以下表达式的计算结果为True
:
Counter = 1
while Counter != 4:
rainbow="Red,Orange,Yellow,Green,Blue,Indigo,Voilet"
color = input ("Enter your rainbow color;")
if color.lower () in rainbow:
print (color)
Counter = Counter +1
"lue" in "Blue" # == True
因为Python只是检查值“lue”
是否在字符串“Blue”
中。类似地,如果您使用一个长字符串,例如“Red,Orange,Yellow,Green,Blue,Indigo,Voilet”
,它也会做同样的事情
你想要的是一份清单。以下计算结果为False
:
"lue" in ["Blue"] # == False
现在Python以不同的方式看待它。“lue”是否在列表中?答案是否定的。因此,您应该使用:
["Red", "Orange", "Yellow", "Green", "Blue", "Indigo", "Voilet"]
或者,如果您希望动态执行此操作,.split(“,”)
将为您生成:
"Red,Orange,Yellow,Green,Blue,Indigo,Voilet".split(",")
之后,您将得到如下代码:
Counter = 1
while True:
rainbow=["Red", "Orange", "Yellow", "Green", "Blue", "Indigo", "Voilet"]
color = input("Enter your rainbow color;")
if color.lower() in rainbow:
print(color)
if Counter == 4
break
Counter = Counter +1
但是,它仍然不起作用,因为您一直在将诸如“Red”
之类的单词与“Red”
匹配。您正在使用.lower()
对整个输入进行小写。相反,您可以将输入.capitalize()
,或将它匹配的“Red”
小写:
# .capitalize() the input
if color.capitalize in rainbow:
# code...
# lowercase the "Red"
rainbow = ["red", "orange", "yellow", "green", "blue", "indigo", "voilet"]
那就行了。请注意,violet的拼写是voilet,我不确定这是否是另一种语言,所以我将其保持不变
您还应注意以下事项:
命名变量的惯例是使用带下划线的小写字母。大写的名称通常用于类。您可以在中阅读有关约定的更多信息
当您想执行计数器=计数器+1
在哪种情况下,强制使用颜色的小写字母(如red
)会与该字符串中的red
颜色匹配?:-)此外,大写的打印
应引发名称错误
。发帖前是否运行代码?好的,谢谢,但根据我所学,.lower()对象可以将大写字符串转换为小写。lower()将color
中的值返回为小写,但rainbow
中的值为propercaseCool,也可以使用color.title()而不是color.lower()Kirill,感谢您的帮助,但是如果我输入一个单词说“yello”,而不是“yello”,代码仍然无法正常工作,即使if语句将其计算为false,我仍然会打印单词“yello”。您可以使用color[1://code>而不是color[1:len(color)]
,Python假定它位于字符串的末尾。您也可以使用.capitalize()
,它会自动将所有内容小写,并将第一个字母大写。请注意,capitalize()
不同于title()
;前者仅大写第一个字母,后者大写由空格分隔的每个第一个字母。