Pythonでif文の内容が無視される理由は?

このQ&Aのポイント
  • Pythonでif文の内容がなぜか無視される理由を知りたい。
  • 入力文の長さが一定以下の場合に書き込みを停止するプログラムを作成したが、if文の内容が無視されてうまくいかない。
  • Pythonのコードは上から下に向かって実行されるはずなのに、なぜif文の内容が無視されるのか不思議である。
回答を見る
  • ベストアンサー

pythonで、if文の内容がなぜか無視されます。

下記のコードはファイルの内容を手動で修正するためのコードです。 間違えて入力せずにボタンを押してしまった時のために、入力文の長さが一定以下の時に書き込みを自動停止するようプログラムしたいのですが、実行した際になぜかif文の内容が無視され、うまくいきません。 これは仕様ですか? pythonのコードは上から下に向けて実行されるんじゃないんですか? def manual_set(): frw_w = open("weight.txt", "w+") w = frw_w.read() print(w) w_next = input("set the w") if len(w_next) <10: #誤作動防止 print(len(w_next),"Alart") frw_w.close() else: print(len(w_next)) frw_w.write(w_next) frw_w.close()

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

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1622/5658)
回答No.1

あなたがいう「うまくいきません」が具体的にどういう事なのかわからないのですが、 "w+"は、"w"と同じ挙動でオープンした上で読み込みができるようにしますから、 open("weight.txt", "w+") が成功している時点で weight.txt は削除された上で新しい weight.txt が作られているのですが、 それはあなたがやろうとしてる事にあった動作ですか?

hf-sbf5
質問者

お礼

open("weight.txt", "w+") が動いた時点で既にweight.txt が削除されていたんですか! 回答ありがとうございます。

関連するQ&A

  • Pythonについて

    Pythonで〇〇から〇〇の時に実行、 ということはできますか? if文を使うと if a <= 100: このように100以下のみ実行となりますが、 if a <= 100: if a >= 90: print("〇") else: print("×") else: print("×") aが90以上100以下の時、「◯」、それ以外の時「×」を出力するには上のような構文にすればいいですか? この構文より簡単な構文、もしくはより良い構文がある場合は教えてください。

  • Python goto文を使うには

    Python 3.7.3で以下のようにgoto文を使いたいのですが モジュールは何をインストールすればよいでしょうか。 必要ならば1行目は別の記述でも構いません。 ---------------------------- from goto import goto, label label .A x=input('値を入力してください') if x!=0 : goto .A print('END') ----------------------------- (Windows10,Python 3.7.3)

  • python

    pythonについての質問です。 def S_sa(k=1) for step in xrange(k) : if step == 0 : print 'a' else print 'b' というコードがあって、なぜかprint aが実行されるのはなぜでしょうか? xrangeのreturnは1ではないのでしょうか?

  • pythonの文字コードについて

    pythonの各文字コードにおける日本語の扱われ方について分からないことがあります。 日本語1文字の長さはユニコード文字列では1、8ビット文字列では3という説明が参考書には書いてありました。しかし、実際に実行してみると私の環境では結果が異なりました。さらに文字化けまで起きてしまいました。なぜなのでしょうか?回答お願いいたします。 windowsを使用しており、バージョンはpython2.7です。 以下、私の環境下での実行結果です。 >>> ustr=u"あいうえお" >>> len(ustr) 10 >>> len(ustr.encode("utf-8")) 20 >>> print ustr ‚ ‚¢‚¤‚¦‚¨ >>> print ustr.encode("utf-8") ツつツつ「ツつ、ツつヲツつィ >>> ustr2="あいうえお" >>> len(ustr2) 10 >>> print ustr2 あいうえお

  • 下記のpython の動きが分かりません。

    下記のpython の動きが分かりません。 よろしくお願い致します。 def print_list (data, index): if(index != len(data)): print(data [index]) print_list(data, index +1) some_list = [1,2,3,4,5] print_list(some_list, 0) 実行結果は、1       2       3       4       5

  • pythonのエラーについて教えて下さい。

    pythonの勉強をおこなっている超初心者です。 ネットでみた。以下のサンプルコードを実行しようとしました。 # -*- coding: utf-8 -*- print u'モジュールのロード' def test(): print u'関数:testを呼び出しました' if __name__ == '__main__': print 'python-izm' # print 'パイソンイズム' test() しかし、以下の様なエラーとなってしまいます。 File ”test02.py"、line 9 print ’python-izm'  ^ indentionError:expected an indented block ネット調べてみたとことpythonのインデントのエラーだとわかりました。 pythonはインデントで実行範囲を認識するので、 そこがうまく記述できていないであろうとは思うのですが、何回か試したのですが うまく動いてくれません。 どなたか御指南下さい。

  • If文を2つ並べると2つ目の文が実行されない。

    プログラムの中で*A*のIf文は実行されますが、*B*のIf文は実行されません。 何故でしょうか?教えて下さい。 ちなみに、<中略>の部分にもIf文は同じ様にあります。(内容は違うけど) <SCRIPT language="javascript"><!-- function ka() { ******<中略>****** *A* if (document.fomu.email.value ==""){        alert ("メールアドレスを記入して下さい。");        fomu.email.focus();        return false; } *B* if (document.fomu.email.value.match(/\w+@\w+/){        alert ("正しくメールアドレスを記入して下さい。");        fomu.email.focus();        return false; } ******<中略>******* } //--></SCRIPT>

  • if文が上手くいかない・・・

     連続投稿失礼します。  if文が上手くいきません。$hensuuの値が間違っているのにもかかわらず、条件があっている時の処理が実行されてしまいます。  なにやら癖になっているようで、if文を書くたびこのような事態が発生します。(PHPに限らず、C言語でまで・・・。)一体何が原因なのでしょうか? <?php $hensuu = "right"; if($hensuu = "wrong"){ print <<<_EOT_ 条件に合ってないはずなのに、こっちが表示されちゃう。 _EOT_; } else { print <<<_DRK_ 本来こっちが表示されるはずなのに、表示されない・・・。 _DRK_; } ?>  よろしくお願いします。

    • ベストアンサー
    • PHP
  • python プログラミング

    pythonで、 def CircleArea(): a=r*r*3.14 print(r,a) というプログラムをunixのvimでcircle.pyで保存しました。 今度はこれをpythonで実行したいと思って, ターミナルに, circle.pyと入力しましたが, 実行しません。どうすればよろしいでしょうか? よろしくお願いします。

  • pythonの本体処理の直前のifについて

    pythonのプログラム作法として、上から順番に、 1 拡張ライブラリの読み込み 2 関数、クラスの定義 3 処理の本体 と進むことが多い(必ずそうでなくてもいい)とのことです。 そして、3の"処理の本体"に入る前には、メインであることを確認する、以下のif文を入れる習慣とのことです。 if __name__ == '__main__': #メインのプログラムであるときに以下を実行する ここで質問ですが、この処理がメインである、ということはどこにも宣言しているわけではなく、処理の手順上自然にそうなってしまうわけですね。 C言語だったら、int main() というようなことになるし、Fortranだったら宣言と処理は見たらわかるわけです。 pythonのこのif __name__ == '__main__': は、何を問うているいるのでしょうか。__name__は変数なのでしょうか。 実際にコメントアウトしてインデントを調整したら、このif文がなしでも動作します。 例えば、クラスにおけるコンストラクタ __init__ のように __ がつくものはpythonのきまりなのだろうとは思いますが。 よろしくお願いします。

専門家に質問してみよう