質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.40%

  • Python

    12795questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

python 実行されるが永遠に終わらない

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 171

konda

score 13

# -*- coding: utf-8 -*-
import sys, csv, operator
import pandas as pd

#mycsv = csv.reader(open('analyze2.csv'),delimiter=',')
df = pd.read_csv('analyze2.csv',header=None)

for i in range(0,66999):
    value = df.iloc[i,0]#i行目の左列の取得
    print('#print0',i)
    print('#print1',value)
    if value == 1:
        method1 = df.iloc[i,1] #i行目の中央列の取得
        c = 1
        method2 = df.iloc[i+c,1] #i+c中央列の取得
        while(method1 != method2):
            c += 1
            method2 = df.iloc[i+c,1] #i+c行目の中央列の取得
            print('#print2')
        print('#print3',c)
        co = df.iloc[i+c]  #i+c行目だけを取得
        print('#print4')
        redf = pd.concat([df[0:i],co]) #結合(dfデータの0からi行目まで+取得した行列)
        df = pd.concat([redf,df[i+1:66999]]) #結合(redf+dfデータのi+1行目から最後の66999行目まで)
        df.drop(i+c+1) #i+c+1行目のデータをnewdfから削除

    else:
        continue
    print('#print5')


出力内容は以下の様になりました。(途中まで)
2回目と3回目のprint1の出力箇所が中央列と右列の表示なっているのが問題です。value1は左列しか表示しない様にしていたのですが...

#print0 0
#print1 1
#print3 1
#print4
#print5
#print0 1
#print1 convert orig/00000002.png -crop 1280x600+0+0 crop/00000002.png
#print0 2
#print1 1558070265.8343878
#print0 3
#print1 2
#print0 4
#print1 1
#print3 1
#print4
#print5
#print0 5
#print1 convert orig/00000001.png -crop 1280x600+0+0 crop/00000001.png
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

とりあえずですが、書き込みでうまくいかないようであれば、そのままstdoutに吐き出させてください。

python3 sort.py

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/21 11:24

    >修正確認しました。あー、なるほど、continueされたときにprint('#print1',value)が連続するんですね。納得。その状態で「何も出てこない状態になったまま実行が継続する」という理解でいいですか?

    print出力はされ流様になったのですがですが、実行が永遠に終わらないという状態です。
    そして、print1でvalueが出力されるのは左列(1か2の値)のはずなのですが、2回目のprint1で中央列(convert orig/00000002.png -crop 1280x600+0+0 crop/00000002.png)、3回目で右列(1558070265.8343878)が表示されているのも問題になっています。

    キャンセル

  • 2019/05/21 11:38

    途中で止まる問題が解決したのでしたら、一旦こちらの質問は解決済みとして、改めて質問を立て直していただけないでしょうか。
    意図と違う動作になっている、というのはまた別の問題ですし、解決するためにはそもそも何をするプログラムなのか説明していただく必要があるかもしれません。私が対応できる保証もありません。整理して別の質問にした方が良いです。

    キャンセル

  • 2019/05/21 11:39

    分かりました。
    ご指摘ありがとうございます。

    キャンセル

0

whileの世界で永遠に暮らしているのじゃないでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/21 02:30 編集

    そのままターミナルに出力されたらprintの内容が出力されました。

    1
    a
    goal
    2
    1
    a
    goal
    2
    1
    a
    goal
    2
    1
    a
    goal
    2
    1
    a
    goal
    2
    1
    a
    goal
    2
    1
    a
    goal
    2
    1
    a
    goal
    2
    1
    a
    goal
    2
    1
    a

    以上の様な出力がされたので、10回目のforのループがおかしいのかなと思っています。

    キャンセル

  • 2019/05/21 02:46

    貼ってるコードそのまま実行したら少なくともwhileの中のprintが続くか、forが終わるまでwhileの外のprintが続きそうなもんですが、間違いなくここに貼ってあるコードをそのまま実行したんですか?
    CSVの10行目だけ除去したら動きますか?

    キャンセル

  • 2019/05/21 11:28

    >貼ってるコードそのまま実行したら少なくともwhileの中のprintが続くか、forが終わるまでwhileの外のprintが続きそうなもんですが、間違いなくここに貼ってあるコードをそのまま実行したんですか?
    CSVの10行目だけ除去したら動きますか?

    貼ってあるコード確実に実行しました。
    質問文、編集したのでご確認いただけると幸いです。print出力の件は解決しました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.40%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Python

    12795questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。