コードにはいくつか問題があります。主なものは、これらは以下のとおりです。
while
ないWhile
- 悪いインデント
rainbow
が文字列ではなく、リスト
rainbow
はまず、Pythonのような場合は大文字の文字列
が含まれていますあなたのコードにwhile
の代わりにWhile
を使用する場合、それは賢明なプログラミング言語です私はあなたに誤りを投げます。しかし、私はあなたが提起した問題ではないので、それは単なるコピーアンドペーストエラーであると信じています。
第2に、コードが正しくインデントされていません。あなたのコードだけで永遠にwhile True:
ループに滞在することを意味する
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
:二つのセクションは、あなたの質問にばらばらですが、私はそれがあると仮定します。私があなたが意図したと思うのは、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
もう一つの方法は、break
代わりの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
第三に、あなただけの試合にしたいと思うようあなたが定義した色は、文字列を使ってカットしません。あなたは、文字列を使用する場合は、次の式はTrue
を評価:
"lue" in "Blue" # == True
値"lue"
が文字列"Blue"
であればPythonはちょうどチェックなど。同様に、"Red,Orange,Yellow,Green,Blue,Indigo,Voilet"
のような長い文字列を使用すると、同じことが実行されます。
あなたが望むものはリストです。以下はFalse
評価:
"lue" in ["Blue"] # == False
今Pythonは異なる方法でそれを見て。はリスト["Blue"]
にありますか?答えはいいえだ。だから、あなたが使用する必要があります。
["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,Orange,Yellow,Green,Blue,Indigo,Voilet".split(",")
を、次のようなコードを取得します
しかし、"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"]
。紫色はトイレの綴りであることに注意してください。それが別の言語であるかどうかは分かりませんので、変更しません。あなたがノートを取る必要があり
他のものは以下のとおりです。
- 変数の命名の規則は、アンダースコアと小文字です。通常、クラスには大文字の名前が使用されます。 PEP 8の表記規則について詳しく読むことができます。
+=
は、あなたがどのような宇宙ではcounter = counter + 1
をしたいとき(red' 'のような)カラー強制小文字が今までその文字列に色' Red'と一致しますがありますか? :-) – paxdiablo
また大文字の 'Print'は' NameError'を送出します。投稿する前にコードを**実行**していますか? – Gribouillis
ありがとう、しかし、私が教えてくれたことから、 ".lower()"オブジェクトは大文字の文字列を小文字にすることができます。 –