Pythonプログラミングでエラー

このQ&Aのポイント
  • Pythonのプログラムを教科書をみながら勉強しはじめました。バージョンは3.0.1です。下記の初歩的なプログラムでエラーが出て対応方法がわかりません。アドバイスいただけませんでしょうか。
  • Pythonの初心者がバージョン3.0.1でのプログラム実行時にエラーが発生しています。具体的なエラーの内容や対処方法がわからず困っています。アドバイスをお願いします。
  • Pythonのプログラムを学習中に初歩的なプログラムでエラーが発生しました。バージョンは3.0.1を使用しています。エラーの原因や解決策について教えていただけないでしょうか。
回答を見る
  • ベストアンサー

Pythonプログラミングでエラー

Pythonのプログラムを教科書をみながら勉強しはじめました。 バージョンは3.0.1です。 下記の初歩的なプログラムで#の行でエラーがでて対応方法が わかりません。 アドバイスいただけませんでしょうか。 #! /python30/python # coding:shift_jis ''' 簡単な電卓です。 Usage: mycalc.py n (+-*/) m ''' import sys, operator OP={'+':operator.__add__,\ '-':operator.__sub__,\ '*':operator.__mul__,\ '/':operator.__truediv__,\ } def calc(ls): assert len(ls)==3 #ここでエラー try: op=OP(ls.pop(1)) # 真ん中の文字列をpop,数字のみ残る。 x,y=[float(u) for u in ls] # 残った文字列をfloatに変換 except: print('Err:数字 演算子(+-*/) 数字 の順に引数をセットしてください。') sys.exit() return op(x,y) if __name__=='__main__': print(calc(sys.argv[1:])) #ここでエラー (ここで質問するとTABのインデントがなくなってしまうようです。)

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

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

>assert len(ls)==3 #ここでエラー この assert に引っかかってしまってということなら、 プログラムの実行の仕方がまずいです。 スクリプトの名前が sample.py だったとして python sample.py 1 + 2 のようにしないといけませんが、どうやってますか? そしてスクリプト自体にもエラーがありますね。 >op=OP(ls.pop(1)) # 真ん中の文字列をpop,数字のみ残る。 OP の直後は丸カッコではなく角カッコです。 op = OP[ls.pop(1)] のように。 何かのテキストを元に打ち込んでいるものかもしれませんが、 >except: >print('Err:数字 演算子(+-*/) 数字 の順に引数をセットしてください。') >sys.exit() 少なくとも作り始めは何が元のでこの except節が実行されたかを握りつぶさないほうがいいですよ。

kenji_yodo
質問者

お礼

ご指摘ありがとうございます。 OP の直後は丸カッコではなく角カッコとし、 python mycalc.py 2 + 3(エンター) とpython shell上で実行したら、うまくいきました。 引数は2(スペース)+(スペース)3 と入力しなければいけなかった ようです。 

関連するQ&A

  • 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はインデントで実行範囲を認識するので、 そこがうまく記述できていないであろうとは思うのですが、何回か試したのですが うまく動いてくれません。 どなたか御指南下さい。

  • python プログラミング vim

    #!/usr/bin/env python #vim: fileencoding=utf-8 from math import* import sys outfp=open('test.dat','w') outfq=open('ab.dat','w') for line in open('para.dat','r'): items=line.split('\t') s=2/float(items[0]) u=float(items[1])-5+log(s/100) outfp.write(str(s)) outfq.write(str(u)) outfp.close() outfq.close() ////para.dat//// 1 2 1 3 として、プログラムを実行したのですが、ファイルに出力した時に、 para.datの2列目(1 3)の計算した結果しか、ファイルに書き込まれてないのですが、 どうすれば、すべて反映されて、出力ファイルに結果が出せるのでしょうか。 よろしくお願いします。

  • Pythonプログラムのエラー

    こんにちは。pythonプログラムを勉強しはじめたばかりのものです。 次のプログラムが最後の行の#のところでエラーになってなかなか 解決ができません。アドバイスいただけませんでしょうか。 #! /python30/python # coding:shift_jis import sys, os, urllib, gzip def GetAndGzip(url, out): ''' urlを読み込み、gzipで圧縮してファイルoutに出力 ''' remote = urllib.urlopen(url).read() gzfile = gzip.GzipFile(filename='', mode='web', fileobj=out) gzfile.write(remote) gzfile.colse() #パラメータを抽出 if len(sys.argv) <> 2: print '使い方:python wgetgz.py url' else: url = sys.argv[1] GetAndGzip(url, sys.stdout) #ここでエラーin<module> #ここで投稿すると、インデントがなくなってしまうようです。

  • pythonのシンタックスエラー

    python3のサンプルコードがあり、エラーが出ます。 内容はファイルを開いてちょっと変更して中身をプリントするというものです。 これは私が書いたのではなく、本の付録のサンプルなのですが、文法エラーとなります。何が原因かご指摘を頂ければと思いますが。文字コードの問題かなと思いましたが、UTF_8となっています。ファイルをdata.pyとして保存して、コマンドでpython data.pyを叩いたときに出てきます。(すみません、ここに張り付けた段階でインデントが見えなくなっているようですが、それは実際は問題ないです) file = "data.dat" limit = 2.0 with open(file, "r", encoding="utf_8") as fileobj: for i, line in enumerate(fileobj): if line == "\n": continue datalist = line.split(",") result = [int(float(num)<=limit) for num in datalist] print(f"{i}:{result}") #エラーメッセージ # File "data.py", line 9 # print(f"{i}:{result}") ^ #SyntaxError: invalid syntax これに関連する質問ですが、pythonはコンパイルしないようになっているみたいなので、コンパイル時のエラーと実行時のエラーの区別がつきません。このエラーは実際に動作してエラーが出ているということなのでしょうか。他の言語ではシンタックスエラーはコンパイルエラーなので実行前のエラーとは思いますが、文法チェックと実行の関係を教えて頂ければと思いますが。 よろしくお願いします。

  • Python: TypeError

    Pythonでテキストファイルから数字を読み込む時に、スペースで区切られたデータをパラメータセットとして配列の中に格納したいのですが、その際にチェック事項があってFor LoopにTryを挟んでいます。この状態でどうしても下記のエラーが出るのですが、どのようにすれば良いのでしょうか? 宜しくお願い致します。 TypeError: argument 2 to map() must support iteration --- def ReadOutput1(): f = open('C:/Users/.../output1.txt','rb') output = [] for line in f: ls = line.split(' ') for i in range(4, 8)): try: modelParams[i-4] = map(add, float(ls[i])) except ValueError: (...) return output

  • PythonのUnicode文字について 

    PythonのUnicode文字について  最近pythonを始めました。このサイト(http://www.pythonweb.jp/index.html)でいろいろと勉強しているのですがUnicode文字についてよくわかりません。 #coding: UTF-8 print u"こんにちは" と入力するとなぜか File "test.py", line 2 print u"こんにちは" SyntaxError: (unicode error) 'utf8' codec can't decode byte 0x82 in position 0: unexpected code byteと表示され出力されませんでした。何故でしょうか。unicode文字についても説明をお願いします。

  • 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 あいうえお

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

    pythonを勉強しようと思いネット上の解説サイトを読んでいます。 以下の様なサンプルプログラムがでてきたのでコピペして実行してみました。 プログラム import sys # sysモジュールをimport # sys.argvにコマンドライン引数が「リスト」で格納されている print(sys.argv) print(len(sys.argv)) ただ、実行すると ”sys:1: DeprecationWarning: Non-ASCII character '\xa5' in file cl.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details” といったエラーが表示されてうまく動作してくれません。 1行目のimportでエラーとなっているようなので環境 orバージョンの問題なのかと思うのですがよくわかりません。 対処方法をどなたか教えていただけないでしょうか?

  • python print文のエラーがでます

    #!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import print_function import datetime class TZ(datetime.tzinfo): def __init__(self, name, offset): self.name = name self.offset = offset def utcoffset(self, dt): return datetime.timedelta(hours=self.offset) def tzname(self, dt): return self.name def dst(self, dt): return datetime.timedelta(0) def main(): path = '/sys/bus/w1/devices/28-000*********/w1_slave' with open(path) as f: data = f.read() temp = float(data[data.index('t=')+2:])/1000 FMT = '{},{:.1f}' JST = TZ('JST', 9) now = datetime.datetime.now(JST) print(FMT.format(now.strftime(&quot;%Y/%m/%d %H:%M:%S&quot;), temp)) if __name__ == '__main__': main()
 とうってじっこうすると print(FMT.format(now.strftime(&quot;%Y/%m/%d %H:%M:%S&quot;), temp)) の部分に SyntaxError: invalid syntax とエラーがでます。 どういうことなのか教えていただけるとうれしいです!

  • 演算子オーバーロード?

    下記記載の Vector& operator+=(Vector u) メソッドの意味が理解できません。 inline Vector& Vector::operator+=(Vector u)とはどういう意味なのでしょうか? 質問がへたくそで申し訳ないのですが、どのたかご回答お願いします。 class Vector{ public: float x; float y; float z; }; inline Vector& Vector::operator+=(Vector u) { x += u.x; y += u.y; z += u.z; return *this; }

専門家に質問してみよう