Pythonのお勉強 Part62

■ このスレッドは過去ログ倉庫に格納されています
2019/09/15(日) 16:06:00.08ID:E+Kc3PWT0
★当スレにRubyのソースコード類を書くことを禁ず★
☆Ruby等、Pythonではないプログラミング言語での回答類を書くのも禁止
☆「Ruby では」「Rubyでは」をNGワード登録推奨

◆エラーを解決したいときはエラー文(勝手に省略禁止)と
 環境(Pythonのバージョン・OS名・IDEの種類とバージョン)をシッカリ書くこと

◆Pythonのソースコードを5ちゃんにコピペするとインデントが崩壊するので
  ↓等のソースコードうp用サイトに貼ってきてくだしあ
    (スクリーンショットをimgur等にうpる「横着」禁止)
ttp://ideone.com/      デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう。

◇Pythonオフィシャルサイト
http://www.python.org/

◇まとめwiki
ttp://python.rdy.jp/

●関連スレ●
くだすれPython(超初心者用) その44【Ruby禁止】
http://mevius.5ch.net/test/read.cgi/tech/1563969768/

〇前スレ
Pythonのお勉強 Part61
http://mevius.5ch.net/test/read.cgi/tech/1563622784/

次スレの建立は>>985あたりが挑戦する。 [EOF]
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
22デフォルトの名無しさん (ワッチョイ a54e-hQOS)
垢版 |
2019/09/21(土) 10:23:45.09ID:AojYT9zq0
将来性のないプログラミング言語ワースト5
5 Programming Languages That Are Probably Doomed
https://insights.dice.com/2019/07/29/5-programming-languages-probably-doomed/
Ruby ←←←www
Haskell
Objective-C
R
Perl

KENTA「Rubyに拘泥するやつは伸びない」

嘘ばかりついてるなこの糖質ww
やはりハエがウンコに惹かれるように、
カス人間もクソ言語に惹かれるんだろうwww
2315 (ワッチョイ 5197-KC02)
垢版 |
2019/09/21(土) 10:54:29.63ID:U1H67dB+0
>>15だけど、
Jupyterにおいて、
%%bashはセル全体をbashで実行、
!はその行をシェルで実行、で、
>>15の例が実はそのまま動くってことがわかった。
確認不足で質問してしまい申し訳ない。
>>17 xonsh調べてみます。

>>16
うーん、、、、15で13だって名乗り忘れたのも悪いけど、
>>13を読んだらディレクトリを作ったりファイルをコピーしたりということは単なる例で、
言語の制御構文、変数を使いつつシェルをシェルスクリプトレベルに簡単に実行したいという質問だったんですけどね。

あなたの例はJupyter上でシェルを簡単に実行できるからJupyterの機能を使って実現したいという大前提を無視してて
単にRubyでディレクトリの作成とファイルのコピーが出来る、ってだけの例で何の答えにもなってない。
当然Pythonにもファイル操作のライブラリはあるよ。
Rubyなら出来るって思うのは勝手だが、Pythonでは簡単にできないって妄想して発言するのやめてくれないかな。
てかそんなにRubyが良いって言うなら、RubyでJupyterに相当するもの教えてもらえないかな。そうしたら日常で使ってみるから。
irbは相当しないんでよろしく。
2019/09/21(土) 11:05:54.75ID:4a5WZv9wM
プリプロセッサを作ってpythonと同名のエイリアスを作るとかなら比較的簡単そう
2019/09/21(土) 20:41:07.52ID:5TKws+Zn0
また異教徒が湧いているようだな・・・・・・
2019/09/21(土) 20:59:48.05ID:4gE2iOeh0
プログラミング言語が宗教なら、複数の言語を日常的に使ってる奴はやばいじゃん
2019/09/21(土) 23:05:30.93ID:6UrGeJMka
日本人は仏教徒とかいっても、クリスマスとかハロウィンとか祝うじゃん
それと同じことでは?
2019/09/22(日) 00:15:54.93ID:fbK9NPLj0
nullを\Nと表現しているテキストファイルがあります。
pandasのread_csvのオプションで
na_values = '\\N' と指定しても、読取後に N としか解釈されません。
なお、dtype=str としてすべて文字列で読み込んでいます。

\Nをnull扱いで読み取る方法はないでしょうか。
2019/09/22(日) 01:33:24.69ID:1ZcxgUxg0
>>27
マホメットの誕生日もお祝いしないと
30デフォルトの名無しさん (ワッチョイ 0261-tKbs)
垢版 |
2019/09/22(日) 08:05:54.77ID:Hc6O2uDq0
神道でも墓は寺にあったりするし。
31デフォルトの名無しさん (オッペケ Sr51-8lXu)
垢版 |
2019/09/22(日) 09:51:13.12ID:5WmnN11dr
状況によって使い分けるだけ
食材は包丁、紙はハサミ、木材はノコギリで切るのと同じ
32デフォルトの名無しさん (ワッチョイ 4d7c-9GzD)
垢版 |
2019/09/22(日) 13:36:11.13ID:NWulzMwt0
na_values = ('\\N',)
2019/09/22(日) 13:44:50.84ID:7LiwHA260
>>28
Ruby では、独自の CSV::Converters を定義すれば、できるけど

require 'csv'

str = <<"EOT"
"\N",1
"2",\N
EOT

proc = Proc.new do |field, field_info|
if field == "\N"
nil
else
field
end
end

options = { :converters => proc }

CSV.parse( str, options ).each do | row |
p [ row[ 0 ], row[ 1 ] ]
end

出力
[nil, "1"]
["2", nil]
34デフォルトの名無しさん (ワッチョイ 4d7c-9GzD)
垢版 |
2019/09/22(日) 13:47:39.09ID:NWulzMwt0
>>> pd.read_csv(io.BytesIO(b'abc,def,yyy\nghi,\\N,xxx\n'), sep=',', dtype=str, na_values=('ghi','\\N'))
abc def yyy
0 NaN NaN xxx

>>> pd.read_csv(io.BytesIO(b'"abc","def","yyy"\n"ghi","\\N","xxx"\n'), sep=',', dtype=str, na_values=('ghi',r'\N'))
abc def yyy
0 NaN NaN xxx
2019/09/22(日) 17:25:53.71ID:fbK9NPLj0
皆様、ありがとうございます
escape_charが邪魔していたようです
escape_char='\\'を外したら動作しました。
2019/09/22(日) 18:11:35.58ID:5MoRoXDq0
すみません、a.txt , b.txt ,c.txtといった感じで5個テキストファイルがあって
各テキストファイルには1行ずつ
2465
451
5887
と並んでいるのですが、これを各テキストごとにaリスト、bリストとリストを
一括で作りたいのですが、どうすればいいでしょうか・・。
一つだけならopenで開いてa = [ ]にappendするだけなのですが、一括でやるのがネックでして
2019/09/22(日) 18:11:40.10ID:5MoRoXDq0
すみません、a.txt , b.txt ,c.txtといった感じで5個テキストファイルがあって
各テキストファイルには1行ずつ
2465
451
5887
と並んでいるのですが、これを各テキストごとにaリスト、bリストとリストを
一括で作りたいのですが、どうすればいいでしょうか・・。
一つだけならopenで開いてa = [ ]にappendするだけなのですが、一括でやるのがネックでして
2019/09/22(日) 18:40:53.40ID:aANq22gT0
>>36-37
5回ループさせたらいかんのんけ?
2019/09/22(日) 18:44:32.08ID:aANq22gT0
>>38補足
各リスト名は入力ファイル名から拡張子とったやつに、すればいんじゃね?
でもって作成済みリスト名を集めたリストでもつくっとけ
2019/09/22(日) 19:25:51.59ID:vTpi5vA10
コマンドライン引数でループするのが成功法
2019/09/22(日) 19:44:33.01ID:5AUskteJa
>>37
glob.globをforループしたら
2019/09/22(日) 20:14:43.44ID:7LiwHA260
ホリエモンもおすすめ!人気のプログラミングキャンプの様子を特別公開
https://www.youtube.com/watch?v=Ob1SYQnc1d0

岩手県八幡平市(はちまんたいし)
参加費無料のスパルタキャンプが、10/8 12:00 まで、15名募集中!
(ただし、今年の競争率は、25倍ぐらい)

11/2 〜 11/24 の毎週土・日の8日間、8:30 〜 18:30

Python で、機械学習・LINE BOT・Django
2019/09/22(日) 20:28:10.43ID:7LiwHA260
Ruby なら、こういう感じで、5つ書けばできるけど

# 末尾の改行を削除して、配列に読み込む

a = File.readlines( "a.txt", chomp: true )
b = File.readlines( "b.txt", chomp: true )
2019/09/22(日) 20:35:47.40ID:p1u+NLfG0
一括でやる必要性の意図が全く分からんけど、下のような程度の話ならくだすれで聞いた方がいいかな

d = {}
for x in ["a.txt", "b.txt", "c.txt"]:
 with open(x) as f:
   d[x] = f.readlines()
45デフォルトの名無しさん (ワッチョイ 5197-KC02)
垢版 |
2019/09/22(日) 20:36:33.96ID:ulErh40p0
>>36
普通はリストを要素に持ち、ファイル名をキーに持つ辞書にする
texts_dict = {}
for file in ['a.txt', 'b.txt', 'c.txt']:
 with open(file, 'r') as f:
  texts_dict[file] = f.readlines()
みたいな
で、使うときはtexts_dict['a.txt']とかでアクセス
どうしても変数に直接入れたければ、
globals()['a'] = [] とかすれば a = [] をしたことと同じになるから、それで行うけど、
ファイル名が可変だったら結局globals()経由で辞書アクセスすることになるから、
普通は辞書にすると思うよ
2019/09/22(日) 20:39:26.05ID:aANq22gT0
>>45
(質問者じゃないけど)なるほどなっとく!
スマートだ > 辞書を使う方法
2019/09/22(日) 21:26:02.03ID:eV1DMGD/M
>>43
早く死ねよ
2019/09/22(日) 21:45:30.11ID:+Vq+U6PO0
だまって透明にしときゃいいさ
誰も見ないのにご苦労なこった
2019/09/22(日) 23:02:47.18ID:5MoRoXDq0
>>38-45
ありがとうございます。ちょっとやってみます
50デフォルトの名無しさん (ワッチョイ 5f05-ohPQ)
垢版 |
2019/09/26(木) 01:34:06.99ID:oHudf+NE0
すんません、Pythonに詳しい人教えろください。
アクティブウィンドウの選択テキストをPythonで取得するにはどうすればいい??
LinuxユーザPython初学者です。
51デフォルトの名無しさん (アウアウエー Sa1f-yXpG)
垢版 |
2019/09/26(木) 15:45:09.87ID:EH9TPs/Va
wmによるんじゃね
52デフォルトの名無しさん (ワッチョイ 5f05-ohPQ)
垢版 |
2019/09/27(金) 00:07:03.40ID:2McA6UJq0
よくわかりませんが、ブラウザのテキスト選択して、ファンクションキーやショートカットなどでバインド。
テキスト選択テキストをスピーチをさせたり、選択テキストをWEB検索したりとか…ファイル検索して辞書っぽい使い方とか?
2019/09/27(金) 08:50:31.85ID:AvYsaFlO0
要するにpythonでクリップボードを操作したいワケか。
linuxじゃどうやるかは知らんけど検索すればそれっぽいのが出てくるんじゃねえの
54デフォルトの名無しさん (ワッチョイ e77c-wGQq)
垢版 |
2019/09/27(金) 12:04:16.80ID:oLJPEcmZ0
漏れにはクリップボードに入る前の話をしているように見える
55デフォルトの名無しさん (ワッチョイ e77c-wGQq)
垢版 |
2019/09/27(金) 12:08:05.81ID:oLJPEcmZ0
ここの後者の内容でいけるかな
https://oplern.h%41tenablog.com/entry/2017/04/10/070433
2019/09/27(金) 12:16:32.88ID:tWSFBj5g0
Linuxは選択しただけでペースト候補になる。
2019/09/27(金) 16:20:49.29ID:f2vxlf0q0
漏れは、Ruby で、クリップボードを使っている。
Rubyから、Powershell, clip コマンドも呼べる!

クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる

str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換

ary = str.each_line.map( &:strip ) # 連続する空白類を除去する

IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
58デフォルトの名無しさん (ワッチョイ 274e-qPRK)
垢版 |
2019/09/27(金) 22:59:05.44ID:Z4UqEtTG0
powershell呼んでるだけだね。
今日日execできない言語なんてあるの?w

>>57
廃止予定のバッククォート失敗記法使ってるからすぐ動かなくなりそうだね。
https://logmi.jp/tech/articles/321308
それから「Backquotes」の地上げも考えていたんですけども、Backquotesをするとシェルで実行して結果を文字列で返すってやつですね。

(参加者から「いける、いける」の声)

まつもと:なんかあの辺で「いける、いける」って言ってる人がいますけど、信じない(笑)。なので、これももうちょっと先で、もう1回くるかもしれませんが、少なくとも3.0では死なないということです。


弱い頭で適当に文法決めてすぐブレイキングチェンジして動かなくなる書き捨て専用クソ言語wwwww
59デフォルトの名無しさん (ワッチョイ 87e7-M6N5)
垢版 |
2019/09/27(金) 23:29:19.09ID:N494Gtz30
論よりコード
60デフォルトの名無しさん (ワッチョイ 5f05-ohPQ)
垢版 |
2019/09/28(土) 00:21:55.10ID:H0kYzg7c0
>>55

sudo apt-get install xclip
オプション
-i 標準入力からXセレクションへコピーを行う
-o Xセレクションの内容を標準出力へ出力
-selection 出力指定なし時はPRIMARYとなる。

PRIMARY領域から画面に出力:
xclip -o -selection primary

PRIMARY領域からファイルに出力:
xclip -o > primary.txt

…………完璧過ぎる返答に漏らしました。
このスレにも口先だけのベテラン気取りじゃない方もいらっしゃるんですね。
PYTHONだけじゃなくLINUXももっと勉強します!ありがとうございました!m(_ _)m
61デフォルトの名無しさん (ワッチョイ 5f05-ohPQ)
垢版 |
2019/09/28(土) 00:23:42.56ID:H0kYzg7c0
>>57
死ねバカ
2019/09/28(土) 01:37:08.63ID:mOHVtsFt0
>>60
一言多いって言われるだろ
社会人になる前に直しとけよ
63デフォルトの名無しさん (ワッチョイ 4797-i9+B)
垢版 |
2019/09/28(土) 02:45:43.48ID:C0qDQBnO0
>>57
はやくJupyterでPythonを書く相当のことが出来るRubyのプロダクト教えてくれよ
そのコード実行するのだってJupyter的な便利なインタラクティブシェルがないと
入力もチェックもめんどくさいだろ、当然あるからそういうコード書いて使ってるんだよね
PythonとRubyの両方に精通していてRubyには将来性があるって断言するのなら
まだ実用になっていなくてもそうなりそうなプロダクトも試してたりするんだろうし
あとついでにmatplotlibとnumpy、scipy、pandas相当のものも教えてくれると助かる
2019/09/28(土) 15:09:52.03ID:JKTk1U1A0
>>60
そんなんじゃ社会人になっても業務支援しかやらせてもらえないぞ
65デフォルトの名無しさん (ワッチョイ 5f05-ohPQ)
垢版 |
2019/09/28(土) 17:22:36.20ID:H0kYzg7c0
口先だけのベテラン気取りってのが刺さったらしいな
2019/09/28(土) 17:36:04.25ID:od8auTQE0
・教えてもらいにきたくせに煽っている点
・おれの質問はハイレベルwだと思っている点
・そのくせポイントを押さえた質問文が書けず、エスパー求む状態の点
などが・・・
2019/09/28(土) 17:36:54.67ID:0FIb/jod0
無能な奴に限って業務では〜とか社会じゃ通用しないとか説教したがるからなw
2019/09/28(土) 18:33:57.07ID:od8auTQE0
謎の業務マニュアルを策定して裏マニュアルなりなんなり作られたり
デスマ炎上を作成しまくるような
ヽ( ・∀・)ノ● ウンコーの中核になるくらいなら、
きちんと回る業務支援 のほうが 10000倍くらいまし、かつ、有能だとおもうんだが。
2019/09/28(土) 21:19:41.23ID:mOHVtsFt0
Pythonスレに来てPython全く関係ない回答に完璧とか言い出してる点はまぁよしとしても
個人的にはLinuxとPythonを大文字でLINUXとPYTHONと書いてる点が気になったw
初心者なんだろうなぁ・・・
70デフォルトの名無しさん (ワッチョイ e763-94li)
垢版 |
2019/09/28(土) 21:46:10.02ID:4Lg9vq/90
COBOLとかFORTRANとかBASICとか
大文字でJIS登録されている言語を普段使いとしているのではないかな
2019/09/28(土) 22:22:03.56ID:Bvcc+55+0
>>63
遂に、VSCode の本が出た!
徹底解説Visual Studio Code、本間咲来、2019/9/27

Jupyter, Vim でも出来るけど、VSCode で良い!

Code Runner(Run Code)という拡張機能で、右クリックメニューから、コード片を実行できる。
ファイルパスが解決できない場合は、File Directory As Cwd を設定する
2019/09/28(土) 23:58:31.13ID:qhruDYhYa
Python使ってるのは初心者だの、ブロックが分かりづらいからだめとか言われたのだけど
別にダメな言語じゃないよね?
良いライブラリがあってやりたい動きをすぐに実装できるし書きやすいからこればっかり使ってるんだけどおっさんに言われてモヤモヤした…
C#、javascript、pythonしか触ってないけど、一番書きやすくてしっくりきたからお気に入りなのに。すげー悔しかった
2019/09/29(日) 00:10:46.14ID:pCkNePeqM
>>72
使ったことなくて印象で言ってるんだろ。言わせときなよ。
2019/09/29(日) 00:17:26.76ID:6iKlTSzwa
とは言えpycharmありきって感じはするんだよな
ブロックが分かりにくいってのは反論できねー
75デフォルトの名無しさん (ワッチョイ 4797-i9+B)
垢版 |
2019/09/29(日) 00:22:44.02ID:nT1w560I0
初心者向け言語だとは思ってなかったけど
(FedoraとかのインストーラーはAnacondaって名前のPythonのスクリプトだってことをかなり昔から知ってたし)
Pythonでゴリゴリ書く前はブロックがわかりにくいとは思ってたな。

かといってカッコがあるとわかりやすいのか?っていうと、
カッコがあってもわかりにくい時は結構あるって感じがするけどな。
2019/09/29(日) 01:57:16.53ID:yF2ygbXTM
初心者向けっていうか「分かりやすい」
特に配列関連強い気がする。
ライブラリ多いからやりたいことがすぐ実現できる。
ブロックはカッコ後ろ派と同インデント派があるのに比べれば「分かりやすい」
初心者向けでも要求仕様満たせてれば問題ないんじゃないの?
それで生産性高かったり引き継ぎしやすいなら最高じゃんw
言語に優劣付ける程色々弄ってきてるなら対立煽る以外では不毛な話題でしか無いかと。
2019/09/29(日) 02:07:50.07ID:9sS1uJjp0
>>72
俺おっさんだけど新人にはPythonだけ教えてる
本質と違うところで悩んで欲しくないからね

言語体系として美しさに欠ける点が多々あるのは諦めている
ブロックが分かりにくいのもあるけどスコープも分かりにくい

withやtryで字下げしてブロック作ってるのにスコープは作らないとか
普通ならあり得ん仕様だ、まぁ便利なんだけど

with open(‘hoge.txt’, ‘r’) with f:
  a = 123 ← これ、ローカル変数じゃない
print(a) ←ブロックの外に出て表示可能
結果 123

こんなこと書くとrubyくんが降臨するかな
2019/09/29(日) 08:04:21.86ID:qdFsd7WD0
>>74
ブロックについては間違ったインデントで誤認すると言うのを防ぐためのものだからそう言うのが嫌ならPythonを使うことを諦めるしかないな
if(...)
 if(...)
  a = ...
else
 b = ...

>>77
スコープはたしかに分かりにくいね
ただPythonは変数宣言がないからスコープ作るとその例だと
a = 0
with open(‘hoge.txt’, ‘r’) with f:
 a = 123 ← これ、ローカル変数じゃない
print(a) ←ブロックの外に出て表示可能
みたいな本来不要なコードを入れる羽目になるから痛し痒しだね
2019/09/29(日) 09:54:04.21ID:6bWGECfja
>>78
今時オートインデントのないエディタやIDEなんて使わんから、前に誰かも言ってたけどループ抜けた直後の処理とかインデントを手動で調整する部分は明確に劣ってると思うけどね
掲示板とかの書き込みでも仕様によっては論理構造自体把握できなくなるし
それだけをもってPythonがどうのこうのと言う気はないし好んで使ってはいるけどね
80デフォルトの名無しさん (ワッチョイ 5f33-20m0)
垢版 |
2019/09/29(日) 10:36:00.68ID:o2dHW2ZP0
Pythonに限らずインデントは整えろよ
2019/09/29(日) 10:57:44.76ID:qdFsd7WD0
>>79
> 今時オートインデントのないエディタやIDEなんて使わんから
Pythonの仕様決めた頃の話に今時とか言われても…
後付で批判できる俺スゲーってか?w
2019/09/29(日) 11:03:04.37ID:sjKzDFMja
んなこと言い出したらなんの比較もできんわ
Pythonだけ崇拝してろよ
2019/09/29(日) 14:19:19.94ID:qdFsd7WD0
お前の批判の理由がおかしいだけ
2019/09/29(日) 15:04:48.86ID:wk/e9yFta
他の言語も実用上インデントが分かりにくい状況なんかあり得ないって言ってんだけどな
そうなるとブロックの終わりが視認しづらいってデメリットだけが目立つことになるわけ
Pythonのブロックがわかりにくくないって言うなら意見の違いだから別にそれで良いけど
85デフォルトの名無しさん (ワッチョイ 4797-i9+B)
垢版 |
2019/09/29(日) 15:12:39.88ID:nT1w560I0
オフサイドルールでブロックがわかりにくいより、
ブロックスコープがないほうがよっぽどPythonの欠点だと思うんだよな

ただオフサイドルールは逆に便利なときもあるような気がするけどなー
JSとかで閉じカッコの対応がめちゃくちゃになるときよくあるもの
まぁそれは無名関数を突っ込めるからってのとも関係してるだろうし、
同一条件じゃないから単純比較はできないと思うけど
2019/09/29(日) 15:26:02.16ID:wk/e9yFta
関数が長くなってきたときとか、分岐やループで一時的にしか使わない変数名にも気を使わないといけないのは確かに面倒くさいな
スコープの仕様自体はわかりやすいんだけど他の言語で広く常識とされてる仕様とは違うからね
2019/09/29(日) 15:37:16.47ID:11si1Xxn0
if文で && って書いちゃう
2019/09/29(日) 16:19:10.31ID:qnyhMUgLp
>>86 code folding
でブロックを閉じたり開いたりすれば簡単。
Jupyter notebook なら入ってるよ。
2019/09/29(日) 17:29:15.15ID:qdFsd7WD0
>>84
>>78のコード見たらわかると思うけど正しいコードの話をいくらされても意味ないよ
他の言語はインデントとコードの意味は関係ないからインデントによって誤認する可能性があって事実それによるバグもあったのでPythonみたいな考え方が出てきたって話ね
別にそれで全てを解決するわけじゃないし色々指摘されてる通り弊害もあるのはわかってる
2019/09/29(日) 17:32:32.79ID:qdFsd7WD0
>>85
ブロックスコープは>>78の後半に書いてる通り変数宣言と絡むからちょっと難しいな
個人的にはあまり大規模なコードを書くような仕様じゃないと感じてる
2019/09/29(日) 19:57:20.42ID:0Rn4cTtQa
>>89
>>78のコードで言いたいことがわからんのだけど、elseの対応がわかりやすいってこと?それはあんまりメリットに見えないから誤解してるようだったら申し訳ない
インデントを文法に含めた時代背景とかは知らんかったから勉強になったよ
ただ、今は実用上そうする意義はあんまりないよねって言いたかっただけだから話がかみ合わなかったような気がするわ
いきなり煽られたからカッカしてたわすまんな
92デフォルトの名無しさん (ワッチョイ 4797-i9+B)
垢版 |
2019/09/29(日) 20:25:33.13ID:nT1w560I0
>>90
大改造にはなるだろうね。どんなところが問題になるか把握してないけど、
JSにES6でlet/constが導入できたみたいにPythonでも導入されるとなんとなく嬉しそうではある。
大規模なコードは書かないから個人的には問題になったことがないけれど。

元の話になったPythonディスおっさんも、ブロックスコープがない、マルチコア時代にそれを活かしづらい設計、
とか言ってディスるなら、そうですねおっしゃるとおりですという感じになるんだけどなぁ。
2019/09/29(日) 20:59:13.92ID:qdFsd7WD0
>>91
え?
elseがどのifに対応するのかぱっと見てわかるなら素ですごいと思う
ただ誰にでも君みたいな能力があるわけじゃないからインデントとブロックが合うようにしようってだけのこと
今は意味がないと言うけどみんながみんな理想的な環境使ってるわけじゃないしね
2019/09/29(日) 21:01:42.52ID:qdFsd7WD0
>>92
まあPython 2からPython 3で結構手を入れたからやれなくもないとは思うけど、変数宣言しなくていいと言うメリットを捨ててまでブロックスコープ作るのがいいかどうかは微妙だし
2019/09/29(日) 22:22:19.03ID:5vhDzuHra
それは(ツールに任せればいい話で)メリットにみえないから、(誰でも知ってることを懇切丁寧に説明してくれた以上のことがあるはずだし)誤解してるようだったら申し訳ない、と言わないと伝わらんよなすまん
言語の成り立ちはわかったし教育上有益だとは思うけど話がかみ合わんからもういいよ

視認性の話は>>88も言ってるとおりIDEかちょっと気の利いたエディタで解決する問題だし
2019/09/29(日) 22:58:57.71ID:GVs7K/pUM
まあコンパ語と比べるのもアレだがとりまCと比べてif文を例にしたとしても
条件式の()が強制されなくて{}も不要でa<b<cみたいにサンドイッチそのまま書ける等々、コーディングが楽なのは確実
97デフォルトの名無しさん (ワッチョイ 4797-i9+B)
垢版 |
2019/09/29(日) 23:12:58.62ID:nT1w560I0
>>94
宣言しないものは今まで通り、varなりletなりつけて宣言したものはブロックスコープってなると
ありがたいかな、文法上矛盾なく実現できるのかはわからないけど
明示的にブロックスコープを要求しないとブロックスコープにならないって仕様でも、そんなに困らない気がするな。
今でもdefして直後に呼び出すってことで実現できるっちゃできるのかもしれないけど。
2019/09/30(月) 06:47:26.08ID:II5MOx76M
>>97
> 宣言しないものは今まで通り、varなりletなりつけて宣言したものはブロックスコープってなる
宣言するものとしないものが混在すると宣言し忘れなのか意図して宣言してないのかがわからなくなるのでそれはそれで嫌かも
なんて意見も出てきたりするからホント難しい
99デフォルトの名無しさん (ワッチョイ 4797-i9+B)
垢版 |
2019/09/30(月) 10:20:08.17ID:Bc8Kvfnp0
>>98
宣言し忘れを警告するアノテーションをファイルや関数に追加できるようにしたらいいんじゃない。
2019/09/30(月) 11:41:28.14ID:auJmx+hY0
>>60
日経Linux 9月号の付録本に、xclip コマンドについて書いてあるけど、

X Window には内部に、Primary, Secondary, Clipboard の、3つのセレクションがある。
この内、普段クリップボードで使うのは、Clipboardセレクションだから、
「-sel c」オプションを付ける

xclip -o -sel c | toilet
2019/09/30(月) 12:27:42.38ID:II5MOx76M
>>99
それをするぐらいならすべての変数の宣言を必須とした方がいいんじゃね?
っていう意見が出ると思うよ
2019/09/30(月) 14:20:51.95ID:QmRxkeUJ0
>>92 Python のルール内の
命名規則に従えば良いだけの話だろ。

[Pythonコーディング規約]PEP8を読み解く
https://qiita.com/simonritchie/items/bb06a7521ae6560738a7


命名規則

定数 全大文字 + アンダースコア区切り MY_FAVORIT
103デフォルトの名無しさん (ワッチョイ 0712-94li)
垢版 |
2019/09/30(月) 15:19:40.01ID:SaJNFqAl0
見てるスレがどこもかしこもくだらねえ話題に走ってんな
そういう時期なのか…?
104デフォルトの名無しさん (ワッチョイ 2763-i9+B)
垢版 |
2019/09/30(月) 18:59:04.06ID:lsZA7Zit0
>>101
反論したいだけなのか?JSはそうなってないし、Pythonにおけるその意見の合理性はなに?
文法上そうしないと矛盾が出る具体的な考察はある?
宣言しない変数も使えてほしいというのは現状そうなってるから合理的な意見だと思うけど。
105デフォルトの名無しさん (ラクペッ MMdb-94li)
垢版 |
2019/09/30(月) 20:29:58.47ID:C5a1QkZEM
俺が考えるPythonをよくする提案だったら公式の掲示板でやってくんないかな〜
ママに話して聞かせるようなくだらない提案に頭の計算資源使いすぎて、
ガイジ並みの知能になってるのか?クソカス
2019/09/30(月) 20:56:31.01ID:II5MOx76M
>>104
仕様決めなんてトレードオフの連続なんだから唯一の正解なんてないよ
JSみたいな言語もあるだろうしもっとガチガチなAdaみたいな言語もある
>>99がだめと言ってるわけじゃなくて反論は必ず出るってこと
またJSなんかを見てりゃわかると思うけど時代によって要求されることが変わってきたりするしね
だから世の中に山ほどプログラム言語があるわけ、わかる?
107デフォルトの名無しさん (ワッチョイ 4797-i9+B)
垢版 |
2019/10/01(火) 03:33:47.77ID:DUbYYSbu0
>>106
論点はなんなの?
こっちは、「ブロックスコープがないと不安なときがある」ぐらいしか言ってないよ。
導入されないのには合理的な理由も当然あるだろうなーと思ってる。
日常的に6個ぐらいプログラミング言語開発で使ってるから得意不得意があることぐらいわかるよ。
「Aという意見もある、難しい」「Bという意見も出る、難しい」しか言ってないように感じるんだけど、
何が言いたいの?反論は出るなんて言語仕様を変更するならどんな言語でどういう風に変更したって
大抵出るような当たり前のことだろうし、さすがにそんなことだけを言いたいわけじゃないだろうし。
108デフォルトの名無しさん (ワッチョイ 4797-i9+B)
垢版 |
2019/10/01(火) 03:50:49.11ID:DUbYYSbu0
>>57
http://mevius.5ch.net/test/read.cgi/tech/1545421414/722n
> 722 名前:デフォルトの名無しさん (ワッチョイ 5f2c-+BGV)[] 投稿日:2019/09/30(月) 20:12:39.70 ID:auJmx+hY0
> 任意の列数のCSV ファイルから、そのファイルを上書きせずに、特定の2列だけを抜き出したい。
> 2列以外のすべての列を削除したりできますか?
> ただし、列名・列数は、ファイルごとに変化します

import sys
import pandas as pd

field_name_1 = 'AAA'
field_name_2 = 'BBB'

df = pd.read_csv(sys.argv[1])[[field_name_1],[field_name_2]] # AAA列とBBB列だけのDataFieldが出来る
2019/10/01(火) 06:45:24.85ID:lPnANaUAM
>>107
> 「Aという意見もある、難しい」「Bという意見も出る、難しい」しか言ってないように感じるんだけど
いや、初めからそう言う風にしか言ってないけど?
>>98とかを読んでそう取れないとしたらあなたの理解力に相当問題あると思うよ
110デフォルトの名無しさん (ワッチョイ 4797-i9+B)
垢版 |
2019/10/01(火) 14:58:13.70ID:DUbYYSbu0
>>109
「難しい」として例に出された意見が本当に難しいのか?って内容だったからなぁ。
次に出された「難しい」も、そういう意見が出てきそうな根拠がよくわからない
「始めから全部宣言すれば」だったし。
もうちょっとブロックスコープを導入するにあたって現実的に問題になりそうな点について
「AやBの両立をどうするかって意見があるから難しいよ」って言ってもらえればこっちもすんなり納得するんだけど、
誰でも思いくようなレベルの話を言って「意見の対立があるだろうから難しい」と言われても、
Pythonコミュニティならそんな簡単なことはすぐ合理的に決定するのでは?って思っちゃう。
こっちはブロックスコープの可能性について書いてるのに、仕様変更による意見の対立があるから難しいってのは的を外した反論だし、
じゃあ具体的にどういう対立があるのか?っていうことに対しても知見のある反応をしているとは思えない。
それなのに、「ホント難しい」と、まるで間近で見てきたか議論に参加してきたかのような書きぶりで違和感があったが 、
実際間近で見たとかなのか?それだったらすまんよ。
2019/10/01(火) 18:10:31.98ID:edrieGWV0
基礎的な数値計算の疑問で
x = 0
for i in range(10000):
x += 0.0001
print(x)

0.9999999999999999062
になる理由がよく分からないので教えてください
2019/10/01(火) 18:16:03.81ID:yGujYsxV0
0.0001を2進数に直す
113デフォルトの名無しさん (オッペケ Srbb-SUCl)
垢版 |
2019/10/01(火) 18:42:48.99ID:vlDmDXF7r
0.0001は2進数では循環小数になる→表現できる桁数は有限だから誤差が積もってゆく
2019/10/01(火) 18:43:28.06ID:FnDrhLoap
>>111
>>112の返答がほぼ答えだけど、もう少し親切に説明しようと思う
浮動小数点で0.0001を表すと厳密には0.0001ではなくて小さな誤差を持つので、足し合わせても1にはならない
2019/10/01(火) 18:51:08.71ID:edrieGWV0
>>114
ありがとう
116デフォルトの名無しさん (ワッチョイ 5f11-qPRK)
垢版 |
2019/10/01(火) 19:15:16.00ID:9fvqkmcJ0
>>111
「割り切れない数」の代表格の1/3は三進数では0.1
πはπ進数では10
2019/10/01(火) 20:05:23.27ID:lPnANaUAM
>>110
ぼくのかんがえたていあんをりかいできないとかありえない

ってか?
バカじゃねーの?
そんな簡単にブロックスコープの問題が解決されるなら誰も苦労はせんよw
言語設計者をなめすぎ
2019/10/01(火) 20:21:37.81ID:edrieGWV0
>>116
高校数学をやらなければいけないことは分かった、ありがとう
2019/10/01(火) 22:46:37.27ID:5NrAsYQP0
>>117
結局煽ってマウント取って気持ちよくなりたいだけなんだね。わかったよ。ありがとう。
2019/10/02(水) 04:59:18.95ID:fPPXHhjt0
>>119
それお前だろ…
どんだけ悔しがりなんだよw
2019/10/02(水) 07:42:31.71ID:YpMEiTCH0
二進数の浮動小数点演算では誤差が出る。

誤差を出さないために、Pythonでは fraction (文数) という概念がある。
0.0001 は誤差が出るが、1/10000 なら誤差は出ないという話。

from fractions import Fraction
print(Fraction(1, 10000)*3)

#3/10000

実際のプログラムで誤差を出さない様にするためには、整数演算だけで行う事がよくある。

print(1*3/10000)
#0.0003

x = 0
for i in range(10000):
 x += 1
x = x/10000
print(x)
#1.0
122デフォルトの名無しさん (アウアウエー Sa1f-yXpG)
垢版 |
2019/10/02(水) 13:01:18.79ID:55+aQRnYa
>二進数の浮動小数点演算では誤差が出る。

だから違うから初心者に誤解を招く表現はやめろ
十進数でも浮動小数点演算では誤差が出る
原因は二進数じゃない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。