【まず1嫁】くだすれPython(超初心者用) その53

レス数が950を超えています。1000を超えると書き込みができなくなります。
2021/03/16(火) 07:19:44.36ID:PfTIXkDh
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがあるのでそっち池。
「Ruby」「某言語では」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

このスレッドは「お勉強」スレのほうには書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。

★エラーを解決したい場合は、
  表示されてるエラー全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
  実行環境(Pythonのバージョン・OSとIDEの種類とバージョン)をシッカリ書くこと。

Pythonの★ソースコードをそのまま5ちゃんにコピペすると、インデントが崩れてチヌ★
5chの仕様【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】のため、どうにもなりましぇん。
↓等の、いわゆるコードう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(超初心者用) その52【まず1嫁】
https://mevius.5ch.net/test/read.cgi/tech/1610137345/

次スレは >>985 あたりが挑戦してくだしあ。(980過ぎて自動落ちは、無くなって久しい)
### END OF TEMPLATE ###
2021/06/04(金) 16:58:05.10ID:tVKHcgFl
>>897
引用についての公式の見解のことです
調べましたが出てきませんでした
スタックオーバーフローなどのQ&Aも出てきません
たぶん引用が当たり前すぎるので、誰も質問もしていない感じでしょうか?
2021/06/04(金) 17:05:10.09ID:xxsePxeY
>>898
「著作物/引用ルール」でググれ
一般常識の範囲だから、文化庁か法律家のサイトがおすすめ
2021/06/04(金) 17:21:50.32ID:tVKHcgFl
>>899
回答ありがとうございます
2021/06/04(金) 17:23:00.49ID:+b2D6xvw
MIT などの、ライセンスが付いていないの?
2021/06/04(金) 17:26:41.44ID:SUVTI0z/
https://qiita.com/bremen/items/c5aa9446e73aa4bc1de0
ossライセンスについての記事

調べたらcythonはApache Licenseみたい
てかossなんやから引用するのは自由やぞ
引用したものを改変してプログラ厶組んだときにそれを公開しないといけない義務があるライセンスのやつがあったりするだけで引用はなんならまるっと全部コピペしても何も問題ない
そんなこと普通せんと引用元のURL貼るけど

あとは一般的な引用ルールに従って引用したなら引用したと明示すればok
2021/06/04(金) 17:35:15.87ID:tVKHcgFl
>>902
回答ありがとうございます
OSSの引用で訴えられたという事例もないと思うので、問題ないというのが一般的な認識ですかね
2021/06/04(金) 17:44:54.37ID:SUVTI0z/
普通に個人がブログに貼るだけなら大丈夫
ソースコードを利用して作ったアプリで金儲けしてるのにライセンス違反でコードを公開しなかったりするとossだけど著作権違反だったかそれに近い感じのもので訴えられることはあると思う

あとはossと違ってソースコード開示してても著作権は保持してて再配布の禁止とかしてる場合もあるからそういうのの引用は知らん著作権者に尋ねるべきやと思う
2021/06/04(金) 17:49:24.30ID:tVKHcgFl
>>904
わかりました
一応python.orgに問い合わせてみます
2021/06/04(金) 18:20:59.22ID:UL/g29xp
>>902
cythonじゃなくてCPythonな。別物
2021/06/04(金) 18:25:13.66ID:SUVTI0z/
>>906
あほんとやすまん
ライセンスも違ったわ
まあどっちみちossやから今回の引用に関しては問題ないやろ
2021/06/04(金) 20:36:30.06ID:a6XWEKie
pythonはpythonを商用利用した人にソースの公開を
要求してるでしょうか否
2021/06/06(日) 05:06:01.96ID:v26ARvQ7
arr1 = [["北海道","札幌市"],["青森県","青森市"],["岩手県","盛岡市"],["宮城県","仙台市"],["秋田県","秋田市"],["山形県","山形市"],["福島県","福島市"]]
arr2 = ["秋田県","福島県"]
という2つの配列があったとして
[['秋田県', '秋田市'], ['福島県', '福島市']]という配列がほしい場合、

arr3 = []
for x in arr2:
....for y in arr1:
........if y[0] == x:
............arr3.extend([y])
以外にいい書き方ってありますか?
2021/06/06(日) 06:02:27.68ID:c7m87H9N
[p for p in arr1 if p[0] in arr2]
でいけるかと
911デフォルトの名無しさん
垢版 |
2021/06/06(日) 06:59:38.38ID:TkNBt396
arr2はsetにしないと遅いよ
2021/06/06(日) 07:53:08.95ID:RJFSPZSM
2要素ならsetより配列の方が速いんじゃね
Pythonの実装にもよるけど原理的にはそのはず
913デフォルトの名無しさん
垢版 |
2021/06/06(日) 08:13:26.50ID:b+8h8Rir
2要素ならそりゃまあ…
一般的な話
2021/06/06(日) 09:03:08.60ID:FIycCTNf
>>909
arr1を連想配列にするわけにはいかんの?
2021/06/06(日) 12:20:46.75ID:n+sQSuEO
inの比較は2要素でもsetのほうが速いよ
このケースは都道府県のほうをdictにするから使わないだろうけど
916デフォルトの名無しさん
垢版 |
2021/06/06(日) 12:54:39.41ID:DGB8ER8o
pathlibのis_dirとis_fileてありますけど
必ずどちらかですよね? どちらにもTrue/Falseを返すやつはいませんよね
917デフォルトの名無しさん
垢版 |
2021/06/06(日) 13:00:32.07ID:DGB8ER8o
あ、実在パスをiterdir()したときの子パスの話です
2021/06/06(日) 13:11:50.10ID:zdsuBAAw
子パスも含めてリンクとかでないならたぶんそれで合ってる
2021/06/06(日) 13:13:07.51ID:FJMZOWZ2
is_fifoとかis_socketとかいろいろあることから察しろ
2021/06/06(日) 13:24:39.82ID:c7m87H9N
究極的にはファイルシステムやOSの実装に依存して、そんな変なものが未来永劫ないという保証はないだろうから、pathlibではそこは担保できないんじゃないかな
921デフォルトの名無しさん
垢版 |
2021/06/06(日) 13:27:50.67ID:DGB8ER8o
>>918
windowsだと.linkはis_file()なんすよね
共有フォルダはdir
思いつく限り試したけど、何かあるのかなあと思って
2021/06/06(日) 13:46:38.97ID:RoRkDiVo
リンク先が存在しないシンボリックリンクは両方Falseになるけど実害はないんじゃね
923デフォルトの名無しさん
垢版 |
2021/06/06(日) 13:48:43.76ID:NyhjUSek
あーリンクってリンクファイルじゃなくて元を見てるのか
まあそりゃそうだわな
2021/06/06(日) 14:25:48.16ID:n+sQSuEO
両方Trueを返すやつはなさそうだけど
両方Falseを返すのはそこそこあるね
https://github.com/python/cpython/blob/main/Lib/stat.py#L27-L46
2021/06/06(日) 14:51:43.74ID:jCNfz170
numpyのインストールって、コマンドプロンプトにpip打ち込んで入れるのと
Anacondaで入れるのとどっちがいいの?
どっちも変わらない?
2021/06/06(日) 15:50:54.59ID:ZkAtJmrl
Anacondaに決まってんだろ、それでだめならpip
927デフォルトの名無しさん
垢版 |
2021/06/06(日) 16:06:37.19ID:9mmqAG88
anaconda入れたら普通に入ってる
928デフォルトの名無しさん
垢版 |
2021/06/06(日) 16:41:40.72ID:H95uLz2j
anacondaとかいう産廃使うのいい加減やめにしないか?
さすがにもうpoetryに移行しよう
2021/06/06(日) 17:00:07.37ID:zUgOrPQ2
ww anaconda ww
2021/06/06(日) 17:20:56.53ID:3IIg9tuB
>>928
anaconda並みに安定したら使ってやるよ。カスを薦めるな。
931デフォルトの名無しさん
垢版 |
2021/06/06(日) 20:59:25.29ID:pepoJCiR
質問させてください
Raspbian環境下(環境A)で
簡単なpythonプログラムを作って
python -m compileall aaa.py
を実行してpycファイルを作って実行したらちゃんと動作しました

もう一台のRaspbian環境(環境B)で同一のpycファイルを実行すると

./aaa.pyc
./aaa.pyc: 行 1: $'\003\363\r': コマンドが見つかりません
./aaa.pyc: 行 2: 対応する ``' を探索中に予期しないファイル終了 (EOF) です
./aaa.pyc: 行 8: 構文エラー: 予期しないファイル終了 (EOF) です

というエラーが出て動作しませんでした。
色々調べたのですが何が問題なのかわかりませんでした。
アドバイスお願いします

環境A、環境Bともに

Python aaa.py
で動かす分にはどちらの環境でもちゃんと動作しますが
環境Bではpycが動かない という状況です
2021/06/06(日) 21:08:56.84ID:3jLKJPwx
同一のpycファイルってコピーしたってこと?
2021/06/06(日) 21:40:22.53ID:pepoJCiR
>>932
環境Bでpycファイル作って実行したら上記のエラーが出たので
環境Aからpycファイルコピーして実行してみましたが同様のエラーが出ましたね
934デフォルトの名無しさん
垢版 |
2021/06/07(月) 10:52:48.03ID:BLDePS2Q
環境Aから環境Bに.pyと.pycどちらもコピーしろ
935デフォルトの名無しさん
垢版 |
2021/06/07(月) 13:45:43.59ID:Jn08avwf
プレシの寸劇がうーたんが辛辣な扱い受けてて好き
2021/06/07(月) 16:05:09.64ID:ipT3dgeq
>>931
python __pycache__/aaa.pyc
なら動くんだろ
シェルスクリプトで実行してるんじゃ
937デフォルトの名無しさん
垢版 |
2021/06/07(月) 17:33:13.64ID:wssteHEM
初めまして、質問させてください。
windowsとmacだとコードが違うらしいんですが、具体的にどのように違うのか教えてるサイト等ありますか?
または変換してくれる何かがあったりしますか?
2021/06/07(月) 18:01:13.24ID:j6zJ7cwJ
>>937
質問が曖昧だからあれだけど
・プログラムの内容(コード)ではwindowsとMacで違いはない(どっちも同じ書き方で動作する)
・ただし両者で『文字コード』(デフォルトエンコード)は異なるので、
 テキストファイルとかの読み込み/書き出し処理に、文字コード違いでエラーになる可能性はある
 (文字コード周りの設定をちゃんと確認すればこの辺は大体何とかなる)
939デフォルトの名無しさん
垢版 |
2021/06/07(月) 18:23:55.86ID:wssteHEM
>>938
返事ありがとうございます、MACで作ったコードをダウンロードしたんですが、私Windowsなのでそのままでは使えないと思っていました。
文字コードをもう少し調べてみることにします。ありがとうございました!
940デフォルトの名無しさん
垢版 |
2021/06/07(月) 18:37:34.26ID:7qZ7vyBh
x = 1
s = "var is {x}"

print -> "var is 1"
が欲しい。どうにかなりませんか
変数の文字列にf当てたいというか…
2021/06/07(月) 18:55:46.43ID:ipT3dgeq
f当てたいって知らんけど
こういうことなの
def printvar(var):
print('var is {}'.format(var))
printvar(1)

>>931
pycをbashで実行したら同じエラーがでた
2021/06/07(月) 19:05:29.82ID:TK3hG12A
>>940
>>941と同じだけど s.format(x=1)
2021/06/07(月) 19:10:55.17ID:4MLoy8uU
f使えると思うけど…
s = f"..."
2021/06/07(月) 19:51:20.15ID:ipT3dgeq
欲しいのは
x=1
s=f"var is {x}"
print(s)
なのか
汎用的なのにするための関数が欲しいのかと
思ったけど
945デフォルトの名無しさん
垢版 |
2021/06/07(月) 19:57:41.93ID:7qZ7vyBh
む?
すいません、言葉が足りなかった
sは事前定義でstr固定でいじれず、xだけがあとで動的に代入される感じです
例えばconfigparserの取得文字列に変数当てたいという
2021/06/07(月) 20:00:04.84ID:k2+fmGQH
>>938
ほかに
Linux系しか使えない命令
Macでしか使えない命令
WInでしか使えない命令
  があるようななな・・・?
2021/06/07(月) 20:00:40.69ID:vnIitvTz
f文字列が一番いいってどこかで見た
2021/06/07(月) 20:11:50.53ID:m2IU34uB
formatでもf文字でもどっちでも構わんけど気分でごちゃ混ぜにするのはやめてくれ
2021/06/07(月) 20:27:55.91ID:pxUr0SVP
>>945
こんなのか
def a(x,y):
_def func(z):
__return x+y+z
_return func
f=a('12','34')
print(f('56'))
2021/06/07(月) 21:42:39.88ID:CltRSTuB
f'{n}'が文字数も少なくて一番簡単でわかりやすいのにわざわざ.format()で書くのってなんか意味あるの?
2021/06/07(月) 21:56:36.72ID:TK3hG12A
変数展開を遅延させたいからだよ

遅延評価するにはf-stringだと関数でくくる必要があるのと
テンプレート文字列をコード上にリテラルで書く必要があるので
こういう用途の場合は今のところstr.format()かTemplateクラス使う
2021/06/07(月) 22:29:36.43ID:It6lCabU
何でもかんでもf-stringsにするのはよくないんやなあって
https://note.crohaco.net/2019/python-format-methods/
953デフォルトの名無しさん
垢版 |
2021/06/07(月) 23:05:20.97ID:x/kbgdh0
logging以外は全部str.formatにしてるわ
2021/06/08(火) 01:45:44.03ID:HQgqltjE
>>952
formatのほうがいいごく少数例をあげてるだけって感じ
2021/06/08(火) 02:05:33.12ID:QU85yBSR
3.4(Win XPラスト)のために、それ以降に登場したf文字列のような手法やメソッドは使わないようにしてる
subprocess.run() の代わりにsubprocess.Popen() でシコシコやったり…
2021/06/08(火) 02:45:00.13ID:ie1akZGa
脳が1ビットでf-stringかformatしか記憶できない人もいるんですよ
2021/06/08(火) 13:07:58.64ID:6SttzhsF
python入れたらpipが付いてくるってどこのサイトにも書いてあるけど、コマンドプロンプトでpipのコマンドを打っても認識されない
'pip' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
どうすれば使える?
2021/06/08(火) 13:19:24.28ID:RLQzdArC
最初にpython -m pip install novasでインストールしないとダメなんじゃね
2021/06/08(火) 13:22:16.83ID:XwHmRNqr
>>957
windows使ってる?
自分も何故かpipだけ動かなくて焦ったけど、パソコン再起動させたら動くようになった
あとシェルコマンド(正式名称わからん、青い画面)で試してみたら?
2021/06/08(火) 13:34:36.82ID:oCdJgv/h
どこのやつをどのようにしてインストールしたのか
公式windosインストーラー版ならAdd Python 3.x to PATHにチェック入れずにインストールするとpath通ってない
2021/06/08(火) 14:01:00.16ID:X0jbV2ox
>>957
インストール・ルートと、ScriptsディレクトリをPathに加える
%ProgramFiles%\Python39
%ProgramFiles%\Python39\Scripts
2021/06/08(火) 17:01:22.12ID:dOMi6vvz
Windows のPowerShell では、環境変数PATH は、; で区切り。
$env:Path.split( ";" )

Python を含むPATHなら、
$env:Path.split( ";" ) | Where-Object {$_ -like "*python*"}

Linux の環境変数PATHなら、: で区切り。
echo $PATH | tr : "\n"
2021/06/08(火) 18:20:40.58ID:KCPagTB6
windows公式ならpath通すやつにチェック初めからついてる
わざわざ外すとも思えんので取り敢えず再起動してみよか
964デフォルトの名無しさん
垢版 |
2021/06/08(火) 18:43:29.68ID:zMtx/HCT
%USERPROFILE%\AppData\Roaming\Python\Python38\Scripts
これも場合によっては必要(というかこっちをメインにすべき)。
Windowsの場合は、pip使うときに--userを付けないと問答無用でPython本体の方に入れようとするので。
2021/06/08(火) 19:29:07.74ID:4DvHg2Yd
>>964
ユーザー変数に追加するなら
%APPDATA%\Python\Python39\Scripts
でもおk
2021/06/08(火) 20:27:12.98ID:6SttzhsF
優しい人おおいな
サンクスコ
結局>>960のとおりにインストールし直した
967デフォルトの名無しさん
垢版 |
2021/06/08(火) 21:32:06.65ID:5GftIHto
getter(target):
__return eval("{target}_var.get()")

関数内で使われる(ユーザー入力と関係ない)evalですが
やっぱり避けるべき? こういうのは別にいい?
2021/06/08(火) 21:36:16.68
クラス変数を変更しようとしたときエラーを吐かせたいんですけど
どうするのがいいでしょうか

現状、
class A:
_# 変更しないでください
_TEST = 100
a = A()
みたいにしています。

できれば、self.TEST=、a.TEST=、A.TEST=
それぞれで変更しようとするとエラーを吐かせられたらなと。
前半2つはセッターでできましたが、結局A.TESTで変更できてしまうし
そもそもクラス変数を変更”してしまうミス”にそこまで注視しないといけないのかな?とも思い
変更しないよう注意喚起・自粛するだけに留めておくのがいいのかどうか迷っています
2021/06/08(火) 22:00:39.38ID:A0D+JkMn
>>968
一番手っ取り早いのはメンバ変数の頭に__(アンダースコアを2つ付けて)
プライベート変数扱いにする
詳しい書き方とかはググると出てくるけど、この辺かな
ぶっちゃけ『注意喚起する』っていうのは大体地雷化するから、正当な方法で実装した方が良い

https://docs.python.org/ja/3/tutorial/classes.html#private-variables
https://www.headboost.jp/python-property/
2021/06/08(火) 22:09:45.69
>>969
なるほどそういう慣習があったのですね ありがとうございました
2021/06/08(火) 22:18:59.67ID:UcvX2QEY
>>967
>>785の例と同じじゃない?
972デフォルトの名無しさん
垢版 |
2021/06/08(火) 22:36:55.06ID:5GftIHto
>>971
あ、ほんとうですね
でもうちの場合は中で微妙に処理が異なるので分岐がいるのです(getする範囲が違うとか)
evalないとif連打か辞書使うとかになるけど、それでも回避推奨なのかなと思って
2021/06/08(火) 23:19:28.78ID:JbMjUK2X
検討すればいいんじゃ
自分で使うだけなら問題ないし
ネットでつながっても隔離されてれば問題ない
検討が面倒なら使わないと決めたほうが
楽な場合もある
2021/06/08(火) 23:24:47.79ID:UcvX2QEY
>>972
getattrとかリフレクション系のビルトイン関数使えば十分じゃない?
tkinterならそれも必要無いと思うけどね
975デフォルトの名無しさん
垢版 |
2021/06/09(水) 00:16:11.63ID:BQ0ecELC
>>973
python関係ないけどevalて双方向通信のときにヤバいんでやめましょうね、だけですよね
2021/06/09(水) 00:45:15.15ID:tjJuKde+
evalを使う言い訳を探すくらいなら
evalを使わない書き方を学んだ方が良い
977デフォルトの名無しさん
垢版 |
2021/06/09(水) 02:09:05.41ID:NxdIgDtt
書けるけどゴチャつくって話でしょ
しかも別に対話しないなら使ってもいいしな
978デフォルトの名無しさん
垢版 |
2021/06/09(水) 07:16:34.25ID:u3L+Vxsq
スレでえばる初心者
2021/06/09(水) 14:22:13.69ID:PlcFv7F9
どうでもいいけど上見たらくだらない質問の略だったのか
python蛇だからくだを巻いてるスレッドの略やと思ってた
2021/06/09(水) 15:58:48.26ID:o9EDXjUA
print(hoge.data[0][0][0][0])
を実行すると、値ではなく、
<NdArray(()) at 0x1c7b360b960>
が返ってきます。
このインデックスにある値を表示する方法を教えて下さい。

hogeは((1, 1, 8, 8))のNumpy多次元配列とのことで、
このprint文の直前で
hoge.data.zero()
とやっているので、すべての要素はゼロになっているはずです。
うまく表示できると値が「0」と表示されるはずです。
981デフォルトの名無しさん
垢版 |
2021/06/09(水) 16:02:29.18ID:Gt06K9sH
getter(target):
__return getattr(self, [f'{target}_var').get()
__return locals[f'{target}_var'].get()
__return globals[f'{target}_var'].get()
982デフォルトの名無しさん
垢版 |
2021/06/09(水) 16:59:23.95ID:ylbs+1ZI
getattrって存在すら知らんかった
これ本来はどういう用途のためにある関数なんだ?
2021/06/09(水) 18:33:02.13ID:J3IrN4Ey
tkinterならglobalgetvar()使うか
コールバック登録時にクロージャで変数をキャプチャしておけばgetattrは不要
2021/06/09(水) 19:31:32.53ID:2FVE2wAx
>>982
テスト用に便利
>>> for x in dir(obj):
... print x, ':', type(getattr(obj, x))
情報を得たり
クラス内の全テスト用関数実行するとか
関数の増減気にしないですむ
985デフォルトの名無しさん
垢版 |
2021/06/09(水) 19:59:43.06ID:cSpjmop9
>>984
あーなるほど
便利かもしれない
986デフォルトの名無しさん
垢版 |
2021/06/09(水) 20:41:17.87ID:WPb/eWBP
むー次スレ立てられなかった
>>987頼みます
2021/06/09(水) 20:47:42.93ID:10jEyhRQ
Pythonにおけるgetattr()の利用方法を現役エンジニアが解説
2021/06/09(水) 21:06:38.55ID:zRBfpo4e
>>985-986
987が逃げたっぽいので試してみたらたてれたったぞ

【まず1嫁】くだすれPython(超初心者用) その54
https://mevius.5ch.net/test/read.cgi/tech/1623240344/
2021/06/10(木) 00:58:10.88ID:aIq1E33q
でかした
990デフォルトの名無しさん
垢版 |
2021/06/10(木) 11:00:17.95ID:smul9M+b
>>982
黒魔術
2021/06/10(木) 11:18:28.54
getattrの使いどころって、文字列としてメンバ変数名を扱いたい場合くらいしかない?
2021/06/10(木) 11:42:16.34ID:WX9l2lHR
業務でリフレクション使ってるコードあったらrejectするけどな
ライブラリは仕方ないとしてギリでアノテーション
993デフォルトの名無しさん
垢版 |
2021/06/12(土) 10:25:56.27ID:ZfyfTVcF
もう3.10が出るっていうのに、アノテーションを忌避する理由もないだろ。
2021/06/12(土) 10:59:57.74ID:dWkts0ub
通常コード内のリフレクションはダメ
ライブラリやアノテーション内のリフレクションはOK
かな
2021/06/12(土) 11:02:04.34ID:dWkts0ub
デコレータやなこれ
996デフォルトの名無しさん
垢版 |
2021/06/14(月) 11:04:32.81ID:LnG83xz5
pandas 特集
https://www.r-staffing.co.jp/engineer/entry/20210611_1
2021/06/17(木) 22:00:54.84ID:ny5F+6RE
スクレイピングしたいんだけどやってる人いますかー
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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