• 締切済み

このプログラムが動くようにするには

python 超初心者です。 やる気を出すプログラムを作ったのですが動きません。 動くように最小の修正を教えてください。 よろしくお願いいたします。 input_yn = input("Are you doing what you have to do?:") if input_yn == y: print ("Keep doing! Go on!") else: print ("do what you have to do!!!")

  • Python
  • 回答数4
  • ありがとう数4

みんなの回答

回答No.4

> でもこのままだと、y/n を入力するとき、"y" ”n"と、自分でクオーテーションをつけなくてはならないことに気が付きました。 いや、クオーテーション要らないでしょ。 大体、このコードはPython3系ののモノであって、Python2系のモノじゃない。 何故分かるかって? Python2だとprintは「文」ですが、Python3だとprintは「関数」なんで、どっちにせよ、提示コードはPython2系じゃ「動かない」のです。 print ("Keep doing! Go on!") # Python3系ではprintは関数 print "Keep doing! Go on!" # Python2系ではprintは文 つまり互換性がないので、貴方が提示したコードはいずれにせよPython2系だと「間違ってる」コードとして弾かれてしまいます。 注: とは言っても、Python2.7系のインタプリタだとprint("hoge")の形式が通ってしまうので話がややこしい。 正確な話は次のトコに書いてあるが 組み込み関数: https://docs.python.jp/2/library/functions.html#print >注釈 > >この関数は print という名前が print ステートメン トとして解釈されるため、通常は使用できません。ステートメントを無効化して、 print() 関数を使うためには、以下の future ステートメントをモジュールの最初に書いて下さい。: > >from __future__ import print_function との事。 と言うわけで、Python3前提で話を始めますが、input(Python2系ではraw_input)は入力をそのまま返す事はありません。「必ず」文字列に変換して返します。 >>> input() y 'y' >>> input() n 'n' >>> input() 1+1 '1+1' >>> 特に最後の「1+1」を見て欲しいんですが、「計算」はせずに「文字列」に変換して返している。 何故かと言うと、一番大きいのはセキュリティのためです。input関数が「計算処理出来るものを」そのまま受け取って、インタプリタに渡してしまうと、「悪意のあるコード」を受け取って実行させる事を可としてしまうから、です。だから文字列のような「実行不可能」な形式に「必ず」変換してインタプリタに取り込むようにしてるんです。 >>> x = 1 + 2 # x に 1 + 2と言う計算式を与えてみる >>> input() x 'x' # input()で取り込んだxは「文字列」でリテラルのxとは別物なんで「実行」されない >>> def hello(): # 次に関数を定義してみる print("hello, world!") >>> input() hello() 'hello()' # inputを使って実行指令を渡しても「文字列」に変換されるので実行出来ない >>> すなわち、 input_yn = input("Are you doing what you have to do?:") # これはどんな入力を受け取っても全部文字列にしてしまう ので、比較は input_yn == "y" # 文字列 == 文字列で比較しないと意味がない じゃないとダメだ、って事です。 言い換えると、「入力にクオーテーションが付いていなくても」受け取って返したブツには「自動的に」クオーテーションが付いているので、全然心配する必要はありません。 (試してみればすぐ分かる筈なんですけどね)

回答No.3

pythonの3系ならinput()ですが pythonの2系だとinput()では”式”として認識してしまうので、 yだけいれると、yという変数を探しにいくので、"y"と入れる必要が生じてしまいます。 pythonの2系を使っているなら、raw_input() を使うことになります。

  • wormhole
  • ベストアンサー率28% (1619/5653)
回答No.2

>でもこのままだと、y/n を入力するとき、"y" ”n"と、自分でクオーテーションをつけなくてはならないことに気が付きました。 本当にダブルクオーテーションが必要かどうか確認しましたか?

2424ookk
質問者

お礼

確認しました! n や y だとエラーで、"n"や”y"だとちゃんとメッセージが帰って来ます。Python 2.7 をインストールしてIDLEで書きました。環境が関係あるでしょうか?

回答No.1

input_yn = input("Are you doing what you have to do?:") if input_yn == "y": # inputが返す「入力」は文字列   print ("Keep doing! Go on!") else:   print ("do what you have to do!!!")

2424ookk
質問者

お礼

直りました!ありがとうございます。でもこのままだと、y/n を入力するとき、"y" ”n"と、自分でクオーテーションをつけなくてはならないことに気が付きました。恐縮ですが、クオーテーションの入力がいらなくなる方法も教えていただけないでしょうか。

関連するQ&A

  • この英語の文章は正しいのでしょうか?

    基本中の基本のような文章なのですが、何か気になったので質問させていただきます。 先日留学中の友達に long time no see! how are you doing? とメールを送りました。そしたら返事が来てその文章の一部に、 i am great! what do you doing now? do you go to any country? と書いてありました。 …これを読んで私は最初、 what are you doing now? did you go to any country? と言いたかったのかな…その人は英語初心者なので間違いはよくあり、今回もそうかなと思ったのですが…。 特に二つ目の文章は何か引っかかってしまいます。(一般動詞doとかが苦手、よく分からないということもあるからかもしれません) 私も英語が完璧ではないのでなんとも言えませんが…この文章の文法はあっているのでしょうか?

  • 疑問文の文型はどのように考えますか?

    疑問文の文型はどのように考えればいいのでしょうか? (1)Do you have a pen? (2)What are you doing? (3)Where do you go? (4)Why don't you write poems? (5)Who discoverd the New World? (1)では「Do」の扱いをどうすればいいのか。 (2)~(5)でbe動詞、doなどの助動詞、whatなど疑問詞の扱いです。 お手数ですが、よろしくお願いします。

  • 英語

    What do you think they are doing now? で、何を言っているかわ分かりますが、 英作になると分かりません。 What are they doing do you think?とか、 Do you think what they are doing? とかになってしまいます... なので文法的に解説してください。

  • What are you doing?

    よろしくお願いします。 What are you doing? というのは、 What do you doing? と言っているように聞こえるものなのでしょうか? 何度聞いても私にはそう聞こえてしまうのですが・・・。 それとも、What do you doing? という言い回しが存在するのでしょうか?文法的にはおかしいような気がするのですが。 どうぞ宜しくお願い致します。

  • What do you doing??

    映画やドラマで、 「何やってんの」 というようなとき、What are you doing? でなく、 What do you doing? と聞こえてしまいます。 んんー? と、英語字幕に切り替えると、are となっています。 聞き間違えでしょうか。 恥ずかしいのですが、教えてください。

  • 「Why」を使った疑問文で分からないことが分からないところがあります

    今、中学生レベルの英文法を勉強しております。参考書を読んでも理解できなかったところがありましたので教えていただけないでしょうか? 参考書に”Why”を使用した疑問文で「Why are you going to America?/Because I want to study English.」(なぜあなたはアメリカに行くの?/なぜなら英語を勉強したいからです。)と書いてありましたが、なんで、”going to”の後にgo toが来ないのかと疑問に思いました。なぜ、「Why are you going to go to America?」とならないのですか? 他のページで”What”を使用した疑問文の「What are you going to do?/I’m going to swim.」(あなたは何をするつもりですか?/私は、泳ぐつもりです。)は、”going to”の後に”do”となっていました。 *「What are you going to do?」は、この文章は、「be動詞+going+to+動詞の原形」の”What”を使用した疑問文です。 「What are you going to do?」の場合、”going to”の後に”do”が来るのに、「Why are you going to America?」では、どうして”going to”の後にgo toが来ないのですか?

  • what do you doing?

    これって文法間違ってませんか? what are you doing ならわかるんですけど。 映画では what do you doingってのをよく耳にします。 私の単なる聞き間違いですか?

  • 前置詞

    問題の中で、You must learn to be content (with) what you have. という問題がありましたが、自分は( )内をto と答えました。 辞書では、withはdoingで(~ということに安心する)となり、 toの場合がbe to do で喜んでとなり、what you haveがdoingになっていなかったのでtoを 選択したのですが。。 なぜ、withになるのでしょうか? ★また、前置詞の覚え方がいまいちよくわかりません。これらは熟語として全て暗記する しかないのでしょうか?

  • What do you doing?

    映画のセリフで、そうきこえたのですが、普通 What do you doing? って言い方するのでしょうか。What do you do? とか What are you doing? なら、文法的に正しいですけど。なんとなく、使える気がしてましたが、これは文法的に変?と思ったらよくわからなくなってきた・・  このセリフは実際の会話で普通に使われてるのか教えてください。

  • 前置詞の使い方

    Where do you live in?と Where do you live? の違いは何ですか。 What are you looking at?と What are you looking? の違いは何ですか。 Where do you want to go to?と Where do you want to go?の違いは何ですか。 Where are you sitting on?と Where are you sitting?の違いは何ですか。 これらの例に関わらず、イディオムの前置詞を使う場合と使わない場合の違いが分かりません。 どうぞ、教えてください。

専門家に質問してみよう