-6

コードが実行されます。しかし、どういうわけか、サムに入るように促されたとき、「あなたの名前はサムではありません」と返ってきます。

name = ["Sam"]
print ("What is your name?")
name_choice = input("Type Here: ")

if name == "Sam":
   print ("Your name is Sam")
else:
   print ("Your name isn't Sam")

私はPython3.2で作業しています。どんな助けでもいただければ幸いです。ありがとう!

4

5 に答える 5

3

ユーザー入力は変数にありますが、 「Sam」name_choiceと比較します(したがって、ユーザー入力は使用されません)。name

また、文字列をリストと比較している場合、これは常にFalse

In [32]: name = ['Sam']

In [33]: 'Sam' == name
Out[33]: False

ユーザーが何を入力したかに関係なく、プログラムは常に「あなたの名前はサムではありません」と表示します。

if name_choice == 'Sam':
   print ("Your name is Sam")
else:
   print ("Your name isn't Sam")

おそらくあなたがやりたいことです

于 2012-05-15T23:13:10.747 に答える
2

OK、かみます、これは少し良い質問です。ここには2つの主要な問題があります。

  • なぜ名前だけを含むリストを割り当てるの"Sam"ですか?これは何を達成することを意味しますか?
  • 次に、ユーザー入力を変数に割り当てます。変数name_choiceは使用されません。

ここであなたの思考プロセスがどのようなものかはよくわかりません。言語の基本的な知識がかなり不足していることを示していると思います。チュートリアルを読むことをお勧めします。

また、ユーザープロンプトを出力してから、の実際のプロンプトを使用するのは少し無意味であることに注意してください"Type Here:"

于 2012-05-15T23:13:45.413 に答える
1

これは、name == ["Sam"](最初​​の行の値と同じに設定した)および"Sam" != ["Sam"]。リストを文字列と比較しようとしています。

また、あなたはおそらくやりたいでしょうif name_choice == "Sam"

于 2012-05-15T23:14:06.190 に答える
0

name_choice代わりにここを使うべきだと思いますname

if name == "Sam":
    print ("Your name is Sam")

nameとにかく変数は何を意味しますか?

このようなことが起こったときの良いヒントは、比較しているものを直前に印刷することです。if

例えば

print ("name ==", name)
if name == "Sam":
    print ("Your name is Sam")

これにより、リストを文字列と比較していることが明らかになります。

于 2012-05-15T23:15:20.323 に答える
0

まず、これが意図的なものかどうかはわかりません)、文字列と同じではないname = ["Sam"]1つの文字列要素のリストを作成します"Sam""Sam"

次に、入力された値を文字列(またはリストの要素)と比較する代わりに、このリストを単一の文字列と比較します

于 2012-05-15T23:15:30.167 に答える