くだすれPython(超初心者用) その52【まず1嫁】
レス数が1000を超えています。これ以上書き込みはできません。
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがあるのでそっち池。
「Ruby」「某言語では」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。
このスレッドは「お勉強」スレのほうには書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。
★エラーを解決したい場合は、
表示されてるエラー全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
実行環境(Pythonのバージョン・OSとIDEの種類とバージョン)をシッカリ書くこと。
【【【複数の連続半角スペースはなかったことになる・タブがうまく入らない5chの仕様】】】に注意!
Pythonの★ソースコードをそのまま5ちゃんにコピペすると、インデントが崩れてチヌ★ので
↓等の、いわゆるコードうp用サイトに貼ってこいください。
ttps://techiedelight.com/compiler/ Run Code機能あり。
ttp://ideone.com/ デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/ まずまずシンプル。
ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
◇Python公式サイト◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi
〇前スレ〇 くだすれPython(超初心者用) その51【まず1嫁】
https://mevius.5ch.net/test/read.cgi/tech/1602896738/
次スレは >>985 あたりが挑戦してくだしあ。(980過ぎて自動落ちは、無くなって久しい)
### END OF TEMPLATE ### 文字列の分割について質問です
以下のコードで、最初と最後の空文字列を取って表示する方法はないでしょうか?
https://paiza.io/projects/ar6X8-2ECCzq2wtbKmhSiA
pop()を使えばできますが、事前に表示させないようにする方法はないでしょうか? [x for x in msg.split() if len(x) > 0] >>4
>>5
参考になりました
ありがとうございました >>6
すいません、書き込んでる途中でした
ありがとうございました if文の判定で関数を使うときにその関数結果をIF分の中で使用するのですがスマートな書き方はありますでしょうか
以下のように毎回関数ABを先実行して変数に格納するように工夫してみたのですがちょっと無駄が多いかなと。。
if 関数A is not None:
cv2.imshow(関数A , img)
elif 関数B is not None:
cv2.imshow(関数B , img)
※関数Aは2回実行される
↓
kansu_Afile = 関数A
kansu_Bfile = 関数B
if kansu_Afile is not None:
cv2.imshow(kansu_Afile , img)
elif kansu_Bfile is not None:
cv2.imshow(kansu_Bfile , img)
※最初に関数ABが実行される root.titleで指定してもウィンドウは開くけど開いた窓にタイトルがつかないのは何故ですか? >>12さん
ありがとございます。代入式というのがあるのですね
教えてもらった内容でうごきました >>13
e.s.p.してみる
失敗する方 root.title = u'abc'
成功する方 root.title(u'abc')
但し root.title = u'abc' してしまったあとに root.title(u'abc') しようとしても関数が無いと言われるだろうな 先日初めてプログラミング言語を勉強し始めた初心者の者なのですがpipがダウンロード出来ずに困ってます
ネット色々と調べget-pip.pyというものをダウンロードしてコマンドプロントからダウンロードしてみたり環境変数から色々と触ってみたりはしていますがどれも全く上手くいきません
どなたか分かる方はいらっしゃいますでしょうか? python -m pip install hogehoge 無駄でした
そもそも上でも書いてある通りpipがダウンロードされていないみたいなのでそれが出来ずに困ってます WindowsならマイクロソフトストアからPythonインストールするのが楽だと思う >>15
ありがとうございます。
いろいろ試してみたらChromebookの仮想環境だとなぜかタイトルがでなくてWindowsマシンだとちゃんとでるようです。
vscode使用tkinterは8.6のようです すみませんお騒がせしました。
ほかの標準ではいってるようなアプリもウィンドウタイトルでてないので多分Chromebook側の仕様ということで自己解決しました リネーム処理はpowershellとpythonどちらがいいのでしょうか?
フォルダの先頭ファイルをフォルダ名としたいですが、powershellはマイナー言語なんでしょうか?あん 書きやすい方でいいのでは?あん
Pyhonにもpathlibを使えばパスの扱いは困らない >>22
Python使った方がまちがいがおきにくいあん すいません。JavaとPythonはどっちが飯食えますか?
一番ラクに稼げる言語ってなに?
教えてエロい人 リネーム処理に一般的に使われるのはどっちなんでしょうか? >>27
そこに拘る理由が分からん
「組み込みシステムに一般的に使われるのはどっちなんでしょうか?」とかなら向き不向きが分かれるが、リネームなんてピンポイントかつ些末な処理はどの言語でも普通にできるから >>25
基本、自社開発系ベンチャーのRuby vs SES 系のJava土方の2大勢力
YouTube で有名な、雑食系エンジニア・KENTA は、Rubyで、
逆に、SES 系のモローは、Java, PHP
Ruby on Rails の学校で大儲けしたのは、マコなり。80万円ぐらい。
一方、最安値は、東京フリーランスのデイトラで、10万円
Java は奴隷だから、誰でも受かる。
PHP も、KENTAのサロンで誰かに聞けば十分
SES奴隷土方になりたくない香具師が、大金を払って、学校へ行って、
自社開発系ベンチャーを目指す
Python は、どちらでもない。
MIT など、理系の大学院生だけ NG推奨ワード:
自社開発系
ベンチャー
Ruby
土方
YouTube
雑食系
KENTA
モロー
Rails
大儲け
マコなり
フリーランス
デイトラ
奴隷
サロン
香具師
大金
学校
理系の大学院 >>22
PowerShell よりも、Ruby が簡単。
ただし、DryRun なので実際には実行されません。
ファイル名には、拡張子がない場合だけに対応しています
require 'fileutils'
parent_dir = 'c:/users/owner/documents/test'
src_dir = parent_dir + '/abc'
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
file_name = Dir.glob( src_dir + '/*' )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.map { |full_path| File.basename( full_path ) } # ファイル名のみ
.sort.first # ソートして、最初のファイル名
dest_dir = parent_dir + '/' + file_name
# フォルダ名を変更
FileUtils::DryRun.move( src_dir, dest_dir )
表示
mv c:/users/owner/documents/test/abc
c:/users/owner/documents/test/a >>30
キーワードに反応して定型文を返すだけのbot? 2021/1/1
AWS のトップYouTuber・くろかわこうへいの転職話。
SES 奴隷から抜け出して、自社開発系へ転職
年収100万上げて自社開発企業に転職したらSESの営業がキレて大ゲンカした話
【オキテ破りのギリギリ転職術】
https://www.youtube.com/watch?v=CFs41De_KGw message = "2021-01-01 00:00:00"
df.query(f"Time != {message}")
Pandasで特定の時間の行だけ省きたいのですが、上記のように書くと空白のせいかinvalid syntaxが出てうまく動きません
dt.strptimeでdt型にしてみたりもしたけと変わりませんでした
バグですかね?何かいい方法無いですか? >>29
powershellってマイナーなのかなと >>36
to_datetimeメソッドで変換してしまうとか
ブールインデックスを使うとか
「pandas query 日付」とかで検索してみると良いかも
https://daizyu.com/posts/2020-05-18-001/
query()の中で変数は@でも参照できるよ
df.query('Time != @message') 『独習Python』という本に,
data1 = 'abc'
data2 = 'abc'
とすると,data1 == data2 も data1 is data2 も両方ともTrueになると書いてあります.
一方で,
「この挙動はあくまで内部的なものです.文脈によっては,str(文字列型)であっても,「同値であって同一ではない」という状況は発生します.」
と書いてあります.data1 is data2 がFalseになる状況というのはどんな状況なのでしょうか? a = "abc123"
b = f"abc{122+1}"
a == b >> True
a is b >> False >>39
この例は処理系が同じリテラルがハードコードされている事を「たまたま」理解出来るから無駄を無くすために”abc”を使い回してるだけ
基本的にisは偽になると考えるべき 普通、文字列の比較に、同一インスタンスかどうかは考えない
普通は、同じ文字列かどうかの意味。
異なるインスタンスでも、同じ文字列なら等しいと考えるべき まあ代入と等号比較ってのはどの言語でも気にするべき内容だわな。 >>38
ありがとうございます
@使ったら普通に動きました
あとこの抜き出したデータフレームに含まれてない物だけを抜き出して新しいデータフレームを作りたいのですが、方法ってありますかね?
やりたい事としては2つのdfの単純な差集合を取りたいだけです 50,000、5,000、500
こういうのをre.searchで正規表現を使って数字のみ抽出しようしてるんだけどうまく抽出できないのでどうすればいいか教えてください まずはカンマを除去する
次に、でsplitする
すると、文字列での数字が得られる プログラミング覚える前にググり方覚えたら?
そのものズバリがすぐ見付かるだろ localhost:8080でhello worldの立ち上げに成功したんだけど
試しにpythonで
requests.get(url='http://localhost:8080/')
ってやってもHTTPConnectionPool(host='localhost', port=8080): Max retries exceeded with url:みたいなエラーでるなんで・・ 自己解決
docker内でやってたんだけど
ホストPCに戻ってhostname -IでホストPCのipアドレス取得して
localhostのとこをそのホストPCのipアドレス指定して
requests.get(url='http://ホストPCのIPアドレス:8080/')
ってやったら取得できた
お騒がせしました 形がほぼ同じで、色合いだけ違うものを区別して認識させる方法ってありますか?
OPENCVでグレースケールとカラー両方試してみたのですが、色違いポケモンご認識してしまいます。 >>55
形が同じだとわかってるなら、
どこの色をチェックすれば違いがあるかもわかっているだろう
たとえば全体をHSVにcvtColorしてH成分のヒストグラム作ってみるだけでもわかりそうなもんだけど ファイアウォールなどで、localhost を定義していない場合には、アクセスできない
その場合は、Local Loopback Address(127.0.0.1)でアクセスする >>57
普通のOSはhostsにlocalhostが書いてあるからいみふ 表計算では難しいデータ処理がしたくて
google colabでpythonを触り始めた初心者です。
全て整数のa:時間、b:測定値からなる
2列の時系列csvデータがあります。
測定値bが前の時間より低下した場合、
bが元の値に戻るまでの時間をデータ列cとして
下のように元のcsvに追加したいのですが
pythonではどのように記述すれば良いでしょうか?
a b Δb c
1 100 0 0 Δb<0で無ければc=0
2 97 -3 3 100まで戻る時間
3 95 -2 1 97まで戻る時間
4 99 4 0
5 102 3 0
6 101 -1 4 102まで戻る時間
7 97 -4 2 101まで戻る時間
8 93 -4 1 97まで戻る時間
9 97 4 0
10 102 5 0 疑似コードならこんなもんか
for i in 各行:
__Δbを求める
__if Δb>=0: continue
__c=∞
__for j in i+1, ...:
____if b[j]>=b[i]:
______c=j-i
______break Pytorchのfor文内で定義した変数ってローカルスコープになるんだっけ?
VSCodeのpylanceでfor文の外で変数呼ぼうとすると未定義だって言われる
言語によってぐちゃぐちゃだからよくわからん >>58
MySQL とか、色々なアプリで、localhost で接続できない場合がある。
その際、127.0.0.1 でアクセスできる場合がある
頻出パターン >>61
Pythonでローカルスコープが作られるのは
関数とクラスのメソッドの中だけという認識でいるがどうか google colabでtecogan使えます? 初心者です
環境構築の際WSLで過度にメモリ消費しないようにしたいんですがユーザーフォルダへの.wslconfigの作成はどのようにしたら良いのでしょうか >>66
なにをもって「過度」となすか定義せよ
でもって
コンフィグでどうこうじゃなく、
自分がメモリ消費量が常になるべく小さくて済むコードを書く方がよっぽど大事なのでは んでもって
WSLの環境設定どーのこーのはPythonちゃうわスレチ >>60 >>62 ありがとうございます。
>>62のリンク先のでを動かせました。 tecoganで動画をモザイク除去したいのですが、anaconda環境がいいのでしょうか? 動画モザイク除去ってなんのライブラリがいいんでしょうか?tecoganだと情報がない if a in c or b in c:
この場合ってまずaとcの処理が行われてマッチした時点で後ろの処理はせずに終了という認識でおk? >>75
orがショートサーキットで評価されるかということならYes
a in c でaが見つからなければcが2回評価されるので
cの内容次第では違うやり方にしたほうがいい場合がある >>79
なんでこれでうごくか分からないんだけど参考になる記事とかない? >>79
これは全然意味違うでしょ
aがtruthyなら(a or b)はa
aがfalsyなら(a or b)はbの評価結果
(None or ‘b’)なら’b’ う動くif文のがこわいよね
そのまま動いてて何ヶ月か後に実は意図した条件をすり抜けていたとか気づいたりすることも… PHPのexec経由だとPyTorchをインポートできない件で、諸兄のお知恵をお貸しいただけないでしょうか。よろしくお願いします。
環境は以下の通り。
Ubuntu 18.04
Python 3.6.9
PHP 7.4
PyTorch 1.7.1(本家サイトの通り、pipをpip3にしてインストール)
コマンドライン
$ python3
>>> import torch
ファイル経由(ファイル名test.py)
import torch
$ python3 test.py
は問題ないのですが、上記のtest.pyをPHPで
exec('/usr/bin/python3 test.py', $output);
などとすると動きません。
Traceback (most recent call last):
File "test.py", line 1, in <module>
import torch
ModuleNotFoundError: No module named 'torch'
(Apacheのエラーログ)
またnumpyならばexec経由でもエラーになりません。
パス関係は以下の通りです。
$ pip3 show torch
Name: torch
Version: 1.7.1+cpu
(中略)
Location: /home/ユーザー名/.local/lib/python3.6/site-packages >>85 の続き
コンソールではパスも通っています。
>>> import pprint
>>> import sys
>>> pprint.pprint(sys.path)
['', '/usr/lib/python36.zip','/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/ユーザー名/.local/lib/python3.6/site-packages','/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages']
が、PHPのexecでは
import pprint
pprint.pprint(sys.path)
の結果をprint_rで出力するとパスが通っていません。
[0] => ['/usr/lib/python36.zip',
[1] => '/usr/lib/python3.6',
[2] => '/usr/lib/python3.6/lib-dynload',
[3] => '/usr/local/lib/python3.6/dist-packages',
[4] => '/usr/lib/python3/dist-packages']
そこでパスを追加してみました。
import sys, pprint
sys.path.append('/home/ユーザー名/.local/lib/python3.6/site-packages')
pprint.pprint(sys.path)
[0] => ['/usr/lib/python36.zip',
[1] => '/usr/lib/python3.6',
[2] => '/usr/lib/python3.6/lib-dynload',
[3] => '/usr/local/lib/python3.6/dist-packages',
[4] => '/usr/lib/python3/dist-packages',
[5] => '/home/ユーザー名/.local/lib/python3.6/site-packages']
とパスが通っていると思うのですが、
import sys, pprint
sys.path.append('/home/ユーザー名/.local/lib/python3.6/site-packages')
import torch
の結果はやはりModuleNotFoundErrorになってしまいます。
また以前に構築した2つの環境ではexec経由でimportできていて、最近構築したこの環境でのみ発生します。関係ないと思いますが、以前からの環境はさくらVPSとWSL、新環境はWindows 10のHyper-V。OSやソフトは同一です。
何か落ち度や見落とし、情報不足などありましたらご指摘いただけますと幸いです。 cd /usr/local/lib/python3.6
ln -s /home/user/.local/lib/python3.6/site-packages
動的にパス設定してるなら
これで動きそう >>87
ご教示ありがとうございます。
が、ダメでした。
lnで作った/usr/local/lib/python3.6/site-packages
をdist-packagesにリネームしたりもしましたが、やはりModuleNotFoundErrorです。すみません。 /home/ユーザー名/.local/lib/python3.6/site-packages
のディレクトリ/ファイルのアクセス権の制限とかは? home 755
user 755
.local 775
lib 700
python3.6 700
site-packages 700
torch 775
torch-1.7.1+cpu.dist-info 775
で、所有者&グループはこのユーザーディレクトリのユーザー(動いている環境も同様)でした。 >>86
PyTorchじゃないけど、pywin32とかで必要なダイナミックリンクライブラリが揃ってないときに、
DLLロードエラーが最終的にModuleNotFoundErrorになったのをこないだ見た。
コンソールにはライブラリ読み込み失敗とか出てるような気がするので、コンソールをもっと詳しく見てみては?
パッケージのダメな箇所をどんどん特定していってなんのライブラリ読み込み失敗してるか掘ってみていかないとダメかもしれないけど。 python 3.8をインストールしコマンドプロンプトから起動
pipでライブラリをインストールしようとしましたが、
NameError: name 'pip' is not defined
とでてインストールできません。
どうしたらいいんでしょうか? >>93
pipはPython内のコマンドではないので、コマンドプロンプトを開いたら
直接pipを使ってみてください 画像のモザイクやら消したい場合、
学習の第一歩って何になるんでしょうか?
inpaintingというのがあるらしいですが、チュートがないです
opencvだとaiと言えるのでしょうか モザイク消し
ではなくて
オレ今まで一杯モロ画像見てて絵も写真くらいの精度で描けるんだけど、
こういうモザ画像の中ってこんな感じだと結構自然じゃね?
という機能 モザイクと言わず完全に隠されてても保管してくれるからGANはすごい技術だ
俺も勉強したい >>86
ユーザー名に、半角英数字以外の妙な文字が入っていないですか?
/home/ユーザー名/.local/lib/python3.6/site-packages に、
別のモジュールを作って入れてみて、正常に動くか確かめてみれば?
他には、sys.path.append で追加するよりも前に、import されているとか?
正しい順番を、設定ファイルか何かで、確定させる必要がある
カーネルのログを見てみるとか、
起動オプションに、エラーログの詳細表示を付けてみるとか
あまりにも、エラーの可能性が広すぎる。
ファイルの文字コードの違いとか、考えられる要因が多すぎて、絞れない
ここは成功、ここは失敗と、
何か、切り分けないといけない おまいらのエロに対する情熱が伝わってこないから教えてやらない >>96
>>97
チュートがあんまりないんですおよね、、、
ganの基礎からやるといいんんですか? そこはスクレイピングで集める
しかしどうせgpuパワーが足りないんだろうと思うから手を出せない
opencvはaiなの? まあ機械学習の機能がある以上広義のAIではあるだろうな >>86
phpを動かしてるユーザーはapacheだから
他のユーザーのsiteは指定しようが見れないってことじゃ
自分用のpythonと別に考えたほうが面倒がなくていい
自分のホームディレクトリにインストールされてるから
それはlinuxのディストリビューションの管理から離れてるんだろ seleniumを使ってGoogle Chromeを一部自動操作して作業を効率化しているのですが、
ctrl+fで開くページ内検索を自動化する方法ってあるませんかね?
周辺単語まで見る必要があるので、検索ボックスを開く→特定のワードを入力、まで自動でできたらOKなのですが
普通のsend_keyですとか
ActionChains(driver).key_down(Keys.CONTROL).send_keys('F').key_up(Keys.CONTROL).perform()
は試してみたのですがうまくいきませんでした(エラーは出ないが検索ボックスが開かない)
pyautoguiでのキーボード入力も試してみたのですが、ブラウザがアクティブ化できないのでidleの検索ボックスが開いてしまいお手上げでした 当該ページの要素を取得して特定ワードをテキストとして含んでるならそこにスクロールさせればいいだろ
検索ボックス使う必要がない Google Colaboratory便利すぎる・・
docker然りこんなのもう自分のPCにpythonインストールする意味ないじゃん。。 >>100
ワイはGAN Kerasとかで調べて勉強してる
英語読まなきゃきけないのがきつい >>88
>>87
のシンボリックリンクがダメなら、ファイルをコピーしてみれば? シンボリックリンクやファイルコピーは環境構築方法としてはかなり微妙じゃない?
権限の問題だと思うからまずはそれを確定させて
PHP実行ユーザー向けの環境構築をpip使ってできるようにしたほうがいい気がする
権限の問題かどうかはPHP exec経由でファイルの中身が読めるかどうかでわかる >>107
回答ありがとうございます
なるほど
ただ、ちょっと具体的なイメージが浮かばないのでもう少し詳しい方法を教えていただけないでしょうか 85です。もろもろレスありがとうございました。
まず結論ですが、PyTorchをimportできるようになり推論結果も出力されました。
皆さまのレスを総合すると、パスを通そうがApacheからユーザーディレクトリは見えない・アクセスできない。
に集約されると考え、pipの-tオプションで/usr/local/lib/python3.6/dist-packagesを指定してPyTorch
をインストールしたら成功しました。
セキュリティ関係含めここにブチ込んでいいものか所有者やパーミッションはこのままでいいのかなどこれから詰めますが、取り急ぎご報告まで。
皆さまのレスがなければ詰んでました。本当にありがとうございました。 めんなさい、>>116はミスです...
質問失礼します
requestsとBeautifulSoup4で遊んでいましたが、requestsがエラーとなるサイトが出てきてしまい理由がわからずここへ来ました
ひとまずHTMLが取得できるところまで解決したいです
よろしくお願いいたします
実行環境:
Python 3.7.0, Windows 10 64bit, IDLE 3.7.0 (64bit)で実行しています
ソース:
import requests
import bs4
url = "https://www.tokyomotion.net/"
res = requests.get(url)
soup = bs4.BeautifulSoup(res.content, "html.parser")
print(soup)
エラーメッセージ:
============================== RESTART: C:\BOX\Python\test\test.py ==============================
Traceback (most recent call last):
File "C:\Python\Python37\lib\site-packages\urllib3\response.py", line 401, in _decode
data = self._decoder.decompress(data)
File "C:\Python\Python37\lib\site-packages\urllib3\response.py", line 88, in decompress
ret += self._obj.decompress(data)
zlib.error: Error -3 while decompressing data: incorrect data check
During handling of the above exception, another exception occurred:
下に続きます Traceback (most recent call last):
File "C:\Python\Python37\lib\site-packages\requests\models.py", line 753, in generate
for chunk in self.raw.stream(chunk_size, decode_content=True):
File "C:\Python\Python37\lib\site-packages\urllib3\response.py", line 572, in stream
for line in self.read_chunked(amt, decode_content=decode_content):
File "C:\Python\Python37\lib\site-packages\urllib3\response.py", line 769, in read_chunked
chunk, decode_content=decode_content, flush_decoder=False
File "C:\Python\Python37\lib\site-packages\urllib3\response.py", line 407, in _decode
e,
urllib3.exceptions.DecodeError: ('Received response with content-encoding: gzip, but failed to decode it.', error('Error -3 while decompressing data: incorrect data check'))
During handling of the above exception, another exception occurred:
次が最後です Traceback (most recent call last):
File "C:\BOX\Python\test\test.py", line 5, in <module>
res = requests.get(url)
File "C:\Python\Python37\lib\site-packages\requests\api.py", line 76, in get
return request('get', url, params=params, **kwargs)
File "C:\Python\Python37\lib\site-packages\requests\api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Python\Python37\lib\site-packages\requests\sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "C:\Python\Python37\lib\site-packages\requests\sessions.py", line 697, in send
r.content
File "C:\Python\Python37\lib\site-packages\requests\models.py", line 831, in content
self._content = b''.join(self.iter_content(CONTENT_CHUNK_SIZE)) or b''
File "C:\Python\Python37\lib\site-packages\requests\models.py", line 758, in generate
raise ContentDecodingError(e)
requests.exceptions.ContentDecodingError: ('Received response with content-encoding: gzip, but failed to decode it.', error('Error -3 while decompressing data: incorrect data check'))
以上です
よろしくお願いいたします リクエストヘッダーでgzipで受け入れ可能ということを伝えて
受信した内容をデコードする
headers = {'Accept-Encoding': 'gzip'} res = requests.get(url, headers={'Accept-Encoding': 'identity'}) >>112
executeScriptでscrollIntoView()使う
//xpathで’foobar’を含む最初の要素を検索してそこまでスクロール
var xpath = "//*[contains(text(),'foobar')]";
var match = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null)
match.singleNodeValue.scrollIntoView() >>120,121
ありがとうございます
gzipは初耳だったので調べている途中でしたが、'identity'の方で解決できました!
でもマナーとしてはサイト指定の圧縮形式で取得して自分側で展開するべきということですかね? 0から9の数字が複数描かれた画像があります
いわゆる認証でよく出てくるcaptcha画像の類ですが
練習として、これを機械学習で認識しようとしました
画像の条件として
・数字のサイズは一定
・数字の桁数は一定
・数字の行間は一定
・数字の始まりの座標は不定
です
とりあえず流れとして
データ収集 → 前処理 → データセット作成 → 学習 → モデル作成 → 検証
みたいなことはわかりいくつかのサンプルは成功しました
が、いざ条件のcaptcha画像でやってみたところ
このcaptcha画像から数字ひとつひとつを抜き出す、という前処理でつまづきました
すべて一定ならcv2などで等間隔で区切ればいいのでしょうが
画像の最左に近い場合もあるし遠い場所から数字の連番が始まるときもあります
この最初の座標さえわかればあとは文字サイズなりなんなりで等間隔でトリミングすればいけると思うのですが
どういうロジックを組めばいいのでしょうか?
あと仮に、文字サイズが不定、行間も不定となる場合、
どう一文字を判定するのだろうと思いました
(調べて見るとcv2.findContoursという便利なものがありやってみましたが
画像を2値化するときに数字の線が若干荒れて、輪郭の判定が大量に現れる結果となってしまいました) とりあえずは数字意外のノイズが確実に出ないしきい値で2値化して
左から1pxずつ1px幅の縦1列を全て検査し、全て255とはならない始めのx列目が、数字の始まり
で、対応できるような気がしました 初歩的な質問いいですか?
本によると、int型などはイミュータブル型とありましたが
num = 1
num = 3
というように後に中身を変更できると思うのですが、どういうことでしょうか? 1そのものが3に変化するのでは無い
3を新たに生成して上書きしているだけ x=(1,2)
x=(3,4) # ok
x[0]=10 # error 変数名の集合と整数の集合を考える
人間が作り出すであろう全ての変数名が入った無限集合だ
すると、変数名の集合と整数の集合の間の写像になる
「初めから全てが存在していた」とするのが西洋人の考え方 aiやろうとおもってもpcパワーないから結局無理なんだすな(´・ω・`)? 無料の範囲でもgoogle colabでGPUパワーで回せば余裕 >>124
JapanPostのサイトに解説あった希ガス >>127
1の発生場所を3に書き換える変態言語もあった希ガス >>133
郵便番号の赤い枠線がどうのこうのってやつですかね?
そうだとすれば枠線前提の話になってくるので
枠線なかった場合とではトリミングの方法も違ってきそうな気がしますね 文字認識の学習データのセットを作る作業をしていて思ったのですが
学習データよりも、一文字に区切るアルゴリズムの方が重要ですよねこれ… それでも透かし入ってるのとか背景にノイズ入ってるのとか結構難しくないですかね
しきい値 → 2値化
みたいな方法しかないのか気になるところです いったい何やってるの
キャプチャ認証とか認識できないようにしてるけど >>141
単純に練習としてよくある手書き数字認識のサンプルをいくつかやり終えて
背景にシミとかノイズがあった場合もやってみたくなっただけですね
その場合、一文字に区切るのが難しいとわかったのですが
だったらそもそもノイズ自体も文字として考えればいいのでは、と思い始めてきた感じです
ようは、ノイズの中に文字記号っぽい線の流れを認識できるモデル
(シミュラクラ現象的に)ノイズを文字と認識するようなモデルがあれば
仮に間違ってシミを何らかの文字と認識してもそれは正解でいいような
そんな便利なモデルありそうなのですが
microsoftとかgoogleのOCRを試したところ
どうも大別すると一文字に区切る系の処理をしているような気がしますわかりませんが 簡易な奴なら投影で位置決めするんだけど
高度な奴ならsvm使うzinniaとかがあるなぁ
paddlepaddle とかにもデモがあったと
思うけど、中国語読めないので使った事ないな(3.8.xのpythonとpipで入るかと)
PyTroch与えれば後は作れるのか、OpenVinoがあれば出来るのか
どのレベルを求めているかわからないと
回答のしようがないな アイドルの画像なんですが、まず画像のまえにリストを作成したいです
そのリストを参考に集めていく感じ
雑誌名と発売日などのリストを作る方法ありますです?
手作業が一番かな テキストファイルに文字列が存在するかの判定について一番単純(≒記述が単純or無駄が少ないor最速or低コスト)な方法はなにがありますか?
行番号や該当行を取得するなどは必要でなくて、ただ含まれているかどうかだけ真偽値や検索結果が0とかで判断できればいいです >>146
少なくとも↓くらいは書かないとどうしようもない
・通信資源CPUメモリHDD コスト高い順に並べろ
・どのくらいのサイズのテキストと、どのくらいのサイズの文字列なんだ
・2バイト文字の有無
・エンコードは何か 記号もスペースも文字ではないという判別をしながら
1文字ずつ見ていって文字が2回続けば文字列発見 globで頭からファイル舐めるのがいいんじゃないの 競プロ形式で質問してくれればわかりやすいんだけどな。プログラミングに限らず日常生活でも。
何を材料に何を出力すればいいかを明確にしてほしい(機械脳) >>147
NGワードが解決できずここにレスできませんでしたので
「NGワード絞り込みスレッド」にテスト投稿した以下のレスを参照お願いします
https://agree.5ch.net/test/read.cgi/mango/1610376010/757
もしどこがNGだったのかわかる方教えてください... >>155
で、そのテキストファイル、
無限に肥大させてくつもりなの?
ばかなの?
ちぬの???
>どこがNGか
MD5ハッシュでggrks
>>151
せやせや >>156
ひとまず一通り組み上げてみたかったので>>155の方法を考えました
現時点ではそうなりますが、普通の人はどのような実装をすることが多いのですか?
>MD5
こちらではMD5でググると一致する情報が見つからなかったため本文をどうにかするのを諦めましたが、
そちらではなにか見つかりますか? >>146
典型的なオートマトンの問題だな
一番最初の文字がヒットするまでファイルを1文字ずつ見ていく、ヒットしたら2文字目以降もヒットするか確認
計算量は最悪のケースでO(mn) 簡単に処理済のURLのリストがほしいなら処理したやつをsetにポンポコ突っ込んでいくのが簡単かな
メモリに乗らなくなったらソートとか分割とかして保存すればいいんじゃないかな >8KB/月 程度で増加予定。1行に1URLが記録
>検索文字列(URL):基本30〜100B程度
件数にしたら100~250件/月で10年やっても3万件程度なので
pythonのforループでリニアに1行ずつ判定するのでも速度的に困ることはまずないんじゃないかな
100msの間に10万回や100万回判定できないと困るようなら別だけど 正規表現最強だからなあ
素人ががんばってもまず勝てない >>155
そのスレッドに、上半分を投稿して、NGなら、また半分に分割して投稿する。
もし上半分がOKなら、下半分がNGだから、下半分をさらに半分に分割して投稿する
つまり、2分探索のように投稿して、どの行がNGなのか、突き止める
宣伝に書きそうな単語は、cost かな? こんな感じでコンター図描こうとしてます.
x座標とy座標を読み込んで値を返す関数hogeをどうやって定義すればよいか分かりません.
hogeの中身はif文だらけです.
誰か教えてください.
import numpy as np
import matplotlib.pyplot as plt
def hoge(???
???
x = np.arange(0, 1, 0.05)
y = np.arange(0, 1, 0.05)
X, Y = np.meshgrid(x, y)
Z = hoge(X,Y) #そもそもこんな感じで書けるのか? matplotlib.pyplot.contour ― Matplotlib 3.3.3 documentation
https://matplotlib.org/3.3.3/api/_as_gen/matplotlib.pyplot.contour.html
これに似せて定義すれば完璧 速度気にしないなら
def hoge_Z(X, Y):
Z = np.ndarray(X.shape)
for y in Y:
for x in X:
Z[y][x] = hoge(x, y)
Z = hoge_z(X, Y) 返信ありがとうございます.
>168
どこ見たらよいですか?
>169
速度は気にしません.
Zのインデックには整数入れろって言われました.
あと,XとYの2つでループ回すんですか? def hoge_Z(X, Y):
Z = np.ndarray(X.shape)
for h in len(X):
for w in len(X[0]):
Z[h][w] = hoge(X[h][w], Y[h][w])
Z = hoge_z(X, Y) ああ
len(X) は range(len(X))
len(X[0]) は range(len(X[0]))
で opencvではモザイク消せる?
水着を塗りつぶすところまではいけるだろうけど、その先よ ブラック企業で統合失調症になり、5年以上働けていません
一日11時間くらいベッドにいます
この言語を必死でマスターしたら、在宅ワークの仕事をいただくことは出来るでしょうか?
一日1000円でいいので稼ぎたいです
お金よりも、作業に慣れて仕事復帰への足がかりにしたのです >>177
37歳の時にブラック企業で発狂して、5年経って42歳です
>>178
ありがとうございます
時間のある時に見てみます ム板とマ板の違いがわからないようではむずかしくね? >>180>Pythonをマスターする()とかいうビッグマウスの実現が 失敗しました
ここはプログラム板でしたね
プログラマー板というのがあるというのは今知りました windowsでpythonをインストールしたのですが、pyコマンドを使うと windowsでpythonをインストールしたのですが、pyコマンドを使うと
内部コマンドまたは外部コマンド
操作可能なプログラムまたはバッチファイルとして認識されていません
と表示されます
どうすればpyコマンドを使えるのでしょう? >>185
py.exeを正しくインストールすれば使える from sklearn.metrics import mean_squared_error
とある行で
Traceback (most recent call last):
File "E:/AAAAAA/半側空間無視データ分析/USN_data_analyzer(RANSAC mode)ver1.8.py", line 6, in <module>
from sklearn.metrics import mean_squared_error
File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\sklearn\__init__.py", line 81, in <module>
from . import __check_build # noqa: F401
ImportError: cannot import name '__check_build' from 'sklearn' (C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\sklearn\__init__.py)
というエラーがでます
scikit-learnのインストールはpipコマンドで成功しているのですが、なぜでしょうか? 以前環境設定したときは何の問題もなくSklearn使えたのですが、
今回はなぜかインストールしてもimportできない・・・ コマンドプロンプトからインポートするとこんなメッセージがでます
やっぱり、きちんとインストールできてないのかな・・・
>>> import sklearn
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\sklearn\__init__.py", line 81, in <module>
from . import __check_build # noqa: F401
ImportError: cannot import name '__check_build' from 'sklearn' (C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\sklearn\__init__.py) where pip
where python
を比較するといいかも
違う場合は、pipコマンドは違うところにインストールしちゃってる
python -m pip install sklearn
でpythonコマンドのあるところにpipモジュールが入れてくれるので、この方法が一番おすすめ C:\Users\user>where pip
C:\Users\user\AppData\Local\Microsoft\WindowsApps\pip.exe
C:\Users\user>where python
C:\Users\user\AppData\Local\Microsoft\WindowsApps\python.exe
C:\Users\user>python -m pip install sklearn
Requirement already satisfied: sklearn in c:\users\user\appdata\local\packages\pythonsoftwarefoundation.python.3.7_qbz5n2kfra8p0\localcache\local-packages\python37\site-packages (0.0)
Requirement already satisfied: scikit-learn in c:\users\user\appdata\local\packages\pythonsoftwarefoundation.python.3.7_qbz5n2kfra8p0\localcache\local-packages\python37\site-packages (from sklearn) (0.24.1)
Requirement already satisfied: numpy>=1.13.3 in c:\users\user\appdata\local\packages\pythonsoftwarefoundation.python.3.7_qbz5n2kfra8p0\localcache\local-packages\python37\site-packages (from scikit-learn->sklearn) (1.19.5)
Requirement already satisfied: joblib>=0.11 in c:\users\user\appdata\local\packages\pythonsoftwarefoundation.python.3.7_qbz5n2kfra8p0\localcache\local-packages\python37\site-packages (from scikit-learn->sklearn) (1.0.0)
Requirement already satisfied: scipy>=0.19.1 in c:\users\user\appdata\local\packages\pythonsoftwarefoundation.python.3.7_qbz5n2kfra8p0\localcache\local-packages\python37\site-packages (from scikit-learn->sklearn) (1.6.0)
Requirement already satisfied: threadpoolctl>=2.0.0 in c:\users\user\appdata\local\packages\pythonsoftwarefoundation.python.3.7_qbz5n2kfra8p0\localcache\local-packages\python37\site-packages (from scikit-learn->sklearn) (2.1.0)
C:\Users\user>
でした。
これって同じところにインストールできてるってことですよね・・・
なんでimportできないんだろ??? ん?ms store版python入れたの?
公式の方で試してみたら? >ImportError: cannot import name '__check_build' from 'sklearn'
まずはエラーが出てるモジュール(__check_build)がimport可能な状態なのかどうかを確認したら? >>194
公式版をダウンロードして再インスコしたら問題なくインストールできました
ご指摘ありがとうございました
これでやっと寝れます・・・
なんでMS版だとだめなんだろう?
いや、もう寝ます
本当にありがとうございましたm(_ _)m カレントディレクトリとかに変なもの置いてるパターン >>200
お金もらえるから。趣味という人もいるかな。 曖昧な質問をすれば曖昧な回答が返ってくる仕様
ただそれだけのこと https://i.imgur.com/RefLq9E.png
線虫の神経エンジンをGoPiGoで動かそうとすると、最後のほうで謎のエラーが出る
俺が書いたコードじゃないから、どこを直せばいいかわからん
Pythonどころかプログラム自体初心者で何もわからん 文字列、命令の文法が間違ってるのかな(構文エラー?)
ちょっと昔のPython2系のやつを、gopigo3用に無理やり3系に変換したから、
そこでどこかおかしくなったのか 解析してる最中だったのに終端まで到達しちゃったんだけどどうしてくれんの?の意味。
たいていカッコが閉じてないからとかだけど、まずはインデントサイズがバラバラなの直せ ありがとう
インデントサイズが何なのかわからんからググってみるよ
あとは()の閉じ忘れか Pythonでインデントがあやふやって命とりだぞ? 恐ろしいことだよ
プログラマが新たな言語を身に着けようとするのではなく
プログラミング素人が、おそらくは機械学習等の話題の技術を使いたくて
ライブラリ・プレイヤーとしてPythonを使おうとする風潮が広まっているのではと危惧している
プログラマなら言語の概略は自習できるはずだからな 別に誰が何を使おうがどうでもいいだろ
こんな超初心者スレで土方が偉そうにしてんじゃねえよ >>214が超重要なこといってるのに
おまいらときたら・・・ 最近もうpythonすら使う必要ないぞ
ウィザード進めてくだけで深層学習できるサービスをmsとか出してたしな >>215
全員最初は素人だし何の問題が?
変な選民思想持ってそう >>216
そのうちGitHubにSMBC上げるんですね判ります 「最初は素人」は事実だが
選民の思想を知ろうとしない素人は総じてクソ >>220
「ライブラリ・プレイヤーとしてPythonを使おうとする風潮が広まっているのでは」ってことを危惧してるって書いてあって
最初が素人であることが問題とか全く触れてない
日本語学べ ADHDあるあるで
最初の話題をわすれてしまう症状のヤツなのでは 「ExcelプレイヤーとしてVBAを使おうとする風潮が広まっている」恐ろしいことだよ。 元はDOM操作をするために生まれたJavaScriptでデスクトップアプリケーションを実装しようとする風潮が広まっているのではないか Pythonなんて豊富なライブラリ活用しないなら使う意味ないだろ
フルスクラッチで書くならCでも書いてろって話だわ >>221
むしろ今回の事件起こした人は自作バブルソートとか実装してたみたいだし
このスレでイキってるライブラリを見下してる自閉症オタクみたいなやつの方が可能性高いよ ぶっちゃけ、普通のプログラミングも出来ないやつは機械学習なんかできないよ
だって、独自に画像を整理したりメタデータ付けたりということを効率的にできないし、
外注したとしても検証する術もない
チュートリアルでメソッド1発でデータセット取れるやつなら出来るけど、それ以上のとこで相当に苦労するよね 私は競馬好きのおじさんです
excelvba程度はいじれます
https://www.youtube.com/watch?v=Pz5O52tshvQ
の内容が全然ついて行けないのですが、基礎的知識を付ける方法を教えていただけないでしょうか? ググってすぐ解決することもあればどんだけグッグても同じ症状がなくて丸1日無駄にすることもある 今月に日経ソフトウェアを買って
Pythonでぷよぷよを作ろう。
出来たら平安京エイリアンにチャレンジだ >>231-234
レスありがとうございます
皆さんはコードを紙に書いてますか?
youtubeやぐぐっても頭に貼らなくて・・・ .
,.:::.⌒⌒:::::ヽ
(::::::::::::::::::::::::::::)
(;:::::::::::::人:::::::::::ノ
(::: (´・ω・`):ノ またヅラの話してる...
(| |)::::
(γ /:::::::
し \:::
\ >>234
実際にパソコンで入力して動かしてみないと身に付かないよ。
ついでに言えばyoutubeとかググって見つける断片的な情報で理解するのはよほど理解力があるかすでに基礎がちゃんと身に付いてる人くらいだから、面倒がらずにちゃんと入門書か入門者向けサイトとかで体系的に学んだ方がいいぞ。 >>234
紙に書くよりも実際にエディタに書きながらの方が良いな どのサイトのデータスクレイピングしてるのか知らんけど規約的にOKなサイトなんだろうか
違法の物を売ってるってことは流石にないか… tkinterでテキストボックスを使って、ボタンに設定した関数に引数として送りたいと思って下記の式を書いたのですが、
ウィンドウ内のテキストボックスで値を入力しても、ボタンへの引数が反映されません
どのようにしたらいいのでしょうか
#関数送り用テキストボックス
txt = tk.Entry(width=5)
txt.insert(tkinter.END,"1") #初期値入力
iii = int(txt.get())
# ボタン生成
start_button = tk.Button(root, text = "test", command = lambda:test(iii))
root.mainloop() >>236-237
ありがとうございます
本買ってきて地道に基礎力をつけようと思います >>238
誤爆か?それともアンカーを省略するのがカコイイと思ってるアレなやつなのか??? >>223
何故それを危惧するのか分からん
「にわかが機械学習目的でpythonに大量流入していてけしからん」としか読めないが >>243
ユーザーの質が落ちていくからだよ
Pythonは低レベルユーザーが使う言語という認識が広まるのは
決して良いことではない Pythonに求められてる事なんて簡単に書ける事と
それこそライブラリプレイヤーとしての機能くらいなんだし別にいいだろ
所詮スクリプト言語だぞ Real Programmers Don't Use Python. 言語を使う人の質を気にするなら関数型みたいなオタク言語使ってればいいじゃん
ユーザの質()は上がるんじゃないのw 訳:「pythonはわたくしのような意識の高い選民が使うものなんだから現生の利益だけを求める愚民は寄ってくるな」 >>245
おまいにPythonがあってないんだ
COBOLかアセンブラあたりへ移動するんだ >>240さん
ありがとうございます
それ以外の方法ってないでしょうか、、できれば他にも流用できる関数としたくて、引数で使いたいなと思ってます lambda:test(txt.get())
txt.get()がいつ評価されるか、239となにが違うのか考えてみ 只でさえ型が緩いpythonに素人が押し寄せた結果、Qiitaには大量の糞記事だけが投稿される惨状に感じることは少なくはない。のはおれだけじゃないはず >>245
javascriptもPHPもC++も低レベルユーザー多いぞ だから何?って言う。。
スルー出来ないおまえが低能なだけ
どんな言語・ジャンルにも低レベルなのは居る 糞記事というか似通った生地が多いのはあるな
適当なライブラリでググって上のほうにあるサイトの書き方とどれも同じとか
別に変数とか順番とか決まってるわけでもないのに、みんな上のほうにあるサイトを教科書代わりにして書くから、結果それが決まった定型のような扱いになるパターン
ソース見たら意外と便利な関数とかあって、それでググったら日本語サイト一切ひっかからなかったり 関数内で呼び出すexecをグローバルコンテキストで
実行させるには第2引数に何を与えれば良いですか?
def func():
exec(“a=1”, ???) google colabのタブのミラーセルってなんですか? >>253
上級者()ならqiitaに求める情報はないやろ
stackoverflowでも読みな 超クソ初心者
for a in range(2,21):
sosuu=1
for j in range(2,a):
if a % j ==0:
sosuu=0
if sosuu ==1:
print(a,'(素数)')
if sosuu ==1:
print(a,'(素数)')
else:
print(a)
これって一行一行どういうことが起こってるのが教えてほしい
『最初の一行「for a in range(2,21):」でaは2-21までの範囲を指してる』
的な感じの説明で。
2行目のsosuu=1とか3行目で何故(2.21)はダメで(2.a)だとしっかりできるのかが謎で
一つ一つ根本が知りたい OS付属のPythonが3.8から3.9になった。
すると、pipが/usr/lib64/python3.8/site-packages/ に入れたライブラリが使用できなくなった。
仕方ないので pip で再インストールした。
そこで質問です。pip upgrade 3.8 to 3.9 などとすると、その辺りを勝手にやってくれないの?
pip(1)には特に記載ないのだけれど、わりとぶち当たる問題ですよね。 >>266
3.8$ pip freeze > requirement.txt
requirement.txtの中身を編集して
3.9$ pip install -r requirement.txt
使ってるバージョンマネージャによっては
新しいバージョン入れたら必ず入れるパッケージを指定できるようなのもある >>266
>わりとぶち当たる問題ですよね。
そんなことはないです
一つだけ確認なんですけど
>仕方ないので pip で再インストールした。
とりあえずはこれで解決できたということですか? >>252さん
ありがとうございました。
できました、ボタンを押した際にgetが実行されるのですね、バッチリです >>266
OS付属のPythonをpipで弄るのはOSがおかしくなるかもしれないからやめた方がいいよ
OSはOSの都合でPythonや付属ライブラリのバージョンを決めてるから、ユーザーが開発に使うのはpyenvでインストールしたバージョンが固定されたPythonの方がいいし、
そもそもプロジェクトごとに使いたいパッケージのバージョンが違ったりするからPoetry, pipenvなどの仮想環境を使った方がいい OS にプリインストールされているものを変えたの?
すべてのアプリが想定しているものと異なるから、動かなくなる
漏れは、日本人が作った、バージョンマネージャーのanyenv で、
rbenv, nodenv を使って、ruby 2.6.6, node 12.16.2 を入れた
こういうので、pyenv で、プロジェクト毎にバージョンを切り替える Docker は微妙だから VirtualBox でいいや。 pythonをGUIで操作したいならdockerは微妙だけど、それ以外ならdockerの方がいい
webアプリ化すればほとんどはシェル併用でどうにもなるし
どうしてもpython以外(かつGUIで)のソフトを使いたいって場合くらいじゃないのVirtualBoxの仕用途 PyQtとEricでVSのwinformみたいに組めるよ。
ラズパイでGUIやれるようになって幸せ。 >>279
Python を GUI で操作じゃないのか?
GUI を作りたいんかね。 C#でGUI作って
特定の処理だけPythonの方が普通なのか? GUIで操作ってOpenCVのimshowみたいなのをインタラクティブに操作したいってことでは? >>283
Python製のアプリケーションをGUIで操作ってことなら意味わかる 今ではGUIが必要になったら、FlaskとVueを組み合わせて作ることが多くなった >>284
GUIを必要としないものは実は沢山ある
君がそういうものを思いつかないなら、おそらく君にPythonは適していない ラズパイで色んな装置と通信するコンソールをGUIでやってみて、楽勝だった。 with文について質問です
withブロック内で新しく宣言した変数をブロックの外で使っても
エラーが発生しないのはなぜでしょうか?
with open('./example.txt', 'r', encoding='UTF-8') as file:
____data = file.read()
print(data) # ←この文です >>293
Pythonのローカルスコープは、関数内およびクラスのメソッド内でのみ作られる…はず
withは関数ではないから、dataはグローバル変数 ブロック=スコープではなく制御文同様スコープ作りません
あとはPython3で内包表記が密かに作るようになったかな? >>294
>>295
ありがとうございました
Pythonややこしい… すみません、openpyxlの質問はここでよろしかったでしょうか。
取り込んだエクセルから、指定のセルの文字サイズを得たいのですが、どなたかアドバイス下さい。 >>297
>文字サイズ
文字数じゃなくてフォントのポイント数のことけ?それともまさかそれ以外(セルの高さとか)? ポイント数です。
print(cell.font)で、一覧としては出てきたのですが、
他のセルに貼り付けるために取得たいのですが、上手くいきません。 >>299
「openpyxl フォント 設定」でまずぐぐり
気に入らない/理解できないならば
次に「openpyxl フォント サイズ」でぐぐる >>300
設定方法は、ネット上で見つけて何とかなったのですが、取得方法がうまくいきません。
だいぶ検索もしたのですが、、 >>301のprint(cell.font)ってしてる
cellにナニぶっこんでるのかresして
結果の一覧とやらを>>1にのってるろだとかにのせたら
もちょい進める、かも (function (x, y) {
ここに処理を書く
})(a, b);
JavaScript では上記のように擬似的なスコープを作って
上位スコープから変数を渡すことができますが
これと似たようなことをPythonで実現可能ですか?
グローバルの変数汚染を避けるのが目的です
以下のような無名関数として呼び出せればと思うのですが。。。
(def (x, y):
ここに処理を書く
)(a, b) >>304
普通は気にしない
Pythonのグローバル変数はモジュール(ファイル)の名前空間に属するから、グローバル名前空間を汚染しない
本当に局所的な変数が欲しいなら普通に関数を定義してローカル変数にして普通に呼ぶ
トリッキーなことはしないで素直に普通に書くのがPython流 Pythonて関数の引数が参照渡しなんだな
値渡しだと思って今まで使ってたから調べてびっくりしたわ
リストなんかを変数で渡した場合は関数内で書き換えできてしまうから注意が必要だね >>294
with の中を通らなかったときの data の値は必ず None で OK? >>307
引数が(変数の)参照渡しな訳ではないよ、元々が実体へのオブジェクト参照(PyObject*ポインタ)
値渡しはC的に言えばスタックに載せるという事であり、それは大抵のシステムで既定上限が数MB以下 >>306
コーティングの是非を聞きたいのではなく
仕様として可能なのかを聞いています
単にそこに興味があるだけです >>305
もちろん考えましたが
何行にも渡るコードをlambdaでローカルスコープにするのは
実用的でないと思ってます
偉そうな書き方になってたら申し訳ない (lambda x,y:x+y)(1,2) -> 3
みたいな書き方はできる PILで読み込んだ画像とOPENCVで読み込んだ画像は、それぞれで扱うことはできないのでしょうか?
また、画像がどっちの形式で変数に入っているかを判断することはできないでしょか? >>311
括弧を使ってスコープを切れるか? => 切れない
JSのIIFEを模倣できるか? => lambdaなら可
グローバル汚染を避けられるか? => そもそもグローバル汚染しない >>311
lambda以外に無名関数を定義する方法があるか? => ない >>314
numpy.array(pil_image)でおーぷんしーぶいで扱える python界隈は、ピップだのピップエンブだのパイパイだのパイエンブだの、固有名詞がダサすぎないかい。 並列で実行しておきたい関数があって
ある条件に一致したら終了する関数なのですが
終了して、まだキューになく並列実行してなかったら再度並列実行したいと思ってます
下記で同時実行しているタスク数や実行しているか確認することはできるのでしょうか
実行中はTrueが入っていると思ったらちがいました
executor = concurrent.futures.ThreadPoolExecutor(max_workers=1)
f = executor.submit(test_sub,1)
if f=True:
f = executor.submit(test_sub,1) 競プロかなんかで時間ギリギリまで問題解きたいのか? pythonのエラーの対応について教えて下さい
環境は3.6でエディタはAtomを使っています。
VBAとかだとどこでエラーが起きてもエラメッセージが帰ってくる思うのですが、
pythonだと関数から呼び出した関数で起きたエラーは、コンソールウィンドウに表示されず
メッセージ無しで止まってしまいます。
エラー対応で検索すると、Tryを使うとのことなのですが、
関数の始まりからtryで囲うやり方がベストなのでしょか?
全関数を以下の通り対応するのはスマートではないなと・・
def test():
try:
関数の中の全部の処理
except ****: >>327
関数使うときにtryしたほうが良くね? >>327
try使うときは
エラーがおきるかもしれない最小範囲のみをくくるべし 最初にやった方法からさらにいい方法思いついてデータ量や実行時間が大幅に減らせたときの快感がたまらん それで、コードの可読性を損ねて、
後でどこを直せばいいかわからなくなることもしばしば 途中で送信してしまいました
def
try:
エラーでそうな処理
return 11
except:
エラー出たときの処理
return 22
このエラー出たときに、エラー以外の処理を返すようなやり方はやめた方がいいですか?
エラーのときはExceptionなりでエラーをそのまま返す
みたいな >>334
「エラー出たときの処理」でエラーから復旧したと言えるならそれでいいんじゃないか
呼び出し側で対応が必要ならExceptionを返すべき × Exceptionを返す
○ Exceptionをraiseする Jsonファイルのリストの中から、
価格の情報だけを比べて、
一番大きい価格を取り出す方法が分かりません。
{
"status": 0,
"data": {
"list": [
{
"price": "4172840",
"symbol": "BTC",
},
{
"price": "4104400",
"symbol": "BTC",
}
}
こんなようなJSONがあって、
リストの中の、priceだけを比較して、
一番大きい、priceを取り出す方法が分かりません、
上の例だと、max( "price": "4172840" "price": "4104400")
となると思うのですが、
どうやってリストの中の価格だけを取り出して、
一番大きい値を取り出せばいいか分からないです。 item = max(json_obj["list"], lambda i: i["price"]) 410万ビットコインって幾らになるんだろう?17億円くらいかな? >>338
ありがとうございます!
string indices must be integers
とエラーがでてまだ取れてないけど、、
もう少し調べて頑張ってみます。 今までpcで動かしてた機能をandroidで動かしたい
apkを作るにはkivy とbuildozerを使うらしい
こっちの環境作るのにも詰まってるけどそもそも今動いてる.py をそのまま使えるのかも分からない
何か書き換えとか必要?
そして環境構築方法詳しく載ってるサイトがあったら教えてください。 python のメソッドって
def hoge(x,y):
以下中身
まではわかるんだけど
終わりの区切りはどうなってるの?
空行できたらそこで終わり?
returnとかあればいいの? >>345
カラ行は無視で
なんか書いてある行のインデントの深さが変わったらそのブロックはおしまい >>346
インデントか
なるほど
ありがとうございます
勉強になりました >>347
体系化ずみのサイトなりテキストなりを一冊読んだ方が
遠回りにみえるかもしらんが
一番早道だぉ
ノシ >>337
Ruby では、文字列の値を、数値へ変換すればよい。
と言うか、変換するのが面倒なので、最初から数値で、やり取りすれば良いだけ
require 'json'
# 値が数値
json_1 = <<'JSON'
{ "a":1, "b":2 }
JSON
p JSON.load( json_1 ) #=> {"a"=>1, "b"=>2}
# 値が文字列
json_2 = <<'JSON'
{ "a":"1", "b":"2" }
JSON
p hash = JSON.load( json_2 ) #=> {"a"=>"1", "b"=>"2"}
# 文字列の値を、数値へ変換する
hash.each { |key, val| hash[ key ] = val.to_i }
p hash #=> {"a"=>1, "b"=>2} for num in range(5):
print(num)
if num==3:
num=num-1
ていうのを動かすと
0,1,2,3,4
ていう結果になる。
0,1,2,3,3,3,......
ていう結果にしたいんだけどどうすればい?
下のような動きにしたい。
for i=0 to 5
print i
if i=3 then i=i-1
next その例のコードで 0,1,2,3,3,3,...... って出力されるの?
やべーねその言語 for i in range(5):
print (min(i, 3)) for i in range(5):
____if i > 3 : i=3
____print(i) やりたいことはジェネレーターで無限ストリームっぽい気がする こういうこと?
i = 0
while True:
x = i
if i > 2:
x = 3
i = i + 1
print(x) [i if i < 3 else 3 for i in range(5)] >>351
まじほんと>>353だは…
351は偽Pythonをつかまされているのでは sorted関数はwindowsの名前順と同じようにソートするんですか?
natsort? dictの型ヒント書こうとしているんだけど、TypeScriptみたいにキー毎に
値の型を指定するような芸当は無理だよね? >>363
typeddictとかいうの無かったっけ
tsと同じようなことできた気がする >>362
Windowsのソート順は分からないけど >>366
windows上で、フォルダの中に名前順に並んだ複数ファイルがあって
これをそのままの順番で取得したいんですが、glob+sortedでいいのでしょうか?
windows上での並び順と異なる場合があるとかだと困るのです _1 と _01 の話でしょう。
エクスプローラは長さ判定の方が
優先順位が高いアルよ エクスプローラーのソート順は全角半角同一視とかロケール依存もあるでよ スクリプト使用者は日本語環境のwindows
フォルダ内に任意の命名規則の連番ファイルが数種類混在する
つかわれる文字種は全半角日本語英語、数字と記号(文字化けした中国語っぽいやつはありえる)
例えば
.01.02
.あ001.い001
._01a._01b
という3ルールがひとつのフォルダ内にあって、命名規則は制限できない
エクスプローラー上で表示される名前順の並びに意味があるので、順番を保持したデータ構造を取得したい
です! あ、個々の連番ファイル作成者も日本語windowsのエクスプローラーで順番を確認してます natも違う
windowsは.01→01と並べるけどnatは逆になる それを使って何がしたいのか分からないと見当違いになるかも知れないけど
ファイルへの処理を疎結合にはできないの?
あとはこれもnatsortと同じなのかな
sorted(paths, key = lambda x: int(x.name)) そもそもWindowsと同じ並びにしなければならない理由が理解できないんだけど
どういう理由なの?
もし並び順に依存した処理が必要なんだっていうならばその実装がおかしいと思うけどな エクスプローラー上で表示される名前順に依存しなきゃいけないシステムってのがよくわからないけど
とりあえずnatsortのos_sorted()を試してみたら?
Windowsの場合はエクスプローラが使ってるAPIを使ってる
エクスプローラのソート仕様を100%把握するのは無理な気がするので
どういうテストケースを通ればOKとするかは事前に決めておかないと後で困りそう windowsと同じにって言っても、ファイルシステムがFAT系とNTFSでも違った気がする。 >>378
あーこれですね。たぶん
ちょっと様子見つつ、動かしてみます。ホント助かりました
>>376
a, bさんがそれぞれ独自の連番データを持ってて、Aというひとつのフォルダに入力します
bさんは“エクスプローラーの名前順で”aさんのデータのあとに自分のデータを置くこと
aさんとbさんは異なる命名ルールを使って、第三者が“命名ルールを見て”群を区別できるようにすること
がルールです
そうして出来たAフォルダの中身を、自分が上から順に読み込んで処理する
みたいな… 正規表現で群を分割してそれぞれの群に対して逐次処理していく
とかだと駄目なのかな?
単純にソートして順に処理していくとファイル漏れがあった時とかにバグりそう 早々に破綻しそう
ユーザー名や更新日時を基準に考え直した方が早いよ まずaさんとbさんのデータをわけなよ
その上でファイル名を正規化してソート出来る形にする
ソートの基準が違うものをソートしようとしてるから物事が複雑になる
なのでまずはソートの基準を揃えることから始めたら良いんじゃねーかな 要するに
[".1", "10", "2", "1", ".2", "1"]
をwindowsエクスプローラー上の名前順
[".1", ".2", "01", "1", "2", "10"]
にソートするにはどうすればいいか的な話でしょ?
つか状況がクソだぞって指摘はしてあげるべきだろうが
そこを変えろって回答は論外じゃ… システムはエクスプローラーとか、特定のアプリのアルゴリズムに依存すべきじゃない。
ある日突然、変わるかも知れない。
API・規格が無保証だろ
自分のアプリは、自分で規格を定義すべき。
そうしないと、可搬性がなくなる
OS・ファイルシステムが異なると、結果が違ってくるから こういうメンドクセーもんは大抵はどっかの誰かが既に作ってあるハズだからpypiで探すか
標準で提供されてると見当つけて公式サイトを探す
自分が欲しいと思ったモンは99.99%の確率で他の誰かが既に実装してる >>385
命名ルールがわからないからそれで十分かどうかはわからない
ある時点のあるPCで見たエクスプローラの名前順をPythonで再現したいという話
命名ルールも再現したいエクスプローラのソート仕様の範囲も不明確なので事故るかどうかは運任せ >>367
windows って explorer で表示したときの並び順と
プロンプトで dir で表示したときの並び順が
違うって知ってた?
0000
0001
1
111
10
20
みたいなファイル名で試してみ >>389
エクスプローラのソートとひとくちにいっても、
ターゲットのフォルダをあけた状態と
そこから左カラム右クリック新しいウインドウから開く でもいっこあけた窓の中で
順番変わる 並列処理をしているときに、何が実行されているか確認することって出来ますか?
キューに入って順番待ちになっているタスクも確認したいです。
WEBページを2〜3ページ並列で取得するようにしてるのですが、並列にしたときにデバッグで確認することも難しく教えていただければと思います。 9x年代の「accessの美しいsort順」の
再来かよw
アレの実装も凄いな >>385
そもそもユーザーがソート順変えたら破綻する仕組みに依存した設計とかどうしようもないだろ ユーザーが2個目のウインドウ開けてそっち見たらおしまいな件 Behavior of this function, and therefore the results it returns, can change from release to release. It should not be used for canonical sorting applications.
だとさ >>397
横から
これで順番変わってる状態って見たことないけど、どういうファイル名の並びだとそうなるん? ラズパイを載せたGoPiGoロボカーで、線虫脳シミュレート
https://www.youtube.com/watch?v=9kxty2qec4g
エラーを解決したので、試しに動かした コードはGithubで公開されてるものを突っ込んだ スイッチのONOFFに連動してアクション起こすものを作ってみたくてほぼ期待通りの挙動させられるようになったのですが、たぶんimportで他.py呼び出す時にエラー?になります。
スイッチONになればその都度実行してほしいのですが、一度きりしか実行されません。
importで呼び出す場合は回数制限のようなものがあるのでしょうか? どんなエラーがでてるか、そのまま貼った方がいいと思うな importの実行は一度だけ
なので関数にして都度実行 「importで他.py呼び出す時」
「importで呼び出す」
perlじゃないから考え方を変えろ Pythonのimportは、COBOLのCOPYと同じと考えて良いですかね
ソースのその箇所に埋め込む感じの >>408
全然違う
importは対象のモジュールがまだ現在のプロセスで読み込まれていない場合は読み込み、現在のスクリプトファイル内で使用できるようにする
COBOLの知識とか害悪でしかないから今すぐ全部忘れろ >>405
夜になりますが、そうしてみます。
while true:
if switch == true:
import action01
print("action01")
flag = true
else:
import action02
print("action02")
flag = false
みたいなコードで、printによる表示は正常にされていても、importでは呼び出せてないような挙動でした。エラーを吐いてるわけではありません。
>>406
ありがとうございます。
関数とimportの違いもわからないので、調べてきます。
>>407
プログラミングは昔Cのポインタで挫折したタイプなんでよくわかってません。 >>408
>>410
Pythonのimportは名前空間にパッケージ名を登録してるだけ
import package # プロセスの名前空間にパッケージ名を登録
package.function() # packageに書いた関数を使う
import時、プロセス内に同じ名前のパッケージ名があれば読み込み不要だからキャンセルされる
なので >>404 のように一度しか実行されないってことになります pandasのdropってディープコピーってことは
dropするたびに変数に入れないといけないってことですよね?
データフレームが大きいときその辺り気にしなければいけないのでしょうか Ruby でも、require・load は異なる
require は同じファイルは一度だけしかロードしませんが、 load は無条件にロードします。
require はライブラリのロード、load は設定ファイルの読み込みなどに使う
つまり、ライブラリ・モジュールの読み込みは、1回で良いけど、
設定ファイルは再読み込みする事がある >>412
IOに比べたらカスみたいなもんだからどうでもいい
実際遅かったら直せばよい >>414
なるほどありがとうございます
とりあえずはまとめられる処理はできる限り一つにまとめてみます 正解なのかはわかりませんが、なんとか期待通りの動きをするようになりました。
元々のコード:ttp://codepad.org/RgfCqXLD
変更後:ttp://codepad.org/C9YTzwaU
スイッチがONになったら反応、OFFでもう1つのアクション。
ついでにキャンセルもできるようにしようとするとフラグを2つ立てないとうまくいかなかったので、無駄に長くなってしまった気がします。
もしお暇でしたらアドバイス貰えれば幸いです。 >>403
悪いがオリジナルは既に消えている。
が、どういうソート順なのか調べた人がいた。
それの紹介記事は残っていた
https://atsushieno.hatenadiary.org/entry/20050704/p2
webアーカイブに残っているかなぁ? >>418
アーカイブされていた
https://web.archive.org/web/19990224184613/http://www.asahi-net.or.jp/~ez3k-msym/comp/acccoll.htm 親切な方誰か教えてください。
Python始めたいんだけど、どのバージョンをダウンロードしたらいいんでしょうか?
勉強用に買った本には3.6.Xをダウンロードしろと書いてあるんだけど、どうせ始めるなら最新の3.9から始めるのがいいんでしょうか? 3.6で始めて欲しい機能が最新版にしかなかったら
その時移行する >>421 422
ありがとう。とりあえず3.6で初めてみます 3.9でいいよ
・・・と言いたいが外部のライブラリが対応できていないものもまだ多いから3.8を勧める
3.6にあってそれ以降無くなった機能あったっけな? 3.8だと思うように動作しないライブラリあったから3.6に戻した
それ以来,ずっと3.6 3を指定すると3.7.8か3.7.9あたりになるのが多い気がするからその辺が互換的にもよさそう >>418-419
読んでたら頭痛くなってきた…
これMSがちゃんと仕様公開しなきゃ駄目だよなぁ… 教えていただきたいのですが、
tkinterでプログラムのスタートとストップボタンを作ったのですが、処理中は画面がフリーズしてしまいます。
tkinterは非同期モジュールらしく、
これを他のGUIモジュールに変えるとフリーズしなくなりますでしょか? >>428
コード見てみないとなんともだけど
非同期のコードかかずにwhileで回してるだけになってるとか すみません、非同期とかよくわかっていなかったです。
ボタンが全く押せず、ブレークでwhile文から抜けるしかない状況です
import tkinter as tk
import tkinter.messagebox
import time
def start():
global stop_flag
timer_time = time.time()
while stop_flag == False:
txt.insert(tkinter.END,str(time.time()-timer_time))
if time.time()-timer_time >5:
txt.insert(tkinter.END,str(time.time()-timer_time))
break
def stop():
global stop_flag
stop_flag=True
stop_flag = False
root = tk.Tk()
root.geometry("200x150+30+600")
end_button = tk.Button(root, text = "START", command =start)
end_button.place(x = 5, y = 10)
end_button = tk.Button(root, text = "STOP", command =stop)
end_button.place(x = 5, y = 40)
txt = tk.Entry(width=20)
txt.insert(tk.END,"0")
txt.place(x = 5, y = 70)
root.mainloop() >>417
まずはこんな感じのswitch文を使うような状態遷移にした方がいいんじゃね
pythonにはswitchは無いからif-elseでやるしかないけど
不変でコンパクトならswitch〜caseで状態遷移したっていい|Marupeke-IKD|note
https://note.com/marupeke296/n/n62c1c4643931
11.リアルタイム制御とステートマシン
https://www2.denshi.numazu-ct.ac.jp/lego/NXT/nxtOSEK/2_kiso/realtime.html pandasで列aと列bの各値同士の計算結果を同じデータフレームに代入しようと思い
df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]], columns=['a','b','c'])
df['c-a'] = df[['a','c']].diff(axis=1)['c']
と、してみましたが['c']が納得いきません
列ラベル名があるときも[:1]みたいに取り出したいのですがエラーでした 訂正 >df['c-a'] = df[['a','c']].diff(axis=1)['c']
df['c-a'] = df[['c','a']].diff(axis=1)['a']
でした
この['c','a']の順は保証されるのかも気になります >>431
sleep(0.1)
txt.update() df['c-a'] = df[['c','a']].diff(axis=1).iloc[:,-1]
適当にやっていたらこれでいけました・・ >>433,434 >>431
start関数が5秒経つまでループしてて戻らないから
Pythonに限らずGUIの場合UIを動作させるにはメインスレッドを独り占めしちゃだめなのよ
>>435みたいなやり方もあるけど
sleepすらしない単純なループでの待ちは無駄にCPU使用率が上がるだけなので避ける
時間経過はタイマーイベントを使う
時間がかかる処理は別スレッドにする
という方向で考えた方がいいよ >>435さん、>>437さん
ありがとうございます。
タイマーイベント?を調べてみます tesseractの他にocrのライブラリってありますか?
教えて下さい。よろしくお願いします。 >>432
ありがとうございます。もうちょっとちゃんと勉強してみます。 Pathlibで特定のフォルダ以下のファイルを全てglobして
全てのファイルに対して特定の処理をし
その後別のフォルダにディレクトリ構造を維持しつつ保存していきたいです
フォルダ構造を維持しつつ保存するために
hoge_dir - base_dir みたいなものをしてPathの差分だけを取得したいのですが、そういった関数は無いのでしょうか? Path(os.path.relpath)で出来ました relative_to()
ドキュメント、読もう! イテレータを使わなければならない状況がきてようやく仕組みがちょっと理解できた
今までfor inで回せばほとんどのことに対処できてたので、どこで使うんそれって感じやったけど
やっぱり必要になって使うべき場面がこないと覚わらんね PySide2のQDialogをESCで閉じさせない方法ってありますかね
調べても出てこない >>444
イテレータイマイチ使うシーンが想像できんわ 頭から順に処理するならイテレーター
値は取り出すまで評価されない
リストは生成時に全要素が評価、展開されるから、長いとメモリを圧迫する >>447
for文使ってればイテレータ使ってる
rangeでもlisyでもstrでも同じようにfor文で回せるのはイテレータのおかげ 扱う分野で必要なもの全然違うしね
必要になったら学べば良い 画像比較作りたいけど
おすすめのサンプルプログラムある?
二つ比較して
似ている割合みたいのとれればいいんだけど また宗教的な話をw
OPENCV,numpy.openvino のどれかを使いたまえ >>446
ありますよ
もうちょっと頑張って調べなさい GUIのテキストラベルを関数内で変更するには、そのテキストのインスタンス生成をグローバルで実施する必要があるのでしょうか?
main関数内でGUIを作成して、別の関数から呼び出そう、書き換えようとするとエラーが出てしまいます 追記です
もともとメインだけのプログラムだったのですが、処理部などを分けていくにあたって、上記問題となりました。
ボタンやテキストラベルが多いため、GUIだけでも分離できたらなと思ってます。 エラーメッセージは飾りじゃないんだゾ
ちゃんと読むんだ OCR使ってみたんですが画像にちょっとシミ付いただけでめっちゃ精度落ちるんですけど そんなもんだろ
実運用ならGoogle Vision APIとか使え ファイルfを新規open
なにか書く
*ファイルfをclose
*ファイルfを追記open
なにか書く
*ファイルfをclose
*ファイルfを追記open
(これを何回か繰り返す)
ファイルfをclose
ていうことをやってるんだけど、*印のファイルfをclose・ファイルfを追記openをdefにしたら
local variable 'f' referenced before assignment
ていうエラーが出てしまいました。
defの中でf=openて書けないんでしょうけど、こういう場合て繰り返しのところをコードのマクロとか部品みたいにできないのでしょうか?
ファイルfをclose・ファイルfを追記openてところが10行ぐらいの全く同じコードになってるので繰り返して書くのがキレイでない。 with使えっていうのは当然として、設計寄りの話としてDAOあるいはRepositoryと言われるパターンを勉強すると良い。 >>464
単にコーディングミス。
エラーの意味は分かるな? >>464
Pythonの不便な点だな
def まくろ(何かを書く)
ファイルfを開く
何かを書く(f)
ファイルfを閉じる
まくろ(何かを書く1)
まくろ(何かを書く2)
ってやるのが定番
でもC#とかなら「何かを書く1」に直接処理を書けるけどPythonは関数を定義しないと駄目だからいまいちメリットが薄い >>464
クロージャは?
def create_writer(f):
__fを新規作成
__def write(s):
____fを追記open
____sを追記
____f.close()
__return write
writer=create_writer(f)
writer(あああ)
writer(いいい) def write_to(file_path):
__def write(string):
____with open(file_path, '+a') as f:
______f.write(string + '¥n')
__return write
write = write_to("foo.txt")
write("foo")
write("bar") wrapする意味がほとんどない気がする。
都度ファイル名が変わるなら、一緒に渡す方が間違いないだろうし、
逆に固定でいいなら、定数にするか、上で出ているようにDAOに閉じ込める方がいい。 >>473
2つ意味がある
ファイル名を意識すべきレイヤーやタイミングと
何かを書き出したいレイヤーやタイミングが常に同じとは限らないので
その2つの関心事を分離できるという意味が一つ
もう一つはDAOでもファイルでもいいけど
それらが10個あった場合に同じコード(open/close)を10回書かなくてもいい 質問者のレベルを考えれば毎回ファイル名を渡すほうが親切かもな
間違ってもDAOやリポジトリを持ち出すような話じゃない >>476
質問者はファイル名の話なんてしてない
そもそも質問者は「なにか書く」をなんとかしたいと言ってるのに勝手に文字列を書くことで満足してるようなオナニー見せられて困ってるだろうな… ⇒ >>470, >>472
その上質問者のレベルとか何様なんだよ ある時間が現在時刻より何時間経ってるかていうのを知りたいんだが
from datetime import datetime
d="2020/06/02 23:42"
x=datetime.strptime(d, '%Y/%m/%d %H:%M')
y=datetime.datetime.now()
print(x,' ',y)
last_time=(y-x)/3600
てやってみたんだが
type object 'datetime.datetime' has no attribute 'datetime'
というエラー
y=datetime.now()にすると
last_timeが1:42:23.156836という値
何百時間ていう数値を出せないんですか? >>478
時間差はtimedeltaになる、それを数値で割るとこの場合255日を3600分割してしまうので
(y - x).total_seconds() / 3600か、(y - x) / timedelta(hours=1)とかかな
https://docs.python.org/ja/3/library/datetime.html#datetime.timedelta.total_seconds >>480
できました。
結構狂った言語だな。
算術計算の結果は数値で出すべきなのに。
なんかpythonて直感的じゃなくて使いにくいな。 >>479
逆ギレとか意味わからん
まあ反論できない時に低能がよく言う言葉ではあるがw >>477
ファイルに書くんだからファイル名は必要
指摘の意味がわからない
テキストじゃなくバイナリで書きたいなら’+a’を’+ab’とすればいい
ファイルに追記する場合はその2つのどちらかしかない >>483
> ファイルに書くんだからファイル名は必要
そんなことは質問者もわかってるだろ
一応実装はできててより簡単に書きたいって話みたいだし
とりあえず>>464はまだ見てたら
> ファイルfをclose・ファイルfを追記openてところが10行ぐらいの全く同じコードになってるので繰り返して書くのがキレイでない。
の部分のコードを晒した方がまともな回答が得られると思う 見た感じcloseとopenでなにしてるかわかってないように思う >>477
身近にこういう奴が居なくて本当に良かった >>484
464みたいな構造に書き直して見ました。
最初書こうとしてたコードはこういうことがしたかった。
def まくろ(何かを書く,関数名)
ファイルfを開く
引数で与えられた関数名の関数を呼び出す
何かを書く(f)
ファイルfを閉じる
ていうのがやりたかったんだけど、関数の中に動的に別々の関数を呼び出すことなんてできないよね。
#define マクロ名(引数リスト)みたいなことができれば実現できるのに。 >>485-486
技術的な話ができないならどっかよそ行けよ…
>>488
>>489が言うように複数の関数を受け取って両方呼び出すのも普通にできる
def foo():
print('foo()が呼ばれた')
def bar():
print('bar()が呼ばれた')
def test(f1, f2):
f1()
f2()
test()
辺りから色々やってみればいい
あと Python 関数 渡す とかでググればいいかと 最近はpythonでググると高確率で、nkmkというサイトに引っかかる
そこは目次が無いため、文字ばかりの細々とした説明の中から必要なコードを探さないといけないから、とてもストレス >>490
関数を呼び出すんじゃなくてソースコードをマクロ展開したいんだけど。
関数にしてしまうと変数のグローバル・ローカルという話が出てきてしまう。
単純に10行くらいのコードの一部を変えてコピーしたい。
defの関数てコードのコピーじゃないですよね? >>492
なんでそんなことしたいのかよくわからんけど、m4とかのマクロプロセッサでも使えばいいんじゃね 何が言いたいのかようやくわかった。
どんだけ質問下手やねん >>491
イラストがいっぱいあって、
「今日はイテレーターの使い方だよ」
「何だか難しそう」
とかなってるサイトのほうがウザい。 >>492
Pythonにはその機能はないんで諦めてください >>497
デコレータって、元の関数の動作はそのまんま残し、さらに別の動作を
付け加えた関数を作り出す機能っしょ
この人はコードの一部を変更したいって言ってるから無理ではないかと >>490
>test()
関数渡してないやないかーい!
>>492
変数のスコープを理解せずにプログラムは書けないので
最初のlocal variable 'f' referenced before assignmentのエラーの原因を調べたほうがいいよ
誰もが一度は通るエラーなのでググればすぐ分かる
公式のFAQにものってる >#define マクロ名(引数リスト)
文字列を展開してそれをコードとして評価することはできるけど
今回のケースは関数を使えば解決可能なのでまずやらない
マクロと同等のことが普通のコードで実現可能 nkmkは最高に分かりやすいだろ
プログラミングスクール系のゴミ記事の1億倍見やすいわ >>501
> 関数渡してないやないかーい!
指摘サンクス、スマホでポチポチだから忘れてたわ >>505
あとは目次にリンク張ってくれれば言うことない 無駄にマクロ使おうとしてるとか絶対地雷人材やろ。。 >>505
むしろググってnkmkが上のほうにないときに絶望する
残ったゴミとカスからしゃーなしマシな記事をあさるしかない >>510
にんげんさまはアルクセキュリティホールやでぇ #define sqr(a) (a*a)
sqr=lambda a:a*a 一週間ほど前にPython にバッファオーバーフローの脆弱性(CVE-2021-3177)が発表されましたが、パッチ同時リリースではありませんでした
その後、パッチは出たのでしょうか? この問題は解決済みですか? testDict = {"test1Key":"test1","test2Key":"test2","test1Key":"test1.5"}
こんな感じで、重複のkeyがある辞書から、重複要素をprintするにはどうしたら良いですか? bound methodの中身を出力したいときってどうすればいいですか? seleniumでchromedriverを使ってスクレイピングするとき、
長時間続けているとキャッシュが肥大化してきます
これをコードの中でクリアする方法はありますでしょうか? 別のスクリプトからsubprocessで間接的に起動しておいて、定期的に起動し直すとかかなあ どうしてもseleniumでというならドライバ再実行でどうにかなったと思うけど
windowも閉じてしまうからそれが嫌だっていうなら
素直にscrapy使ってスクレイピングするのがいいかも >>520 chrome://settings/clearBrowserDataを開いて操作する方法もあるみたいだけど今のchromeだとShadow DOM使っててめんどくさいから
options = webdriver.ChromeOptions
options.add_argument("--disk-cache-size=バイト数")
driver = webdriver.Chrome(chrome_options=options)
みたいにしてキャッシュサイズ制限かけるとか やっぱり起動しなおすしかない感じですね
optionsでキャッシュサイズの指定は試してみたんですけど、効果ナシでした
例えば数十分おきとかでドライバ再実行する仕組みで試してみようかな
scrapy、初耳だったので調べてみましたがちょっと難しそうでした
少し勉強してみます Atomでコンソールから実行していて、無限ループになったりしてタスクマネージャで強制終了頻繁にしてるのですが、
見えないプロセスが残ったり、メモリーが変に残ったりすることはあるのでしょうか? マルチスレッドとか使ってて全てのプロセスが殺せてないとか Atom はプラグインのインストールに失敗する度に、そのNodeプロセスがゾンビ化する不具合があるゴミなのでVSCodeを使いましょう matplotでグラフタイトルを下部に表示したいです。
plt.title('x-latency graph', fontname='Times New Roman', y=-0.15)
とy設定をすることで一応下部に表示はされるのですが、
ウインドの大きさによってxラベルと重なってしまい、
上部に表示したときのようにきれいにはいきません。
なにかうまい方法ないでしょうか? pad試してみたのですが、ウインドウ小さくするとそうそうにXラベルと重なってしまいますね。
デフォルトの上部にしているとウインドウ小さくしても重ならないのですが、
こんなものなのでしょうか・・・。
でも、論文って下にタイトルって指定されるのに、なんでデフォルトが上になっているんだろう・・。 論文の図のキャプションは図をレイアウトした先で図の外側に作るものでグラフの中には作らないから、余り気にしたことないな >>534
ありがとうございます。
さっきまでよりはだいぶ見やすくなりました。
でも、やっぱりウインドウ小さくすると破綻するのは上部より下部の方が早いですね。
上部にしといて、タイトルは割り切って別で入れるようにしたほうがいいのかな。 実用上それで問題ないんですけど、
論文で下って教育されてると、上部タイトルがきてるといけないことをしているかのような強迫観念が・・・ そこまでこだわりがあるならsubplotで2段にして下のプロット軸とか背景を不可視にしてタイトルを下のプロットのタイトルとして描く関数を作っとくとか > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な ことはよーくわかったよ。 ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
Pythonさえろくにできないバカチョンのくせに
できるとほざくクソチョンw
日本で強姦と窃盗を繰り返す
犯罪者在日のクソチョンw 等差数列的な1次元行列で転置を行いたい
(1)
a = np.array([[i for i in range(2, 5, 1)]])
a.T
(2)a.T表記ではない(and ディープコピーではない)
a = np.arange(2,5,1)
a.shape = (1,3)
(3)ワンクッション多い
a = np.arange(2,5,1)
a.shape = (3,1)
a.T
(4)
a = np.array([np.arange(2,5,1)])
a.T
(本音)
a = np.arange(2,5,1).T np使わないとまともに配列扱えない欠陥言語だから仕方ない。 542認定言語
julia
r
以下欠陥言語。使ってる奴も三流
python
c++
java
c#
rust
swift
js >>545
reshapeという文字自体が長いというのはあるけど、まさにこれって感じのやつだったd juliaはたしかに良言語だと思う
使ったこと無いけど lispみたいなガイジが好むけど実用されない言語と
pythonみたいな実用されるけどガイジから非難される言語だ >>544
配列っていうか、行列だな。
Mコード(MATLAB)やFORTRANも行列扱えるよ。
確かにnp面倒くさい。 行列使うならMATLAB系
numpyじゃあ全く代わりにならんしうんざりする
計算だけで済む話にpython使うのはアホらしい if 条件A:
真ならなんか処理して(if文グループの終わり)に行く
if 条件B:
真ならなんか処理して(if文グループの終わり)に行く
if 条件C:
真ならなんか処理して(if文グループの終わり)に行く
(if文グループの終わり)
ていうようなことをしたい。
elseで次のifを書いていくとインデントがどんどん右に行くんだがなんかいい方法ない?
考えたのはfor文の中にいれて真ならbreakてやったんだが、普通はどうかくの? >>553
レスサンクス。
if文の前に前処理があるやつだとどうする?
(if文グループの始まり
条件Aの前処理
if 条件A:
真ならなんか処理して(if文グループの終わり)に行く
条件Bの前処理
if 条件B:
真ならなんか処理して(if文グループの終わり)に行く
条件Cの前処理
if 条件C:
真ならなんか処理して(if文グループの終わり)に行く
(if文グループの終わり)
goto文でできるが、gotoてどの言語でも推奨じゃないよね?
なんかif文グループの入れ子を作って、入れ子を抜けるようなことてforでやるしかない? インデントがわからないからはっきり分からないが
並列なifなら関数化してearly return >>554
何もないコードブロックって作れないよね?
無理やりifでコードブロックにして
if True:
前処理A
if 条件A:
処理A
break
前処理B
if 条件B
とかやれば出来なくもない。 >>554
while True:で始めてbreakで抜けるのが良いだろうけど、
本質的には処理はネストしてる(前処理Cは前処理A,Bを前提としている)ことを考えると、
if文をネストさせるかもしれないな。
それか前処理がエラーチェックだったらdefで切り出してreturnするか。
Cでリソース解放を必ずしたい場合とかはgoto使うこともあるけど、定石はないというか、ケースバイケースでif文使ったりgoto使ったりしてるな。
try/catchとかも制限付きgotoみたいなものだから、濫用しなければgoto使ってもいいと思うけどね。 >>557
for i in range(1):
とかしないとだめ? if func1:
if func2:
if func3:
if func4: ↓これでよくない?
def if_group():
__条件Aの前処理
__if 条件A:
____do_somethingA()
____return
__条件Bの前処理
__if 条件B:
____do_somethingB()
____return
__条件Cの前処理
__if 条件C:
____do_somethingC()
____return 即席で関数定義する方がセンスよさげだが自分なら完了済みフラグ設けて済ませたな こういうんじゃあかんのけ?
a = 4
if (lambda: [print("hello"), print("world")])() and a == 3:
__print("foobar")
elif (lambda: [print("kon"), print("nichiwa")])() and a == 4:
__print("hogefuga") >>559
552だけどオレが思いついたのはその方法。
この手の処理て模範解答的にはどうやってやるんだろう?
フラグ立ててフラグが真じゃなければ次のifブロックに行かないとかやってたけど。
関数にするとコードが見にくくなるし、一回しか通らない処理を関数にするのも無駄なような。
オレが新入社員のときにやったCOBOLもどきのIDL2にはblock文てのはあって一回だけ実行するfor文みたいなものがあった。 >>565
前処理とifがあるなら関数にまとめてもいいかも。
def processA():
前処理A
if 条件A:
処理A
:
processA()
processB()
processC()
せっかくgoto追加してくれたんだから使えばいいか。 >>554のいう前処理がわからんけど
それぞれでif文書いて、条件に早めにFalse返す関数使えば、別にネストもする必要ないじゃん
前処理って何やってんだよ
どうしても各分岐の前にがっつり処理しないとだめなんか? >>569
コードを晒すとこういうことをやってる。
これだとif elif elseじゃ書けないよな。
関数にするにしてもそれぞれやってることが違う。
559みたいにforを使ってみた例。
#ifグループの始まり
for i in range(1):
--o_btn=driver.find_elements_by_xpath('//input[@class="button"]')
--if len(o_btn)>0:
----f_x=f_x+1
----break
--o_btn=driver.find_elements_by_css_selector('div.btn_set>input')
--if len(o_btn)>0:
----f_y=f_y+1
----break
--o_btn=driver.find_elements_by_css_selector('div.btn_back>input')
--if len(o_btn)>0:
----f_z=f_z+1
----break
#ifが真だったらここに飛びたい。 インデントが2つだったり、3つだったりばらばらで作ってしまったんですけど、コレを自動で整形する方法ってありますか?? >>573
ある程度の行数をまとめて選択して置いて「インデントをひとつ浅くする」なら
けっこう色んなエディタでできるとおもうんだが
虎刈りになってるならあきらめろん >>573
autopep8かblackで自動整形できるよ black使ってるけど1行あたりの文字数だけは弄って150にしてるわ
デフォだとキツすぎディスプレイ縦置き専用かよと >>570
“ifグループ”と呼んでるものに名前をつけて関数化するほうがベターだと思うけどif-elseでも書けるよ 君たち>>570みたとたん明らかにやる気なくしてるよね if len(o_btn := driver.find...) > 0:
elif ...
3.8以上限定 blackはやりすぎだなと思うことあるわ。
コードを見やすくするためのコードフォーマットなのに逆に見辛くなるとか本末転倒すぎる。 そうだよなblack lives matterはやりすぎニガーは調子に乗るな! 構造体データて扱えるの?
こういうやつ。
01 従業員.
----05 従業員番号 PIC 9(7).
----05 従業員名 PIC X(30).
----05 入社年月日.
--------10 入社年 PIC 9999.
--------10 入社月 PIC 99.
--------10 入社日 PIC 99. >>582
年月日に20210221突っ込んで
年で2021だけ取り出すには工夫がいるかな わざわざ分けなくても datatime で持てば良くない? >>582
COBOLの知識は完全に全て忘れろ。今すぐに。
Pythonでは固定長レコードは一切使わない。CSVやJSONのような可変長データを使う。 >>582
プログラム内の表現として扱うという意味なら自分でクラスを定義するだけ
文字列、数値、日付みたいな型は標準であるけど「30文字以内の文字列」みたいな型はないので
従業員クラスに自分でバリデーションを追加するか独自の型を定義するか
COBOLで書き出した構造化ファイルのデータをPythonから扱えるかという意味なら
ファイルフォーマット次第だけど簡単には扱えない
CSVとかのテキストフォーマットに書き出したものをPythonで読み込むほうが桁違いに簡単 pythonのデバックでプログラムが何行目を通過したかて知る方法てあるの?
visual studio 2019を使っててF11でスッテプ実行てのが出来るんだけど、
1万行あったら1万行回F11叩くのか?てことになる。 >>588
F11連打しかしないとそうなるな
取説嫁 何行目を通過したか知りたいって考え方をするのはプログラムの構造に問題があるから フレイクホイントが
フロントホックに見えてしまった(´・ω・`) >>588
ストップポイント指定するんだよ
んで次のステップポイントに飛ぶってのがある 3行のコードでも1万回ループしてたら
ステップオーバーを3万回叩かないと抜けられない
F11はステップインなのでどんどん潜る VBAしかやったことないニワカだから、同じ疑問をずっと持ってた
自分の書いたコードの動作を一つずつ確認するために1行ずつ実行することがよくあったんだけど
pythonだと、極端なこと言えば1行ごとにブレイクポイントを挟まないといけないってこと? 標準添付のデバッガ(PDB)やIDE(VSCodeなど)でも普通にできる。 デバッガの使い方なんてどの言語でも一緒
ブレイクポイントの設定
ステップオーバー
ステップイン
ステップアウト
コンティニュー
この5つを理解すればいいだけ
プログラミング学習の初日に習う内容 新入社員でcobolやったときは最初から最後までトレースとったぞ。
人は意図的にバグを作り込むわけじゃないから、ストップポイント指定なんてナンセンス。
事前に指定しても、それ以外のところでエラーするのが当たり前。
事前にストップポイントやらブレイクポイントを指定なんて無駄だよ。 なんだろう。
COBOLだってプログラミング言語のはずなんだが、こうも考え方のピントがズレるもんかね。 Python関係ないよね
デバッグのやり方教えて終わりでいいでしょ >>602
よく分からんけど普通デバッグって
・エラー出た個所とエラーメッセージを確認する
・エラー出た個所にブレイクポイント設定しつつ、関連して怪しそうな所にもブレイクポイントを再度動作させる
・後はデバッガで変数値とか確認しながら原因付き留める
動かす度に止まる場所が変わる、とかでもない限りこれで十分じゃね?
あと何行目を通過したか?っていう質問の時点で
トレースされたエラーメッセージ見てないのか?っていう気はしてるけど…… >>603
COBOLはデータ処理のフローを小さなステップに分割して、そのステップ毎にプログラムを分割するのが普通で、
一つ一つのステップは構造化もクソもなくただ命令を平べったく羅列するだけ、というのが一般的
Pythonでいう数行から百行程度の関数一つ一つがCOBOLでは1000行くらいに膨れ上がって、それぞれが別個のプログラムになってるのを想像すれば、彼の気持ちを理解できるだろう COBOLだってデバッガの基本的な使い方はPythonと全く同じ
プログラム全体をステップ実行したいならエントリポイントにブレークポイント置いてステップ実行して行くだけ
学習目的以外では普通やらないけど
Pythonでもトレースはとれる
それも時間の無駄なのでまずやらない >>601
それプログラミング基礎ちゃう
デバッグ基礎や
>>603
コボルドって基本犬頭だからね 手軽なテキストエディタでprint()利用のデバッグはあなどれない ある程度はprintデバッグで問題の発生する範囲を絞り込むよね。
データが20種10ループの処理を受けるときに200回とかステップ実行やってられないもの >>605
これはVS2019の問題かもしれんが、関数の中で止まると何行目で止まったか表示してくれない。
だからエラーが出た個所にブレイクポイントを設定することがまず大変。
F11で追わないとどこで止まったかわからない。 >>614
そういうのは条件付きのブレイクポイントを使う >>617
VS使わずコマンドラインから実行してエラーメッセージを確認
VS2019の問題だと思うならまず切り分けすべき 関数の切り分けがそもそも糞なんだろ。
pythonでデバッガが必要なことなんてあんまりないぞ。cみたいなメモリがぶっ壊れるものならともかく。 python最大の特徴はC言語やってても余り使わない__main__など特殊変数を大量に見かけることだ
この奥深さはperlを超えてるが見た目の分かり易さは当然pythonに軍配が上がる 清水の舞台から飛び降りるつもりでVS2019からpycharmに変えてみた。
pycharmてどこでエラーしたかわかるんだな。
VS2019はどこでエラーしたか不明な場合がたたある。
今までの苦労は何だったのだ? 19日に公開された Python 3.9.2 および 3.8.8 で >>515 の脆弱性が塞がれたんですね
修正かくにん!
よかった ThreadPoolExecuterを使って画面の表示を更新しているのですが、
5つくらいスレッドを並行していると処理が重くなってきます。
ThreadPoolExecuterで実行しているスレッド数で、更新の頻度を変えるにはどういう実装をしたら良いでしょうか。
ThreadPoolExecuterは実行中のスレッド数は見ることが出来なかったです。 max_workersオプションを5以下にすれば良いのでは ありがとうございます、
ただ、画面更新とか裏での計算に使っているので、、それぞれが必要なスレッドなのです。。 そうは言ってもCPUが足りてないのだろうから
重くなるのはどうしようもない
画面処理とかOSがCPUを使えるようにスレッド数を制限すれば
軽く感じる可能性はあるんじゃ pythonのエラー処理てどのページもtry-exceptを使えて書いてあるけど、
try節以外で発生したエラーはどうするの?
エラーは作り手がtryの中に入れなかったところ以外でも発生するものだよね?
pythonてtryの中以外では絶対にエラーが発生しないものなの?
エラーが発生したらここに飛べてできないの? >>635
エラーがおきたらそれより先は進まずに、どこでどんなエラーが起きたか教えてくれるように出来てるので安心してください 言語に関係ないプログラミングの基礎を理解してないにもかかわらず
「pythonでは〜できないの?」と毎日聞くやつは学習方法が間違ってると思うぞ >>639
毎日同じこと聞くのは
○国人の習性だからwww. プログラミングの入門として使われることも多いpythonの、
それも超初心者用のスレで、それを言うのは野暮ではないかね python以外の言語を習得しているかのような質問の仕方がダメなんだろ
基礎を理解してないということを理解してないのが問題 >>635
try節以外でエラーが発生したらプログラムが停止する
エラー発生の可能性があって、特に対処したい部分にtry節を使う
python特有の話じゃないが コボおじは戻り値だけで判定してきたから例外が何かを知らないってことだよ
気持ちを汲んでやれ >>643
いまseleniumでchromeを動かしてスクレイピングをするプログラムを作ってるんだが、
スクレイピングだからネットの状態によってはすべての箇所でエラーが発生する。
てことはすべての行をtry節に入れるてことになるの?
エラーが起きたらchromeを閉じて次のプログラムを走らせたいんだが、
エラーが起きて止まったら困る。
on errorみたいなやつがあれば助かるんだが。 >>647
そもそも初心者はスクレイピングするもんじゃない
やめとけ >>647
import スーパーすごいぼくのseleniumモジュール
try:
____スーパーすごいぼくのseleniumモジュールを実行
except 例外1:
____例外1の処理
except 例外2:
____例外1の処理
except:
____ほかの例外全部の処理
こんだけだよ
ちょっと頭かたすぎなんじゃねーかと みえる
みえるぞ…
>>647がタイーホされるみらいが…! pythonの例外処理は
elseとfinallyが地味に便利だったりする finallyは他の言語でも見るけどelseは見たことないな
他の言語でも取り入れて欲しいわ tryのelseは、流れが分かり易くなるよね。正常系なのにelseという名前に若干引っ掛かるが。
whileのelseは、使わないけどあってもいいか。もともとBooleanで判定しているからね。
forのelseは、初見では絶対にわからないだろこれ、思考の妨げになるだけで邪魔。 for〜elseが何気に使えるから他言語にも取り入れられて欲しい tryのelseもwhile/forのelseも意義を見いだせないな
Effectiee Pythonではwhileとforのelseは使うな
tryのelseは活用しろとあったがtry/elseの例はすげー微妙なコードだった for〜else使えるのにフラグとかないし思考の妨げとか単に慣れてねーだけだろ コロナ対策と同じで自分以外の人の
ために使わないでほしい 俺が理解できないから他の奴も使うな!
俺が馬鹿みたいに見えるだろ!! elseもfinallyも使いどころがわからん
elseはtry内に書けばいいしfinallyはただ最後に付け足せば両方通る 日本語化されてなくても良いのですが、muエディタのように一行ずつ添削してくれるやつでオススメってあります? >>659
慣れてないっていうか他の言語も当然使うからPythonに戻って来た時混乱するのよ
混乱するならそもそも使わない方が良い
Pythonしか使わないならそれで良いんだろうけどね >>663
エラーでメッセージ出ても止まらないようにするんじゃなかったけ?
サーバーからデータ取れなくても空白文字入れたり
無理やり戻ったり >>663
finallyは最後に付け足しても両方通らないよ try内でreturnやbreakした時もelse/finallyは実行される >>667
> 戻って来た時混乱するのよ
> 混乱するならそもそも使わない方が良い
「英語話すと日本語に戻ってきたとき混乱するから
英語使いません!」とおなじこといってるぞ
あふぉ自慢はあったまさらにわるくみえるぞ >>669
「両方通らないよ」は
「片方しか通らない」なのか
「全く通らない」なのか分からないよ。 >>663
そりゃそんな理解力だとfinallyもelseも使いどころかわからんわな
てか、例外使っちゃダメレベル これはelse使ったほうがいいだろっていうtry/elseのコードない?
Effective Pythonの「Item 65: Take Advantage of Each Block in try/except /else/finally」に書いてあったサンプルコードはこれ
https://www.techiedelight.com/compiler/?VLdi
これ見てもelseを使いたくはならない >>667
まあ一瞬混乱したりなんでこの機能ねーんだよとかはあるけどそんなの言い出したらキリなくね?
言語や環境によってライブラリなんかも違うし 混乱しないように全部の行にセミコロンをつけなきゃ! Pythonだけでも
if-else、while/for-else、try-elseのそれぞれのelseで
んん?ってなる
loopのelseはbreak-or-elseのelse
tryのelseはexcept-or-elseのelse
と理解すれば意味はわかるがif-elseと違い過ぎるから
よほどのメリットがある場合じゃなければ使おうとは思わない >>632さん、>>633さん
ありがとうございます、もう少し調べてみます。
プロセスとスレッドの違いがいまいちわかってないですが、コレも日々勉強ですね >>672
ありがとーん
>>677
おもたおもた、最初おもた!www 質問です。
jupiter (旧jupiter notebook)上でpythonを動かす際、処理が飛ばされることがあるのですが、これと同じ状況になられた方はいらっしゃいますでしょうか? また、このようなことはありえるのでしょうか?
ご回答お願い致します ウィンドウのキャプチャーを撮って、動画にするアプリを作っているのですが、
下記部分で特定の回数実行すると9969回目で下記エラーとなります。
エラーメッセージで検索すると、DeleteDCの前に古いビットマップを戻すようなアドバイスがあったのですが、
意味がよくわからず、どなたかお助けお願いできませんでしょうか。
こちらの環境は3.8で、9969回目にエラーが出ました。
エラーメッセージ
CreateCompatibleDC failed
ソースコード
for Z in range(10000):
print(Z)
# ウィンドウのデバイスコンテキスト取得
windc = win32gui.GetWindowDC(hnd)
srcdc = win32ui.CreateDCFromHandle(windc)
memdc = srcdc.CreateCompatibleDC()
# デバイスコンテキストからピクセル情報コピー, bmp化
bmp = win32ui.CreateBitmap()
bmp.CreateCompatibleBitmap(srcdc, 100, 200)
memdc.SelectObject(bmp)
memdc.BitBlt((0,0), (100, 200), srcdc, (0, 0), win32con.SRCCOPY)
# 後片付け
# srcdc.DeleteDC()
memdc.DeleteDC()
# win32gui.ReleaseDC(hnd, windc)
win32gui.DeleteObject(bmp.GetHandle()) 9969ってのは、GDIオブジェクトの最大数にひっかかってるような気がする
リリースしてないハンドルとかがないかチェックしてみては? vscodeでblack使って自動フォーマットしてるんだけどこの前から急にフォーマットされないファイルが出てきた
同じフォルダ内の他のファイルは普通にフォーマット出来てるし訳がわからない
Blackのエラー出力とか見れないのかな? ↑は自決しました
NamedTupleをデータ保管庫として使おうとしてるんだけど、
インスタンスを初期化するときにちょろっと引数に対して処理をしてから内部変数に代入することって出来ないのかな?
簡単に言えばinitがしたいんだけどエラーが出てできない
AttributeError: Cannot overwrite NamedTuple attribute __init__ そういのはNamedTupleじゃなくてdataclass
データ型がほしい -> NamedTuple
データ型にメソッドとかもほしい -> dataclass >>686
immutableだから__new__をoverwriteすればいいんでない まあでもそんなことするくらいだったらdataclass使うよね ありがとうdataclassの方だったのか
あと凄くニッチな需要だとは思うんだけど
initの際の引数で1つの変数に対して複数の型を許容するようにして
型ごとに異なるinit処理をすることって出来るのかな? dataclassは__post_init__()を使って初期化処理をする
frozen=Trueの場合はobject.__setattr__()を使わないと変更できないので注意 >>681
毎回 Reset して最初から実行させれば飛ばされない >>683
Win32API スレで聴いた方が良い >>684
>>693
返信ありがとうです
ソースコードはこれとhndを取得しているところだけで、見当がつかず。。。
WIN32APIスレが有るのですね、こちらでの質問取り下げてそっちで聞いてみます。
お手数おかけしました 超初心者用板なので質問!
例えばiと打つと変換候補にifが出てきたり、fを打つとforがでるとか、その文字の意味によって色が変わったりするのは、所謂エディタを使ってるってことですか? >>696
ありがとナス!
自分に合うやつ探してみる! >>695
板とスレの区別つくようになってな
5ちゃんの初心者からは脱出してーな >>698
みんなそのうち見分けつくようになるから!
初心者脱出がんばれよ! 正しいPythonのイントネーションは?
自分はyにアクセントを置くけど、oに置く人のほうが多い印象 「廃村」と同じでフラットなアクセントの人もいるらしい
リアルでは聞いたことがないけどPaizaの音声がそれだった >>696
便乗ですが、ericで入力補助の設定ありませんか? キャラメルと同じか
都会人ほどかっこつけて↓キャ↑ラメル oにアクセントを置くってのは
Oh my God!のmy godと同じイントネーションでパイソンって言うことになるんだけど
そんなやついる? >>683
リソース使い過ぎ
こっちだと 9994 で死ぬ
回避版
windc = win32gui.GetWindowDC(hnd)
srcdc = win32ui.CreateDCFromHandle(windc)
memdc = srcdc.CreateCompatibleDC()
bmp = win32ui.CreateBitmap()
bmp.CreateCompatibleBitmap(srcdc, 100, 200)
o = memdc.SelectObject(bmp)
memdc.BitBlt((0,0), (100, 200), srcdc, (0, 0), win32con.SRCCOPY)
memdc.SelectObject(o)
win32gui.DeleteObject(bmp.GetHandle())
memdc.DeleteDC()
srcdc.DeleteDC()
win32gui.ReleaseDC(hnd, windc) >>708-709
おれのいもうとは熱心なアンチオブジェクト指向だから
ちょうどそんなかんじで
「ぱいそーん」て発音してばかにしてくる プログラミング知識ゼロで昨日から始めました
公式ホームページの「ゼロからのPython入門講座」が終わったところで現在2週目復習中です
今後簡単なアプリかゲームをゆっくり作ってみたいのですが、
復習が終わった後に何に手を出したらよいかわかりません
参考になる本やサイトを教えていただけると嬉しいです >>714
改訂3版-これからはじめるプログラミング-基礎の基礎
ISBN-10 : 4297101181
ISBN-13 : 978-4297101183 >>715
レスありがとうございます
amazonで購入してみますね
挫折しないように頑張ります sum(iterable,/,start=0)
説明にこう書いてある場合/はどういう意味ですか なるほど
検索でひかからなくて
困ってました
ありがとうございます ひっでぇ文法w
ここで / かよw恣意的すぎる
せめてキーワードだったら スライダーで一つの値は設定できたのですが、
一つのスライダーで範囲指定をしたくて
一つのスライドで2つのポッチがあるスライダーってありませんでしょうか 以下の例のように、「こんにちわ」が出てきたときに反応させるプログラムを作りたいのですがどうしたら出来ますか?
testWord = "こんにちわ"
testList = [
"こんにち",
"こんにちわ、赤ち", #→ここで初めて「こんにちわ」が出てきたので判定させたい
"こんにちわ、赤ちゃん、私がママよ。",
"こんにちわ、赤ちゃん、私がママよ。こんにち",
"こんにちわ、赤ちゃん、私がママよ。こんにちわ、5ちゃん、私がねらーよ"] #→ここで2回目の「こんにちわ」が出てきたので判定させたい
1度判定した「こんにちわ」には反応させずに
次にまた「こんにちわ」が登場したタイミングで判定を行うようなことをしたいです >>726
一つ前の文字列分を削除して、「こんにちわ」を検索すれば? "こんにちは...こんにちは".count("こんにちは") > 1 こんにちわ の回数で反応なのか
こんにちわ の場所と回数で反応なのか
"こんにちわ、赤ち", #反応
"てすと、こんにちわ、赤ち",#には反応していいのかどうか MeCab案件なら簡単に終わりそうだが
そこまでするようなことでもなさそうか >>726
正規表現オブジェクト.search() の第二引数で検索開始位置を指定する
https://docs.python.org/ja/3/library/re.html#re.Pattern.search
pattern = re.compile(re.escape(testWord))
startpos = 0
for s in testList:
m = pattern.search(s, startpos)
if m:
startpos = m.end(0)
print(m, s) >>728
まさにこれです。
range sliderっていうのですね、Dashというのをいんぽーとしてみす!ありがたや〜 489977463X
4800712394
4800712564
4798153192
4899775067
4899774451
4899774117
4899771657
4899772408 プログラミングまったく知らない状態からpythonの勉強始めたけど
最初なんか算数やらされています
楽しいからいいんだけど 1+1 Enter で 2と表示される、とかいうのだろ >>103
JDLA「G検定」対策へ「人工知能基礎」「G検定実践トレーニング」の価格改定(各3,000円)のお知らせ
>人工知能(AI)を学ぶ/学びたい全ての方々のために、基礎教材である「人工知能基礎」(監修:東京大学大学院松尾豊教授)の定価を
これまでの25,000円から3,000円(税抜、学習期間60日間)に、大幅な改訂を実施させていただきました、
また、国と地方のDX推進役ともいえる行政職員の方々向けに、無償プログラムの提供も合わせて開始させていただいております。
同時に、「人工知能基礎」を通して学習いただいた内容をもとに、日本ディープラーニング協会「G検定(Deep Learning for GENERAL)」の受験を目指される方のために、約800題の練習問題を収録したオンライン問題集「G検定実践トレーニング」についても、同じく価格改定を行っております。
これまでの15,000円から、「人工知能基礎」同様の3,000円(税抜、学習期間60日間)に本日より改定させていただきました。 vscodeでa=bを書くと
a半角スペース=半角スペースb
みたいに行ごとに直してくれる拡張機能があった気がするのですがわかる方お願いします。 color_list = ['darkblue', 'grey', 'darkred', 'darkred', 'darkred']
hatch_list = ['/', '//', '/', '//', '/']
plt.bar(left, height, color=color_list, hatch=hatch_list, width=width,
tick_label=labels, align='center')
上のコードでハッチが表示されません
最後の一行で直接hatch='/'と指定すればOKなのですが、
リストを使ってハッチの指定はできないのでしょうか? >>748
たぶんmatplotlibの質問であろうとエスパー matplotライブラリの質問は別スレでしたか・・・。 データフレームに関する質問です。
特定の列がNanのみであるかどうか判定するにはどうすればよろしいでしょうか?
(列を削除、置換するわけではなくあくまで判定したいだけです。) >>752
df[‘foo’].isna().all() >>753
ありがとうございます!確認できました! 質問・アドバイスよろしいでしょうか?
Pythonで統計分析したくて独学を初めて間もないのですが,PCが壊れてしまいました。
そこで買い替えに当たってwindows,macどちらのos が良いのでしょうか?
Progateでとりあえず触れていただけなので,環境構築とかも全然していなくて,osによる違いもさっぱりです。
今後利用するにあたって使い勝手がいいものとかあるのでしょうか?
ご教授いただけると嬉しいです。 Ubuntuが一番楽で次いでMac≧Windows
でもどうせPipenv系入れるんだし難易度はそこまで大差ない
今後機械学習とかに手を出すつもりならGPU積んだUbuntu Server建てるのが吉 beautifulsoupのテーブル操作
table.find_all('th')はうまくいくのに
tr = table.find_all('tr')はなぜか
tr[0]にtr要素が全部入ってtr[1]に0番目のtr以外のtr要素が入って、、
みたいな挙動に・・ 自己解決?
再帰してtr.find('td')で上のひとつだけ取得して配列にいれて返したら
欲しい情報になった・・
そういう仕様なんですね 1日調べて分からなかったから教えてください、、、
python3.7.6、Windows10環境で関数にタイムアウト機能をつけようとしています
そこで、wrapt_timeout_decoratorかtimeout_decorator(こっちではそのままだとwindowsでは使えないみたいなのでuse_signals = Falseをつけて)
のどっちかのライブラリを使って実装できれなと思っているが、
どっちをやってもPicklingErrorが出てしまう・・・
このエラーの原因の解決方法か別の方法でタイムアウト実装する方法教えてください・・・ >>760
エラーの原因を質問する時は
エラーを再現できる最小限のコードを公開してね
ループで都度タイムアウトしてないかどうかをチェック可能な処理じゃなければ
非同期、マルチスレッド、マルチプロセスのいずれかを利用する必要があって
どれでやるにしてもそれらの基本を理解してないと難しいかな
非同期の例は公式にもある
https://docs.python.org/3/library/asyncio-task.html#timeouts >>761
失礼しました・・・
例としては
main.py
import test
def main():
try:
test.check()
except TimeoutError as e:
print(e)
if __name__ == "__main__":
main()
--------------------
test.py
import time
from wrapt_timeout_decorator import timeout
@timeout(20)
def check():
#タイムアウトしたい長い処理
大体こんな感じで、エラーが
PicklingError: can not pickle , bad items: [], bad objects: [], bad types []
ちなみにtimeout_decoratorを使った場合だと
@timeout_decorator.timeout(20, use_signals = False)
にして、出てくるエラーが
PicklingError: Can't pickle <function check at 0x0000023FC9132AF8>: it's not the same object as test.check
って感じ pickleを使ってる部分を見ないとなんとも言えないね >>763
正直タイムアウトのライブラリ使ってるだけだからわからないんだ・・・ >>765
そこのブログを参照して>>762を作ったんだけどエラーが・・・うむむ pickle化できないオブジェクトってのもあったと思うが。 恥を承知で...
初めて環境構築ってのをやったんだけどVSCodeで↓のエラー出てるんだけど何をどうしたら解決する?
anacondaの何かを参照する所が間違ってるのかなって思うんだけど
https://i.imgur.com/LXXt2m5.jpg condaのある場所にパスが通ってないような
anaconda path windowsでググってみれば プログラミングを勉強する前にPrintScreenの使い方を勉強したほうが
余計な恥を晒さずに済むぞ せめて女子じゃないとこういう誘いは意味がないぞ
そう、俺以外はな(じゅるり んーなんかいろいろやってるけどダメっぽいなぁ
>>772
それぐらい知ってるわいメンドイダケ(´・ω・`) eric6を使い始めましたが、Visual studioのエディタの様にドットを入力したメンバー関数とか変数の候補を出す機能はありますか? >>777
直前に見てた別スレとなめらかにつながってて俺震撼
でもって
777はなんでツーピースくんなんだってばよ…
たぶん769あてなんだとはおもうが
間あいててアンカー省略すると
周囲にエスパーを強要してイクナイ(・A・) >>769
そもそも anaconda で入れた?
純正は pip 系かと
win + shift + S で画面ハードコピー(範囲選択付き)や エディタは何にしたらいいですか?
プロ用じゃなくて、このスレらしく初心者用でお願い a1bc23def456gh32z
という標準入力があった場合、
[a, 1, bc, 23, def, 456, gh, 32, z]
と文字と数字で切り分けてリストに入れる方法を探しています。
s = list(input())
として一文字ずつ取り出して判別していく方法は思いつくのですが、
数字と文字で簡便に切り分ける方法があればお教え頂けると幸いです。
よろしくおねがいします。 >>781
import re
re.findall(r'[A-Za-z]+|[0-9]+', foo)
で分けられるけど分けた後どうしたいかも含めて考えたほうがいいと思う
1文字ずつ判定していくのはそれほど悪い方法ではない vscodeの補完の主張がうざすぎて、かえって誤入力が増える Pythonの勉強始めたばかりですが、よい基本書あったら教えてください
当方プログラミング初心者です。 >>788
スッキリわかるPython入門 おすすめ 入門python3はいかがですか?オライリージャパンから、今度新板がでるようですが >>781
re.split(r'(?<=[^0-9])(?=[0-9])|(?<=[0-9])(?=[^0-9])' , input())
で出来た
>>> re.split(r'(?<=[^0-9])(?=[0-9])|(?<=[0-9])(?=[^0-9])' , input())
a1bc23def456gh32z
['a', '1', 'bc', '23', 'def', '456', 'gh', '32', 'z']
全部文字列になっちゃうけど
(?<=[^0-9])(?=[0-9]) という正規表現で切り替わりの境界を見つける >>781
Ruby では、
1文字ずつ処理して、チャンクに分けて、
配列化された各文字をつなげてから、それを蓄積変数(配列)へ追加していく
str = "0a1bc23def9"
p results = str.each_char.chunk { |char| "0" <= char && char <= "9" }
.each_with_object( [ ] ){ |( key, ary ), accm| accm.push ary.join }
出力
["0", "a", "1", "bc", "23", "def", "9"] いつも2回書き込むから分かりやすい
屑同士仲良くしとけ >>799さん、ありがとうございます。
オライリー本か望洋先生の本か迷っています。オライリージャパンからv3.9の新版がでるのでそちらにしようと考えています。 for s in csvlist:
dic[(s[1],s[2])]+=1
みたいなのをリスト内包括表記で書く方法はありますか? >>802
無理矢理
dic={(s[1],s[2]):dic[(s[1],s[2])]+1 for s in csvlist} >>804
同じkeyがあれば上書きされるだけ
In : csvlist = [[1, 2], [1, 2], [2, 3], [4, 5], [1, 2], [2, 3]]
In : dic = {(1, 2): 0, (2, 3): 0, (4, 5): 0}
In : dic={(s[0],s[1]):dic[(s[0],s[1])]+1 for s in csvlist}
In : dic
Out: {(1, 2): 1, (2, 3): 1, (4, 5): 1}
In : dic={(s[0],s[1]):dic[(s[0],s[1])]+1 for s in csvlist}
In : dic
Out: {(1, 2): 2, (2, 3): 2, (4, 5): 2} >>808
for文の高速化ができれば何でもいいんですが... nkmkっていう読みづらいクソサイトがいっつも検索の上位にくんの何とかなんない? >>809
forが遅くなるのはループ内の処理の問題であって、とにかくリスト内包に直せば高速化する訳ではない Python(基本ライブラリ)の場合は、内包表記の代わりの書き方となると、
sum(map(fliter(...)))っていう書き方になるからな。
段数増えてくると読み辛い。 Pythonがメソッドチェーンを嫌う理由がさっぱり分からん メソッドチェーンはクソだろ
今導入するならパイプ演算子にしてくれ ただ単機能を使うだけなら使い手からしたら同じだろうが内実は全然違う。
self(this)の呪縛から解き放たれているため、レシーバーがなんたるかに依存せずに機能を作れ、使用時に自由に組み合わせ(composition)ることができる。
機能だけに集中して作成することができる最小単位のビルディングブロックであり、思考の枷を解き放つ…! >>816
パイプでメソッドチェーンのようなことはできるが逆は無理。
少なくとも>>813に必要なのはメソッドチェーンじゃない。 どうしてもパイプを使いたいなら、サードパーティになるが、fn.pyでも使うんだな
それなら、>>で処理をつなぐことができる >>814
嫌ってるわけじゃなく基本の設計思想がオブジェクト指向と親和性が低いだけ
ビルトイン関数のsum()やlen()を考えれば分かる
Python使うなら諦めるしかない
>>817
残念ながらPythonは標準ライブラリの作りの問題でパイプ演算子とは相性が悪い
一時期ライブラリ使ってやってたけどPythonで関数型風を頑張るのは徒労だった
Pythonの場合は結局は言語が半ば強制してる旧来のプログラミングスタイルでやったほうが可読性も生産性も良い
>>813のは他の言語ならreduceやfoldを使う
Pythonでもreduceでできるけどチェーンできないのであんまりメリットがない PythonはCOBOLの後継言語という位置づけだから
あまり凝ったことをしない方がいいよ
オブジェクト指向もできるだけ使わない方がいい ただ直線的にデータを加工するだけの一本糞バッチが多いという点においては、確かにCOBOLの後継という面もあるかもね >>810
俺はTECH PLAYというページが嫌い
前置きが長くて余計な写真を貼ってるから スキャルピングの名著的なのある?(^_^;)
本屋行っても初心者用しかないわ、美汁やなくてpandasに詳しいやつ、ホームページでもいいわ >>810
むしろそこ以外がウザいからブロックしとる。nBlacklistとか入れろよ ワンライナーやめて関数作ったり中間変数使えばいい話だろ。馬鹿なのかな? 中間変数って…w
コードの冗長さに無頓着な奴には分からん話なのかな わかりづらい1行より、わかりやすい100行の方が遥かに有用 メソッドチェーンの話からワンライナーの話してるの? >>833
マ界隈には、
1行こそ至高のわかりやすさ! と信じて疑わないパラノイアけこういるいる pythonみたいなレガシー言語しか知らないと脳みそまでレガシー化するいい例だな 可読性w低レベルな底辺コーダーが自分が読めないからって言い訳によく使う言葉よね PytorchをNCS2対応に改修するぐらいの
スキルを見せて欲しいものです >>839
そのうちdeprecatedで消されるコードをよく使う馬鹿がこういうこと言ってるよなw 関数型マンセー馬鹿もオブジェクト指向馬鹿と同じく淘汰されるのに20年くらいかかりそうだな。 スレ違いの5ch超初心者は>>1を読んでROMってなさい >>833
わかりやすい100行って例えばどういう例?
100行という長さだけで分かりにくくなりそうなもんだが >>846
お前すごいな、自分の顔と髪と服装が異常なことを自覚してからそういう書き込みしような? >>846
太郎冠者と次郎冠者のどちらか by 附子 うちも最初は1行で書いたほうが速度が速くなると思ってた pytorchでLSTM組もうとしてるけど解説がえらい難しい
引数がどこに渡って、なんでその数字になってるかさっぱりわからん リカレントニューラルネットワークって
オワコンって聞いたけど
まだ需要あったのか😅 1列目にx成分、2列目にy成分、3列目にz=f(x, y)成分が書かれた表ファイルがあるとします。
これを3次元プロットするために各成分を
x =
[[0, 1,..., 99],
[0, 1,..., 99],
...,
[0, 1,..., 99]],
y =
[[0, 0,..., 0],
[1, 1,..., 1],
...,
[99, 99,..., 99]],
z =
[[f(0, 0), f(1, 0),..., f(99, 0)],
[f(1, 0), f(1, 1),..., f(99, 1)],
...,
[f(99, 0), f(99, 1),..., f(99, 99)]]
みたいな感じで二次元配列として表示したいです。
x成分とy成分に関しては
x, y = np.mgrid(0:99:100j, 0:99:100j)
みたいにすれば良いのだと思いますがz成分はどう読み込むのが簡単でしょうか? youtube apiって何に使うんですか?
動画のリンクを作るとして、どういう切り口なら面白いでしょうか?
例えばゲーム実況動画を集めるにしても、どういうフィルターをかけますかね(´・ω・`) Youtube APIを活用して人気ゲーム実況者になりたいです
どうすればなれますか? YouTube APIを活用してゲームを実況する所から始めなさい そしてゲームの権利を持っている会社に訴えられれば良いんだ
富士額の鼠とか >>856
こういう障害者増えたよな
現実世界的にも >>856
周りのことは気にせず好きにやればいいよ。応援してます。 訳:バカチューブして炎上するのたのしみだなぁ(・∀・) >>861
あなたは医者なのでしょうか?
医師免許を持ってないのに診断を行うことは良くないと思います プログラム技術板に居る気持ち悪いPCオタク「電車とか好きそう」
w exData
みたいなフォルダ名に入ったファイルをpython側で開ことするとエラーが出るのですが、
命名規則に違反しているのでしょうか?
exdata
だとエラーはでません。 >>868
普通に開くことできるよ
まずはエラーメッセージを確認して >>867
パソコン嫌いなのにこの板見てる奴想像したらなんか草生えた ローカルな変数をグローバル宣言すればガベージコレクションを避けられますか? 地球を爆破すればゴキブリ絶滅させられますか?みたいなw
ようするに、結果的に避けられるよw >>871
なんでガベージコレクションを避けたいの? ローカルとグローバルスコープの違いをわざわざガベコレ言うとか欧米かよw __関数名_変数名 とかすればローカル変数いらなくね? >>876
関数の中でまた同じ関数が呼ばれたとき、どうするの? >>877
関数は関数名で参照できるんだから関係ないっしょ >>879
昔BASICで再帰的なことやって上手くいかなくて泣きそうになった覚えある
小学生だったけど
そのときは、>>881の言うように変数を配列にしてスタック的なことを実装したけど
でも、自力スタックがめんどくさいからローカル変数ってものができたんじゃないの。 より簡単にデスクトップアプリが作れるPySimpleGUIを使ってみよう
2021/03/03 11:20
著者:クジラ飛行机 >>883
検索って言うか再帰的なデータを処理する時は普通使うでしょ
言語パーサーとかフォルダー内のファイルサイズの総計求めたりとか 配列から最低n個、最高len(配列)個を取り出すってどうやるんだっけ?
ary = ['a','b','c','d','e']
ary.reverse()
ary = ary[-4:]
ary.reverse()
ary
こういう感じで(できれば最初の配列順のままやりたい)
-4のとこが例えばlen(ary)超える-10とかだったら
'a','b','c','d','e'全部取り出す、みたいな 質問した瞬間
ary[:4]
でいいことに気づいた お騒がせしました >>892
必須じゃないよ
再帰で書くほうが楽だけど >>893-894
忘れてて、思い出すと実はかなりイイ!!(・∀・)やつだよね、スライスくんは。 {'key1': 'val1', 'key2': 'val2', 'key3': 'val3'} ←辞書A
{'key3': 'val3', 'key1': 'val1', 'key2': 'val2'} ←辞書B
辞書Aを辞書Bのように変更する方法を教えて下さい v, w, x, y, z がそれぞれ異なる正の整数のとき
w**5+x**5+y**5+z**5 == v**5
となる組み合わせを少なくとも一つ求めよ >>897
foo = {'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}
bar = OrderedDict(foo)
bar.move_to_end('key3', False)
dict(bar)
面倒くさいな
順序が重要ならdict以外のデータ型を使ったほうがいい気がする >>900
見た目を整えるのが目的でした
即レス感謝 >>898
これでも回して一生PCの前で待っていなさい
import itertools
for w,x,y,z,v in itertools.product(range(1,10**100),repeat=5):
__if w**5+x**5+y**5+z**5==v**5:
____print(w,x,y,z,v)
____exit() >>897
>>> a = {'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}
>>> b = {'key3': 'val3', 'key1': 'val1', 'key2': 'val2'}
>>> b == {k: v for k, v in (a.popitem(), *a.items())}
True これたぶん、順番かんけいなくa==bはTrueになるわ
気になって目が覚めたけど布団からでられんくて試せん 3.7以降は挿入順が保証されてるんだけど、equal判定には影響しないと。
まあ当たり前だわな。 >>902
できた
27 84 110 133 144
27 84 133 110 144
27 110 84 133 144
27 110 133 84 144
27 133 84 110 144
27 133 110 84 144
thx
exit()してるのにw固定の分だけ6個出力されるのはなぜ? >>904
恥を忍んで聞きたいのだけど、
b == {k: v for k, v in (a.popitem(), *a.items())}
この一行を内包表記を使わないで書いてください >>908
右辺は空のディクショナリにfor文で要素を追加していくだけやで
でも式で表現できないから左辺との比較演算したいなら関数化する >>908
比較演算は無視してください
c = dict()
for k, v in (a.popitem(), *a.items()):
____c[k] = v pysideのデザイナでフォームを作っていますが、実行すると全然デザイン通りの表示になりません
コントロールが全部サイズが小さくてつぶれてしまいます
なにが原因なのでしょうか? >>909
>>910
おお、ありがとうございます! 順序比較
result = map(lambda x, y: x == y, c, b)
print(all(result))
# True すみません。
全く単純なことだと思いますが、教えて下さい。
dataflameの任意の列のデータからvalue_countsを取得しました。
kosuu = df.iloc[:,i].value_counts()
print(kosuu)
とすると
30000 4
34000 1
とkosuuに取得されています。
この後に4とか1を条件にしたいのですが、個別の取得方法が
わかりません。的外れかも知れませんが、30000と34000は
print(kosuu.index[0])
print(kosuu.index[1])
で取得できました。
print(kosuu.index[0,0])
print(kosuu[0,0])
ではダメでした。どうすれば4を取得できますか。
初歩の初歩だと思いますが、これで4時間悩んでいます。。。 >>914
ttps://note.nkmk.me/python-pandas-value-counts/
>ユニークな要素の頻度(出現回数)
あたり? >>915 様 916 様 ありがとうございます。
なるほど、要素をネストすれば行けるんですね。
kosuu.index[0] が30000なので
print(kosuu[kosuu.index[0]])
とすると、4が無事取得できました!
うれしいですが、こんな感じでやるしかないんでしょうか。
ちょっと不格好というか、わかりにくいというか。。。
でも、取得できればOKなので、ありがとうございました!
5時間ぶりに前に進めます。(汗) >>918
えーと、何番目の要素なのかを指定したいならkosuu.iloc[0]とかkosuu.iat[0]で
>この後に4とか1を条件にしたいのですが
4とか1とかを条件にして何をしたいの?
個別に値を取得しなくてもSeriesやDataFrame全体に関数を適用すればいいケースだったりしない? >>914
さくっとサンプル作ったけど、そんなややこしい事しなくてもでも良いぞ
https://ideone.com/HPzh9Q
とりあえずデータフレームでの条件抽出の方法と
at、iat、loc、ilocの使い方を調べた方が良い >>920
がんがってるところあれなんだが
>>919への応答いかんによっては
役に立たない可能性がががが day name
23 orange
25 apple
のようなdfがあったときname列の0行目を取り出すにはどうすればいいのでしょう?
(列は名称、行は番号で取り出ししたいのです)
fruit = df.loc[0,'name']
だとエラーが出ます >>923
ありがとうございます
でもなぜかエラーが出ます df.loc[0,'fruit']
と
df=df['fruit']
df.iloc[0]
って等価ですよね?
上だとエラーが出たり出なかったりして
下だとエラー出ません
なんでなんだろう・・・? >>925
上と下は違う
違うものだから
結果も違う 「でもなぜかエラーが出ます」
エラーが出てるのに、なぜかエラーの原因を調べようとしないんです
なんでなんだろう・・・? そりゃ自分の貴重な時間よりヒマそうな人物の無駄だろう時間を活用する方が大事だろ?
これは代弁だよ代弁 エラーの原因を自力で調べられない、もしくは調べても分からないなら
エラーを再現できる最小限のコードを提出した上で原因を質問しろ ♪なんてったってID
私のID (Your ID)
IDがかぶったね〜
(さぁ みなさんご一緒にー)
yeah! yeah! yeah! 「ID被るなんてあり得ない!自作自演だ!」って言い張る奴いるよね。
IPv4足りなくて使い回してるのに。 そんな必死にならんでもいいんじゃ>>928-933 クソやろうの代わりにデバッグするとか世の中で一番腹立つ作業じゃん IDが被ることなんてよくあるけど>>928の次のレスでいきなり被るなんてまず無いだろ
機内モードを押し忘れた対立煽りの馬鹿って線が濃厚だねぇ〜w >>933は機内モード押した後に悔しくて書いちゃったかな?w
ID:4CH/cwMqが出てこなけりゃ俺の推理が当たってることになっちゃうねぇ〜w >>931
枝状分岐宇端末点の自分だよ。
僕と契約して、ジアースのパイロットになってよ 0と1で構成された、2xNの配列で0と1の境目の位置を求めたいのですが、
for文でN列までループさせ、N-1とNを比較、0と1の境目になっていたら、
2行目も境目になっているかを同様に確認して境目を確定させるしかないでしょうか
0010111111
0000111111
↑3列目ではなく、5列目の位置を知りたい うーん、何がしたいのかよく分からん。
物凄く簡単なことを複雑に表現している気もしないでもない。 >>939
文字列なのか、正数の2進数表記のことなのか、何を言いたいのかわからん。
ビットのアンドを取ればいいとかいう話ではない? >>939
0010111111
0000011111
↑これだと該当なし?
0110110111
0000011111
↑これも該当なし?
0110111111
1100011111
↑これも該当なし?
0010111111
0100011111
↑これだと3列目? >>939
文章をそのままコードに落とすとこんな感じになると思うけど…
N = 10
arr = [[0,0,1,0,1,1,1,1,1,1],[0,0,0,0,1,1,1,1,1,1]]
x = -1 # 見つからなかった場合
for i in range(N-1):
if arr[0][i] != arr[0][i+1]:
if arr[1][i] != arr[1][i+1]:
x = i+2
break
print(x) >>941
ゼロとイチの境界なら1bitシフトしてXORすればいいけど
2行分をどう扱いたいのか分からない。 hoge = [[a,100],[b,50],[a,200],[a,50],[b,3]]
みたいな感じの二次元のリストの各要素の一番目の要素で昇順にソートして
さらに一番目の要素が同じどうしは二番目の要素を見て降順に並べたいのですが
うまくできる方法をお教え願います
hoge = sorted(hoge, key=lambda x: (x[0],x[1]),reverse=True)
のように書いたり試してみましたが両方とも降順になってしまいます。 hoge = sorted(hoge, key=lambda x: (x[0], -x[1]))
じゃ、ダメ? >>940,941,942さん
すみませんわかりづらく・・・
943さんのコードがまだ読み溶けていないのですが、
おそらくそれになっているかとおもっていて、01の並びは配列の意味で書いていました。
1行目と2行目の値が同じ列で初めて1になる列位置が知りたい意味でした。
[[0,0,1,0,1,1,1,1,1,1]、
[0,0,0,0,1,1,1,1,1,1]] p=[0,0,1,0,1,1,1,1,1,1]
q=[0,0,0,0,1,1,1,1,1,1]
for i, (x,y) in enumerate(zip(p,q)):
__if x==y==1:
____print(i)
____break
内包表記でpとqの和を取ってindexで検索したほうが速い気がする >>947
0から1に切り替わってる箇所は対象だけど
1から0に切り替わってる箇所は対象外ってことなのか
def foo(arr):
__for i, pair in enumerate(zip(arr[0], arr[0][1:])):
____if pair == (0, 1) and (arr[1][i], arr[1][i+1]) == (0, 1):
______return i+2
4つの値を確認しないといけくてビット演算で簡略化できそうにないので
O(n)でやる以外にはないんじゃないかな プログラム組んでいるんだけどさあ
一週間で出来ないとモチベが下がってそのまま放置になること多いんだよな、、
自分が楽をするためが動機だから、もういいわ!ってなる 設計が終わったら脳内では不具合無く動いてるから満足してしまうよな 自分の過去作のゴミ設計の無駄を探して再設計するの好き 雑に書いた手続き型のプログラムをオブジェクト指向で書き直して自己満足することはよくあるけど
ぶっちゃけ個人開発なら手続き型で十分だよな 手続き型(Imperative)の反対は宣言型(declarative)だぞ。
手続き型かどうかはオブジェクト指向かどうかとまるで関係がない(直交する)
CもC++もC#もJavaもJavaScriptもPythonもPHPもGoもRustもみんな手続き型。
Prolog属などが宣言型。
Prologはパフォーマンス上カットなどの仕組みがあって純粋な宣言型ではないが。
数理証明系のドマイナー言語には純粋な宣言型のものもあるとか。
メジャー言語はほぼ100%手続き型。
HTMLやCSSはプログラミング言語ではないので除く。
たまにメジャー言語で宣言的に書けるのがどうのこうのという話が出てくるが宣言「的に」って言ってる時点で気づこうな。 手続き型プログラムってProcedural programming(procedure:手続き)だと思ってたけど。
厳密には手続き型とオブジェクト指向は対義ではないけど、
「関数を呼び出す」っていう手続き型の根本的な構造の限界に対して
オブジェクト指向がもてはやされてきた歴史があるから、あながち間違いではないと思う 正確にはimperativeは命令型。
その反対が宣言型(declarative)。
手続き型(procedural)は命令型(Imperative)の派生概念。
手続き型であれば必ず命令型である、という関係。
よく同義語として用いられがちだが、ブロックもスコープも備えていない言語は命令型言語であると言えても手続き型言語であるとはふつう言わない。
ところがオブジェクト指向は手続き型言語の標準装備となってきている一方で宣言型言語にも取り入れることは可能なので、やはり直交概念ではないかと思う。 1つのプログラミング言語が両方の要素を持ってることはよくあることだけど
手続き型プログラミングとオブジェクト指向プログラミングは直交した概念ではないよ クラス定義時はメソッドの中身は手続き書いてるし、
メソッドコール時はイチ手続きとして記述してるじゃん。
つまり手続き型にオブジェクト指向加えることも可能だし、加えないことも可能というだけで、オブジェクト指向だから手続き型じゃないというのは完全に間違っている。
これはCもC++もC#もJavaもJavaScriptもPythonもPHPもGoもRustもCommon LISPもObject PascalもSwiftもKotlinも同じ。
詭弁を弄してる暇があったら勉強するべき。 オブジェクト指向だから手続き型じゃないというのは、
Qちゃんはピッチ走法だから走ってない
真央ちゃんはフィギュアしてるからスケーティングしてない
こう言ってるのと同じです。
修辞的にはありかとも思いますがね。 XVIEW なんてC言語だがオブジェクト指向を
名乗っているぞ >>966
プログラムの中になんらかの手続きが書いてあれば
それらはすべて「手続き型プログラミング」と呼べるという定義ならそうかもね
一般的な定義とは違うけどそういう考え方があっても別にいいと思うよ 定義じゃなくてパラダイムだから
分類に使うと失敗する >>969
一般的でない定義を考えるのは自由だが、他人との議論で使うなら事前にそう定義すると断って話を進めないと他の人は混乱するだけだろう >>971
本人が一般的な定義だと思ってるんだからどうしようもないだろ
やんわり指摘したレス見て自省すればよかったのにな 関数型∩オブジェクト指向 とか、
宣言型∩オブジェクト指向 とか、
具体的な言語実装の例はあるのかな?
オブジェクト指向でよく言われるオブジェクト指向たりうる要素が直感的には
割と手続き型に依存してるような気がするが、あまり深く考えたことないのでよくわからん >>968
C言語でオブジェクト指向というのは普通にあるでしょ。gtkとか最たるものじゃん。
糖衣構文はマクロぐらいしかないかもしれないけど。 >>973
関数型は参照透過性がメリットなのに
クロージャーとかやるとオブジェクト指向と同じじゃん。 >>973
手続きが含まれたら手続き型らしいから
関数が含まれてたら関数型
オブジェクトが含まれてたらオブジェクト指向なんじゃねーの
知らんけど CでADT使ってればすぐオブジェクト指向って言うやつも大差ない じゃあオブジェクト指向と関数ベタ書き比較する時はなんて言えばいいんだ? >>979
ADTのことを言ってるなら名前の通り"抽象型を使って書く"とでも言えば?
抽象型を使ってればオブジェクト指向? 定義で揉めやすいのは名前が悪いから
それぞれ手続き中心指向、オブジェクト中心指向、関数中心指向に脳内変換しとけばどうでもよくなる
それぞれ直交した概念でもなければ排他的な分類でもない 言語の方が複合的なパラダイムに対応していても覚える頭が1ビットしかないから其れだと困るねん 宣言型∩オブジェクト指向は実験的prolog拡張実装がいくつかあった気がする。
関数型はオブジェクト指向と相性悪いつか関数型勢からは唾棄すべき害悪として忌み嫌われてる印象。
世の中でオブジェクト指向といったら実質99%は手続き型∩オブジェクト指向だと思う。
C++以前から、smalltalkからこのタイプだもん。 >>981
確かに「〜型」という言葉で1ビット二元思考になるやつが多いのかも
「〜的」とでも訳しておけばよかったのに a = hoge()
a.hogeset(1)
こんな感じてコンストラクタと別メソッドで初期設定しなきゃいけないクソめんどい部品があるんたけど1行でやる方法ない?
a = hoge().hogeset(1)
イメージはこんな感じで書いてメソッド呼び出しつつ変数aにはオブジェクトhoge本体を収めたい(hogesetは何も返さない) >>988
そういうクラスを作ればいいだけじゃね? GUI部品でsetVisible(True)とかなら略しない方がいい >>988
特に何もせず1行で書くのは無理じゃないかな
selfをreturnするようなデコレータを作って
各種set系のメソッドを上書きするか別名で定義してやれば1行で書けるようにはなる
やる価値があるかどうかは状況次第
https://techiedelight.com/compiler/?G6Nb >>991
わォエスパーかよちょっと違うけど
tkinterのボタン配置別メソでするのダルいんじゃあ〜
>>992
やっぱムリかぁ
でも2行で書くの負けな気がするから関数カマスことにしました (結局5行になってるのは知らない、たくさん置くし・・・。)
def my_hoge_create(param):
a = hoge()
a.hogeset(param)
return a
a = my_hoge_create(1)
>>993
めっちゃ興味あるけど3.5だからまた今度にするわ (進歩しないゴミ) >>993
えーこういうこと?
(a := hoge()).hogeset(1)
条件式とかの中ならありだと思うが2行でも書けるところに使うのは気持ち悪いな gzipか普通のテキストファイルかを名前で判別して読み込みたいんで下記のように書いてるんですが、read_fileがif/elseで2回出てくるのが冗長っぽいのでif/elseの後にread_file()をしようと思うとI/O operation closedとエラーが出ます。
with open後にインデント変えたので閉じられたたのかなと思うのですが、
gzipかそうじゃないかのファイルオブジェクトとやらをif文で決めた後に、1回の関数で処理するようなスマートな書き方出来ないものでしょうか?
現状
def read_file(f):
data = f.read()
…
name = 'hoge.txt.gz'
if '.gz' in name:
with open(name, mode='rt') as f:
read_file(f)
else:
with open(name) as f:
read_file(f) mode="rt" if ".gz" in name else "r" func = gzip.open if name.endswith(".gz") else open
with func(name, mode="rt") as f:
read_file(f) このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 66日 13時間 56分 22秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。