X



くだすれPython(超初心者用) その34 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2017/05/28(日) 20:34:15.87ID:7AoJbiyO
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで

前スレ
くだすれPython(超初心者用) その33
http://echo.2ch.net/test/read.cgi/tech/1490424742/
0003デフォルトの名無しさん
垢版 |
2017/05/28(日) 20:35:27.98ID:7AoJbiyO
関連スレ
Pythonのお勉強 Part53
http://echo.2ch.net/test/read.cgi/tech/1494683284/
◆関連リンク Python の Home Page
ttp://www.python.org/
◆長いコードはこういうところにはってください
ttp://ideone.com/
ttp://codepad.org/
ttp://pastebin.com/
ttp://dpaste.com/
ttps://try.jupyter.org/
◆まとめwiki
ttp://python.rdy.jp/

ネットにはデマ情報がいっぱい残ってるので正しい情報をメモ
cmd で UTF-8 使える方法 (chcp 65001 について) ttp://nazochu.blogspot.jp/2011/08/blog-post_26.html
mintty ttp://dogmap.jp/2011/11/15/mintty/
mintty ttp://tanakh.jp/posts/2011-11-15-windows-terminal.html

色々紆余曲折あったけど Git インスコして GitBash 使うのが一番楽っぽい
https://git-for-windows.github.io/
0004デフォルトの名無しさん
垢版 |
2017/05/28(日) 20:40:30.00ID:7AoJbiyO
関連スレ

Matplotlib でグラフプログラミング【Python】
http://echo.2ch.net/test/read.cgi/tech/1256385982/
ディープラーニング
http://echo.2ch.net/test/read.cgi/tech/1457792560/(DAT落ち)
人工知能ディープラーニング機械学習のための数学
http://echo.2ch.net/test/read.cgi/tech/1482808144/
【統計分析】機械学習・データマイニング15
http://echo.2ch.net/test/read.cgi/tech/1492344216/

【Python】Python Webフレームワーク総合スレ
http://tamae.2ch.net/test/read.cgi/php/1329996601/
【Python】TurboGearsスレ Part 1【Framework】
http://tamae.2ch.net/test/read.cgi/php/1176022606/
Google App Engine for Python 6アプ目
http://tamae.2ch.net/test/read.cgi/php/1358570953/
Python CGI
http://tamae.2ch.net/test/read.cgi/php/1163513344/
0005デフォルトの名無しさん
垢版 |
2017/05/29(月) 13:26:13.77ID:gnWdEBVU
5年以上前の過去ログへのレスですw

http://toro.2ch.net/test/read.cgi/tech/1322115727/
> 113 :デフォルトの名無しさん:2011/12/07(水) 15:17:31.93
> ある本に書いてあったのですが、
> from math import sqrt
> psqrt(pow(4.5-4.2,2)+pow(1-1,2))
> のようにすると、
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> NameError: name 'psqrt' is not defined
> のようなエラーが出ます
> これはどのようにすればいいのでしょうか?

この書籍はオライリーの『集合知プログラミング』(初版)だと思われますが、
同じエラーを経験しましたが、これは見ての通り
文脈からしてpsqrtをsqrtに直せばいいだけだと思いますが、
そもそもpow関数の引数に入れる値が間違っているようです。
この書籍の正誤表がネット上にあります。
https://sites.google.com/site/prgclctintelligence/errata
この正誤表の訂正前の記述もこの初版とは異なりますので要注意。
0006デフォルトの名無しさん
垢版 |
2017/05/29(月) 22:29:35.86ID:5gJ1PeLc
条件がTrueの時はABC、条件がFalseのときはBCのように
(A)BCの(A)の部分を条件で追加したいのですが


test = [['あいうえお', 'アイウエオ', 'ア'], ['かきくけこ', 'カキクケコ', ''],
['さしすせそ', 'サシスセソ', 'サ'], ['たちつてと', 'タチツテト', '']]

result = []

for i in test:

x = ''

if i[2]:
x += '【{0[2]}】\n'.format(i)

result.append(x + '{0[0]}\n{0[1]}'.format(i))

print('\n\n'.join(result))

これを内包表記で作成したいのですが

result = ['【{0[2]}】\n{0[0]}\n{0[1]}'.format(i) if i[2] else '{0[0]}\n{0[1]}'.format(i) for i in test]

条件でformatを切り替える以外に方法ありますでしょうか?
0007デフォルトの名無しさん
垢版 |
2017/05/30(火) 10:49:29.89ID:gxWnkgCC
おまえ向いてない
0008デフォルトの名無しさん
垢版 |
2017/05/30(火) 10:59:08.01ID:ItunGfv1
>>6
result = ['\n'.join(( '【' + i[2] + '】', i[0], i[1])) if i[2] else '\n'.join((i[0], i[1])) for i in test]
print('\n\n'.join(result))
0009デフォルトの名無しさん
垢版 |
2017/05/30(火) 11:14:07.76ID:C9qHY4kc
>>7
最終的な目的がわからんのだが、他の方法でやりたい理由は?
単にスマートに書きたいってだけ?
0011デフォルトの名無しさん
垢版 |
2017/05/30(火) 11:46:52.81ID:ItunGfv1
>>6
def trans(s):
if s[2]: return '【' + s[2] + '】', s[0], s[1]
return s[0], s[1]

result = ['\n'.join(trans(i)) for i in test]
print(*result, sep='\n\n')
0012デフォルトの名無しさん
垢版 |
2017/05/30(火) 14:23:14.01ID:6yum6/wf
>>8,11
ありがとうございます。
参考にさせていただきます。

>>9
条件で文字を表示あり・なしみたいなのができたらいいなと思って

最初に内包表記で作ったのが
result = ['【{0[2]}】\n'.format(i) if i[2] else '' + '{0[0]}\n{0[1]}'.format(i) for i in test]
うまくいかなくて

いま試しにかっこつけてみたら思った通りになったんだけどかっこって大丈夫なのか?
result = [('【{0[2]}】\n'.format(i) if i[2] else '') + '{0[0]}\n{0[1]}'.format(i) for i in test]
0013デフォルトの名無しさん
垢版 |
2017/05/30(火) 14:30:48.01ID:6yum6/wf
リストにしなくてもこれでいけそう

flag = True
test = 'あいうえお' + ('かきくけこ' if flag else '') + 'さしすせそ'
print(test)


どうもありがとうございました。
0014デフォルトの名無しさん
垢版 |
2017/05/30(火) 15:33:34.98ID:C9qHY4kc
そこにこそformat()だろ。
test ='あいうえお{}さしすせそ' .format('かきくけこ' if flag else '')
0017age
垢版 |
2017/05/30(火) 18:54:13.25ID:cPI0fzDZ
実行完了後に端末を閉じたい
exit()で終了すると思ったのですが終了しませんでした。

https://ideone.com/wTEMeN
0018age
垢版 |
2017/05/30(火) 20:36:57.55ID:cPI0fzDZ
どなたか、解決法を知りませんか?
0020age
垢版 |
2017/05/30(火) 21:14:57.92ID:cPI0fzDZ
そこを何とかお願いします

最初の1秒の間にエンター押したら起動後に消えてくれます
0022デフォルトの名無しさん
垢版 |
2017/05/30(火) 21:30:38.96ID:sm3ZD28q
>17
tesut
じゃなくて、
test
って書いてほしい。
import os
import signal
input("hit Enter to close the console")
is.kill(os.getppid(), signal.SIG_DFL)
これでターミナル閉じたよ。wundows
0026デフォルトの名無しさん
垢版 |
2017/05/30(火) 22:43:31.29ID:f/2fyGyA
d を辞書としたとき、

for k in d.keys():



for k in d:

は等価ですか?

等価だとして、どちらが早いですか?
0028デフォルトの名無しさん
垢版 |
2017/05/30(火) 22:53:39.93ID:kWERrntF
>>26
dからkeysを探して呼び出す手間が入るから等価ではない、速度差は上にも書いてある通り誤差だろうが
0029デフォルトの名無しさん
垢版 |
2017/05/30(火) 23:03:14.12ID:WkZkNXY5
>26
disっていう標準モジュールで、バイトコードを逆アセンブルした結果を見れるよ。
既に指摘のある通り、
d.keys()だと
LOAD_ATTR
CALL_FUNCTION
が余計に入る。
実行時間は、誤差の範囲と思う。
0031デフォルトの名無しさん
垢版 |
2017/05/30(火) 23:28:27.47ID:f/2fyGyA
D1, D2 は集合。
D = (D1, D2) は M のインスタンス変数。
d は辞書で、 M のインスタンス変数。

for r in M.D[0]:
■■for c in M.D[1]:
■■■■if (r, c) in M.d:

というようなコードを↓のようなコードに置き換えると、
for ループのループ回数が多いとき、少しは速くなる
でしょうか?

ケースバイケースだとは思いますが、↓のような方法で
少しは速くしようなどと考える人はあまりいないでしょうか?


D1 = M.D[0]
D2 = M.D[1]
M_d = M.d
for r in D1:
■■for c in D2:
■■■■if (r, c) in M_d:
0034デフォルトの名無しさん
垢版 |
2017/05/30(火) 23:36:14.34ID:f/2fyGyA
>>32

ありがとうございます。
調べてみます。

>>33

実際に計算して計算時間を計るというのは思いつきませんでした。
やってみます。
0039デフォルトの名無しさん
垢版 |
2017/05/31(水) 00:19:23.90ID:eDo7CzNQ
>>37

なるほど、そうでしたか。
ありがとうございました。

内側の for 文の in の後の集合は毎回評価されるのかと思っていました。
0040デフォルトの名無しさん
垢版 |
2017/05/31(水) 00:21:53.01ID:eDo7CzNQ
あ、でもやっぱり B は毎回評価されるような気がします。
例えば、↓のようなコードを考えると B は毎回評価されないとダメな気がします。

for i in A:
→ここで B を変更する
■■for j in B:
0042デフォルトの名無しさん
垢版 |
2017/05/31(水) 01:50:21.04ID:jDvWEkkq
何十万回もループを回すような場合だと、ローカル変数への割当は、数十ミリから数百ミリ秒の高速化になった記憶がある。

あと、ネストしたリストへのアクセスは遅いので、
a[m][n]に二重ループでアクセスする時は、
am=a[m]
と1つめのループの中でしておいてから、
二つ目のループの中では、
am[n]としてアクセスした方が、速くなる。
これは、ループが1000回くらいでも、ミリ秒単位でちゃんと差が出る。
もちろん、index使ってのアクセスよりも、
for elem in lst:
としてイテレータ使う方が速い。

profiler使うと、関数単位でどこに時間が、かかっているか分かるので、オススメ。
SpyderとかのIDEに組み込んであるのが使いやすいと思う。

高速化に興味があるなら、ハイパフォーマンスPythonっていう本がオライリーから出てるから、参考にしてみては?
0043デフォルトの名無しさん
垢版 |
2017/05/31(水) 08:01:32.80ID:k6UVBo1S
パフォーマンスよりpythonらしい書き方かどうかを気にすべき
0044age
垢版 |
2017/05/31(水) 11:32:43.74ID:u7MalF/7
>>22
どうやら僕の環境では無理な用です
Geany1.27 F5起動 python3.5.2

返信遅れました
ありがとうです(気持ちだけ)
0045デフォルトの名無しさん
垢版 |
2017/05/31(水) 11:36:28.46ID:AV1cHHAT
>>17-23
プロセスには親子関係がある。
端末からPythonを起動すれば、親は端末で、子はPython

親を終了すれば、子も強制終了されるから、正常な終了ができない。
メモリ上にあるデータが、保存されないかも

普通サーバーなどは、デーモン化して、親プロセスをなくす。
そうすれば、親が終了しても、無関係だから安全
0046デフォルトの名無しさん
垢版 |
2017/05/31(水) 13:02:32.85ID:8pr90v8J
for a in [1,2,3,4,5]:
[tab]print(a) ←インデントする
print("こんにちわ") ←インデントしない

「python入門教室」のサンプルでこんなコードがあって、
インデントしない部分は繰り返されませんよみたいなことを教えたいようなのだ
普通にこんにちわを続けてインデントしなかったせいで
SyntaxError: invalid syntax って出て実行できないんだが。

これって本がおかしいですよね?
ちなみにコマンドプロンプトでやってます
0047デフォルトの名無しさん
垢版 |
2017/05/31(水) 13:48:49.94ID:gBIsA548
>>46
たぶん対話シェルへの入力としては間違っているという話ではないかと
インデント潰れるけど対話シェルのプロンプトを再現するとこういうことだよね?
>>> for a in [1,2,3,4,5]:
... print(a)
... print("こんにちわ") # ...(二次プロンプト)の部分にインデントを下げて入力した
File "<stdin>", line 3
print("こんにちわ")
^
SyntaxError: invalid syntax
>>>

print("こんにちは")はfor文とは独立した文だから>>>の行に入力しないとエラー
対話シェルの仕様による制限なので(pythonの構文としては間違ってない)本の説明不足かなあ
これwebのドキュメントにも詳しくは載ってないな、分かりにくいね
https://docs.python.jp/3/tutorial/interpreter.html
0048デフォルトの名無しさん
垢版 |
2017/05/31(水) 14:01:00.73ID:8pr90v8J
>>47
ありがとうございます。
本だと、こんにちわをfor文に組み込んだら

1
2
3
4
5
こんにちわ

みたいな結果が出ると書かれてました。

わかりづらいので該当部分載せます
http://i.imgur.com/V46Hrjy.jpg
http://i.imgur.com/xzyC4jE.jpg
0049デフォルトの名無しさん
垢版 |
2017/05/31(水) 14:08:38.39ID:8pr90v8J
もしかして、メモ帳から作成したファイルなら実行できるとかですか?
0050デフォルトの名無しさん
垢版 |
2017/05/31(水) 14:20:04.68ID:gBIsA548
>>49
(メモ帳がpythonに適しているかは疑問だけど)できます
ページの上のほうにexample-04-03-01.pyとファイル名が書かれてるので
スクリプトファイルの編集&実行を前提にした(not対話シェル)項目っぽい
0052デフォルトの名無しさん
垢版 |
2017/05/31(水) 14:21:40.07ID:AV1cHHAT
メモ帳は、プログラミングに使えない

メモ帳で保存したテキストには、
BOM(Byte Order Mark)という余計なデータが付くから、正常に実行できない

TeraPad など、他のエディタを使うべき
0053デフォルトの名無しさん
垢版 |
2017/05/31(水) 14:25:41.25ID:2JRCyRNh
>>49
他の人も書いてくれているが、
普通はメモ帳じゃなくてIDEやエディタを用意する。
python エディタでぐぐるといい。
0054デフォルトの名無しさん
垢版 |
2017/05/31(水) 14:27:57.89ID:8pr90v8J
>>51
この本、最初のほう飛ばし読みして分かったのですが、すべてIDLEで学習していく本みたいです・・・。
しかし、IDLEでも結果はエラーになりました・・・。

>>> # coding:utf-8
>>> for a in [1,2,3,4,5]:
print(a)
print("こんにちは")
SyntaxError: invalid syntax
0055デフォルトの名無しさん
垢版 |
2017/05/31(水) 14:35:41.32ID:2JRCyRNh
>>54
ちゃんと人のレス読んでるのか?
>>51
>入力の完了を示すために最後に空行を続けなければなりません。

>すべてIDLEで学習していく本
>>48の画像に「example04-03-01.py」とか書いてあるからそれは無いだろ。
ちゃんと1ページづつ追って読んでいけ。
0056デフォルトの名無しさん
垢版 |
2017/05/31(水) 14:38:09.83ID:5PA7tv0u
>>54
IDLEのshellじゃなくてFile→New Fileでエディタ起動してコード書き込んで保存してF5押せばいい
0057デフォルトの名無しさん
垢版 |
2017/05/31(水) 14:45:30.56ID:8pr90v8J
>>55
エンター押しても空行になりませんでした...
0058デフォルトの名無しさん
垢版 |
2017/05/31(水) 14:46:44.92ID:8pr90v8J
そもそもコマンドプロンプトで出来ないコーディングとシェルでしか出来ないコーディングがある時点でパンクしそう..
0059デフォルトの名無しさん
垢版 |
2017/05/31(水) 14:50:17.67ID:8pr90v8J
>>56
EmEditerでやったら同じソースなのに今度はユニコードエラーが発生
もうわけわからない...
0060デフォルトの名無しさん
垢版 |
2017/05/31(水) 14:58:15.81ID:8pr90v8J
あ、new fileでやったら動きました
ありがとうございました...
失礼しました
0063デフォルトの名無しさん
垢版 |
2017/05/31(水) 15:05:56.71ID:2JRCyRNh
>>57
エンターを押した時点でforループが実行(完了)される。
>>> for a in [1,2,3,4,5]:
... print(a)
...
1
2
3
4
5
>>> print("こんにちは")
こんにちは

プログラミングやるならエディタで作成したファイルの文字コードは認識しとかなきゃダメ。
とりあえずUTF-8選んどけ。
0064デフォルトの名無しさん
垢版 |
2017/05/31(水) 15:11:52.54ID:u7MalF/7
ってか、>> ID 8pr90v8J は
Android 5.0(Lollipop)を搭載したNexus 5
使ってるのか……。
0065デフォルトの名無しさん
垢版 |
2017/05/31(水) 15:13:03.12ID:8pr90v8J
>>63
emEditerのユニコードはshift-jisで動きました。

あとemEditerもIDLEも、空行なしでも動きました。
0066デフォルトの名無しさん
垢版 |
2017/05/31(水) 15:23:34.95ID:u7MalF/7
バージョンアップしてたらAndroid™ 6.0か……
どちらにしろ誤爆なので、見なかった事にして下さい
0068デフォルトの名無しさん
垢版 |
2017/05/31(水) 15:37:59.34ID:u7MalF/7
お前、流石にその(画像は)引くわぁ〜
音楽もアニソンばかりだし、せめて水樹の曲入れるなら、田村の曲ももっと入れとけよ
花澤の再生回数だけ異様に多いな
0070デフォルトの名無しさん
垢版 |
2017/05/31(水) 16:00:47.64ID:nBc8lPEG
もうどこの誤爆か書いてけや
0071デフォルトの名無しさん
垢版 |
2017/05/31(水) 16:36:23.41ID:FdBBH6qG
オライリーのpython入門 不親切すぎる・・・
0072デフォルトの名無しさん
垢版 |
2017/05/31(水) 17:28:49.67ID:u7MalF/7
誤爆
携帯の解像度から機種を特定→別スレから大学生と推測→携帯の販売時期を検索
→大学3〜4年と推測→ちょうど、nexus7 2012の修理方法を調べてた
→正規復元方法を試す→不可→バッテリー交換しても電源が入らない→充電口の破損を確認→スイッチの異常か
基盤の異常かどちらか迷ってる→強い衝撃を与えたと聴いてる→どこスレで聞くか迷ってる間にアニソンすれに書き込み
かと、思ったが、まさかのアニソンスレと誤爆
0073デフォルトの名無しさん
垢版 |
2017/05/31(水) 17:30:09.80ID:u7MalF/7
最後の文はpythonスレです
0075デフォルトの名無しさん
垢版 |
2017/05/31(水) 18:54:55.13ID:5+rNqd0l
プロジェクトごとにパッケージ分離したくてvenv使うとこまでは分かったんだけど
どういう名前でどこに置くのが一般的?
みんなプロジェクトのルートに「env」とかでおいてるんですかね
0076デフォルトの名無しさん
垢版 |
2017/05/31(水) 19:45:41.57ID:Qo+ozR8I
l がリストのとき、

if e in l:

を多用すると極端に遅くなるんですけど、もしかして、線形探索して探していますか?

s = set(l)

if e in s:

としたほうが速いですか?

もしそうだとすると、自動的に

if e in l:

と書いたとき、 l を集合に変換して検索してくれればいいのにと思うのですが。
0077デフォルトの名無しさん
垢版 |
2017/05/31(水) 20:27:26.92ID:k6UVBo1S
>>76
listをいちいちsetに変換したら、単純に線形探索するより時間がかかるからね。
最初からsetで持っておけば?
0078デフォルトの名無しさん
垢版 |
2017/05/31(水) 20:32:07.45ID:u7MalF/7
setは順序を保持しないから、テストケースで失敗する事も有る
最後に結果をソートしても良いなら、気にしなくて良いんだけど……。
0079デフォルトの名無しさん
垢版 |
2017/05/31(水) 20:36:26.64ID:ac0fXejp
>>78
順序を保持しないコンテナのテストで順序をテストしようとしてるのがそもそもの間違い
素直にソートしれ
0082デフォルトの名無しさん
垢版 |
2017/05/31(水) 20:50:41.20ID:gBIsA548
>>76
listはハッシュ値を返せないオブジェクトも入れられるので集合変換の条件満たせない
検索重視ならOrderedDictがいいんじゃない?(それかサードパーティ製のorderedsetとか)
0083デフォルトの名無しさん
垢版 |
2017/05/31(水) 20:59:15.81ID:ac0fXejp
>>82
OrderedDictをどうやって使うつもりや?言うてみい?
0086デフォルトの名無しさん
垢版 |
2017/05/31(水) 22:13:59.97ID:Qo+ozR8I
Philip N. Kleinの『行列プログラマー』を読んでいて、はまっています。

M は行列を表わすクラスのインスタンスです。

M.D == (M.D[0], M.D[1])

M.D[0] は行列 M の行のインデックスです。
M.D[1] は行列 M の列のインデックスです。

M[i, j] で行 i、列 j の要素にアクセスできます。
0087デフォルトの名無しさん
垢版 |
2017/05/31(水) 22:17:31.36ID:Qo+ozR8I
M.D[0] == M.D[1] で、行列 M は対称行列です。

↓の二つのプログラムは、同じ動作をすると思ったのですが、
(1)は正しく動作せず、(2)は正しく動作します。
なぜだかさっぱり分かりません。なぜ(1)と(2)で異なる動作をするのでしょうか?

(1)
S = set()
for i in M.D[0]:
■■for j in M.D[1]:
■■■■if i == j:
■■■■■■continue
■■■■elif i > j:
■■■■■■t = i
■■■■■■i = j
■■■■■■j = t
■■■■S.add(((i, j), M[i, j]))
L = list(S)
L = sorted(L, key=lambda e: e[1])

(2)
S = set()
for i in M.D[0]:
■■for j in M.D[1]:
■■■■if i == j:
■■■■■■continue
■■■■elif i > j:
■■■■■■S.add(((j, i), M[i, j]))
■■■■else:
■■■■■■S.add(((i, j), M[i, j]))
L = list(S)
L = sorted(L, key=lambda e: e[1])
0089デフォルトの名無しさん
垢版 |
2017/05/31(水) 22:38:26.58ID:u7MalF/7
最後のelse文で i > j で無い。から
0090デフォルトの名無しさん
垢版 |
2017/05/31(水) 22:39:42.54ID:Qo+ozR8I
ループ変数の値をループ内で変更するとまずいとかそういうことはありますか?
0091デフォルトの名無しさん
垢版 |
2017/05/31(水) 22:48:01.11ID:Qo+ozR8I
もっと問題をシンプルにしてみましたが、やはり理解できない現象が
発生します。

なぜか(1)と(2)で結果が違います。これは同じになりそうですが。。。

(1)
S1 = {1, 2, 3}
S2 = {1, 2, 3}
for i in S1:
■■for j in S2:
■■■■t = i
■■■■i = j
■■■■j = t
■■■■print((j, i))

(2)
S1 = {1, 2, 3}
S2 = {1, 2, 3}
for i in S1:
■■for j in S2:
■■■■print((i, j))
0092デフォルトの名無しさん
垢版 |
2017/05/31(水) 22:49:02.56ID:Qo+ozR8I
(1)の結果:

(1, 1)
(1, 2)
(2, 3)
(2, 1)
(1, 2)
(2, 3)
(3, 1)
(1, 2)
(2, 3)

(2)の結果:
(1, 1)
(1, 2)
(1, 3)
(2, 1)
(2, 2)
(2, 3)
(3, 1)
(3, 2)
(3, 3)
0096デフォルトの名無しさん
垢版 |
2017/06/01(木) 00:30:17.24ID:25B895iy
pyautoguiを使った作業の自動化について教えてください。
以下の作業の自動化を試みています。

1.あるアプリケーションでファイルを読み込み、処理を行う
→2.(処理を終えるまで待つ)
→3.次のファイルで同じことをする(以下繰り返し)

2.の段階では現状、ファイルのサイズに合わせてsleep関数で調整していますが、
それだと、ちょっとした処理の遅れでタイミングが狂ってしまい、
以降の動作がうまくいかなくなる問題があります。

処理が終わって「クリックやキーボードなど、操作できるようになったよ」という
状態を認識する方法ってありますか。
0098デフォルトの名無しさん
垢版 |
2017/06/01(木) 00:57:54.21ID:L3uS1u+Y
解決法としては、どんな(余分な)処理をしても、あり余るsleep時間を設けてループさせる
処理終了後に画像やメッセージを呼び出して、認識させてから次に移る(フラグの受け渡しとか?)

どんな処理か具体的に上げてくれないと解らない
0099デフォルトの名無しさん
垢版 |
2017/06/01(木) 01:49:46.26ID:25B895iy
>>98
処理の内容は、ほとんど上記に書いた程度です。
音源から指定周波数の音を抽出するアプリがあり、
アプリ上のあるボタンをクリックすることで変換作業が行われます。
そこで新たに変換後ファイルが生成され、同時に10秒ほど処理待ちでフリーズ?して、
操作可能になったら次のファイルへ移ります。

>処理終了後に画像やメッセージを呼び出して、認識させてから次に移る(フラグの受け渡しとか?)

こういう方法ができればいいとは思ってます。
sleepで稼ぐのは必要以上に時間もかかるし、確実ではないので・・・。

「フラグの受け渡し」というのは、例えばどんな処理なのでしょうか。
サンプルコードとかってありませんか。
0100デフォルトの名無しさん
垢版 |
2017/06/01(木) 06:11:10.07ID:iY3v6x4R
わっちょい注意報
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況