• ベストアンサー

python ですが下記のプログラムがエラーになり

python ですが下記のプログラムがエラーになります。どうしてでしょうか。よろしくお願い致します。 def revers(data): for index in range(len (data)-1,-1,-1): yield data[index] some_list = [‘a’, ‘b’, ‘c’, ‘d’] for e in revers(some_list): print(e) 実行結果をd      c      b      a にしたいのですがエラーがでます。

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

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

  • ベストアンサー
  • maiko04
  • ベストアンサー率17% (345/1956)
回答No.1

文字は半角で囲みます’、全角になっていましたよ。 エラーが出るならエラーのメッセージを書きましょうね。

関連するQ&A

  • 下記の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に詳しい方助けてください!

    --------------------------------------------------- class Node: def __init__(self, x, bros = None, child = None): self.data = x self.bros = bros self.child = child def traverse(self, leaf): if self.data == leaf: yield [] else: child = self.child while child: for x in child.traverse(leaf): yield [self.data] + x child = child.bros --------------------------------------------------- Nodeクラスの一部を抜粋いたしました。 関数traverseが何をやっているのか知りたいのです。 Pythonの知識はほぼないですが、C++が多少分かるので、 C++に書き換えていただけると一番ありがたいです。 本当にすみません。 お分かりになる方いらっしゃいましたら教えて下さい。 ※インデントが重要と思われるPythonで投稿したらインデントが消えちゃいました。  画像を添付いたします。  本当にどうか助けてください. (;_;).

  • 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 リストのプログラムがうまくいかない

    閲覧ありがとうございます。 学校の講義にてgoogle colaboでpythonを使っています。 課題 複数の記事を読み込んで、行を記事、単語を列とした単語数カウントの行列を作成せよ (ファイルは 単語:単語数 単語:単語数... で、行末尾にnegativeとなっていて、1行に1記事ずつ入っている) import numpy as np import matplotlib.pyplot as plt with open('/content/drive/MyDrive/train.processed') as f: articles = f.readlines() # 記事を読み込む list_articles = [] # 記事単位のリスト list_words = [] # 単語単位のリスト list_count = [] # 単語数カウントの行列 x = len(articles) for article in articles: list_articles.append(article.split()) # 記事ごとに[単語:単語数]で配列に入れる(二次元) for i in range(x): # x=記事数 for j in range(len(list_articles[i])-1): # negativeを除いた1記事当たりの単語数 if not '::' in list_articles[i][j]: # 単語として[:]があるとバグるのでない場合のみ処理を行う(::3みたいになってる) col = list_articles[i][j].find(':') # 単語と単語数の間の:の位置を求める word = list_articles[i][j][:col] # コロン未満(単語部分)をwordに代入する if not word in list_words: # list_wordsにない場合、追加する list_words.append(word) list_count.append([0 for k in range(x)]) # 記事数分のリストを追加する(行列に1行追加) list_count[i][list_words.index(word)] = int(list_articles[i][j][col+1:]) # 何記事目かを行、何の単語かを列として単語数を代入 print(word) list_count[i][list_words.index(word)] = int(list_articles[i][j][col+1:]) ここでIndex out of rangeが出ます。print(word)で途中まで出力されるので、エラーが起きながら動いていたのか、途中でエラーが起きて止まったのかもわかりません。 色付きのプログラムを写真に添付します。 かなり時間をかけて考えたのですが、理解できなかったので質問させていただきました。 よろしくお願いします。

  • Pythonでリストの要素の順番を入れ替え、結合したい

    Pythonでリストの要素の順番を入れ替え、結合したい 以下のようなリスト(入力list)があります。"1"もしくは"2"が出てきたら、それぞれ次の要素と順番を入れ替え、かつ1つの要素に結合するスクリプトを書きたいのですが、案はありますでしょうか。以下の出力listのような出力を望んでいます。 入力 list=['a', 'b', '1', 'c', 'd', 'e', '2', 'f', '2', 'g'] 出力 list=['a', 'b', 'c1', 'd', 'e', 'f2', 'g2'] 1や2が出てくる回数はリストにより異なり、また1より2の方が先に出てくる場合もあります。またリストによっては1がない場合、2がない場合もあります。(ただし '1', '2' のように1と2が連続で出てくることはありません。かならず間に別の要素が入ります) indexを使って要素の順番の入れ替えはできるようなのですが、最初に出てきたものしかとらえないので、例えば上の例でいうと2,gがg2に変換されません。また結合もできていませんが、indexを使った入れ替え方法を一応以下に記しておきます: i=list.index("1") j=list.index("2") list[i],list[i+1]=list[i+1],list[i] list[j],list[j+1]=list[j+1],list[j] とすると、出力リストは['a', 'b', 'c', '1', 'd', 'e', 'f', '2', '2', 'g']となります。 (最後のg2が変換できていない。また結合もできていない) Python初心者です。よろしくお願いします。

  • python超初心者です(3時間目)。pythonで以下のようなランダ

    python超初心者です(3時間目)。pythonで以下のようなランダム数列を生成させるにはどうしたらいいのでしょうか? 最終結果のイメージ(16進数8桁の数列x20行): 0 : c39a29eb 1 : b26cc9bb 2 : 4c494e47 ... 19: 93c85836 以下のようにコードを組んでみたのですが、 > tmp = ws.join(list) > TypeError: sequence item 0: expected string, int found のようなエラーが出てしまいます。どうやら数字を連結しようとしてるのでダメなのかな?と思っています。 ======================================== #! /usr/bin/python import random list = [] ws = "" for i in range (20): print i, ":", for j in range(8): list.append(random.randint(0,15)) tmp = ws.join(list) print tmp list = [] tmp = "" ======================================== ※ printでは必ずスペースが入ってしまうので、それを嫌う場合配列に入れて、要素を連結させなくてはならない、とwebにあったので、その方向で試してみました。 ※ また、ここではあくまでrandom を使用し、一文字(0,1,2,...E,F)づつ出力させたいと思っています。 なお、perlでは以下のように書くことができたのですが... ======================================== #! /usr/bin/perl for($i=0; $i<20; $i++){ printf ("%-02s: ", $i); for($j=0; $j<8; $j++){ printf("%x", int(rand(15)) ); } print "\n"; } ======================================== ※ んー第二言語としてpythonを学習してみていますが道のり険しそうです(やっぱrubyにしようか)... 宜しくお願い致します。

  • pythonのメゾッドの整合性について

    こんばんは。 pythonを勉強し始めましたが理解できない部分があって質問させて頂きます。 プログラム、特にオブジェクト指向をまだよく理解していないのである程度初心者向けの回答をお願いします。 pythonにおいて文字列はオブジェクトであり、 >>> strA = "python" >>> print (strA) python >>> print (strA.upper()) PYTHON >>> print (strA) python のように使われるメゾッドが存在しています。 これはオブジェクト自体を変化させるのではなく、今回の場合ではオブジェクトがupper()されたオブジェクトを返しています(まちがっていませんよね?)。 そのため、strA自体を変化させるには >>> strA = strA.upper() >>> print (strA) PYTHON のようにする必要があると理解していました。 ここで新しいオブジェクトlistを用いた時 >>> tl = ['A','B','C','D','E','F'] >>> print (tl) ['A', 'B', 'C', 'D', 'E', 'F'] >>> print(tl.reverse()) None >>> print(tl) ['F', 'E', 'D', 'C', 'B', 'A'] >>> listA.reverse() となります。文字列から類推すると >>>tl = ['A','B','C','D','E','F'] >>>print (tl.reserve()) ['F', 'E', 'D', 'C', 'B', 'A'] >>>print(tl) ['A','B','C','D','E','F'] >>>tl =tl.reserve() >>>print (tl) ['F', 'E', 'D', 'C', 'B', 'A'] のような振る舞い方を行うのが"正しい"と思うのですがなぜ違うのでしょうか?

  • 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の勉強しています。練習として以下の様なコードを書きました。 #!/usr/bin/python # coding=utf-8 f = open('aw1.txt' 'r') for row in f: line_data = row.split(' ') print(line_data(1)) f.close() aw1.txtというファイルは自分でviで作成しました。 このpythonスクリプトを実行すると IOError: [Errno 2] No such file or directory: 'aw1.txtr' というエラーになってしまいます。 でも f = open('aw1.txt' 'r') と書いて なぜ 'aw1.txtr'というファイルがないというエラーとなるのかがわかりません。 どこが間違っているのでしょうか? どなたか教えていただけないでしょうか?

  • 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のインデントがなくなってしまうようです。)

専門家に質問してみよう