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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2020/10/17(土) 10:05:38.14ID:1RQ0Wdhu
当スレに★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(超初心者用) その50【まず1嫁】
http://mevius.5ch.net/test/read.cgi/tech/1598527450/

次スレは >>985 あたりが挑戦してくだしあ。(980過ぎて自動落ちは、無くなって久しい)
### END OF TEMPLATE ###
2020/11/18(水) 23:47:39.86ID:cVTuS9Vl
>>392,369
error以外のものを付加したいときとかは普通に関数化してますね
今回は例外処理含めstatsuとerrorがintとstrのみとわかっているので
よりスマートな書き方がないかなと模索してただけです
関数化するとプログラムを分けたときに
同じものを貼るのも、またはimportするのもあれだし、と思って。
その辺を気にしないうまい処理の仕方があるのかもしれませんが
2020/11/19(木) 06:48:28.38ID:SrLjxFgj
>>394
Pythonにはいろんな機能があるから、質問も多岐にわたるわけで
理解できないものがあって当然
JSONなんて使わない人は一生使わない機能だし
2020/11/19(木) 08:41:29.87ID:YoVNSJkp
>>272
Macならhomebrewでpyenvで管理するのが1番楽
anaconda使いたきゃpyenvの中で管理されてるわけだし、pyenvからanacondaの好きなバージョン入れりゃ良いだけ
399デフォルトの名無しさん
垢版 |
2020/11/19(木) 10:53:10.35ID:z88yTjzg
>>386 >>396
status_code=200
error="error"
res = str({"status":status_code,"error":error})
2020/11/19(木) 12:09:45.64ID:oRKf5Y34
>>399
それだとstr()が環境によるのか仕様かはわかりませんが
”が'で表示されてしまいますね
実際そのコードをサーバー立てた試験はしてませんが
以前、JSONをバックエンド側でシングルクオートで書くと
クライアント側でエラーが起きた記憶があります

あと、毎回status_codeとerrorを変数に置く必要もない気がします
もしstr()のシングルクエート化が問題なく
statusもerrorも固定であればもうこれでいいのでは
return str({"status":200,"error":"err"})

自分は簡単な場合はこんな感じです
res = '{{"status":{},"{}":"{}"}}'
#分岐
return res.format(200,"msg","ok")
2020/11/19(木) 15:47:35.30ID:EbSX4tjh
>>400
>res = '{{"status":{},"{}":"{}"}}'

jsonシリアライザーを使わず文字列+format関数を使うメリットなくない?

それに>>396で言ってるプログラムを分けた時に
テンプレートになる文字列をコピペして回るくらいなら
関数化/モジュール化してimportしたほうが健全だよ
2020/11/19(木) 16:15:53.36ID:oRKf5Y34
>>401
>文字列をコピペして回るくらいなら
そんなこといい出したらimport行もプログラム毎にコピペしてません・・?
関数もコピペしてますよね
親で読み込むならまだしもモジュール名に困りますし。
gitで管理するほどのものでもないし

そういう簡単な用途でない場合は
普通に関数化するしjson.dumpsも使っていますし
gitで管理するレベルのモジュール化も実際してしますけどね
2020/11/19(木) 16:54:21.20ID:4Pgi61oy
質問です
「実用的でないPythonプログラミング」という本をやっているのですが
Pylintのところで
コマンドプロンプトに
> pylint -rn --max-line-length=79 --generate-rcfile > myconfig.pylintrc
という風に設定ファイルを作った後に
> pylint --rcfile myconfig.pylintrc pseudonyms_main(評価したいプログラム名です)
とすると
Traceback (most recent call last):
File "c:\users\owner\appdata\local\programs\python\python39\lib\runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "c:\users\owner\appdata\local\programs\python\python39\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "C:\Users\owner\AppData\Local\Programs\Python\Python39\Scripts\pylint.exe\__main__.py", line 7, in <module>
File "c:\users\owner\appdata\local\programs\python\python39\lib\site-packages\pylint\__init__.py", line 22, in run_pylint
PylintRun(sys.argv[1:])
File "c:\users\owner\appdata\local\programs\python\python39\lib\site-packages\pylint\lint\run.py", line 298, in __init__
linter.read_config_file(verbose=self.verbose)
File "c:\users\owner\appdata\local\programs\python\python39\lib\site-packages\pylint\config\option_manager_mixin.py", line 290, in read_config_file
parser.read_file(fp)
File "c:\users\owner\appdata\local\programs\python\python39\lib\configparser.py", line 718, in read_file
self._read(f, source)
File "c:\users\owner\appdata\local\programs\python\python39\lib\configparser.py", line 1017, in _read
for lineno, line in enumerate(fp, start=1):
つづきます
2020/11/19(木) 16:54:40.27ID:4Pgi61oy
File "c:\users\owner\appdata\local\programs\python\python39\lib\codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
File "c:\users\owner\appdata\local\programs\python\python39\lib\encodings\utf_8_sig.py", line 69, in _buffer_decode
return codecs.utf_8_decode(input, errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

となって評価してくれません
2020/11/19(木) 17:09:06.67ID:4Pgi61oy
OSはindows10でPythonのバージョンは3.9です
2020/11/19(木) 17:11:36.55ID:4Pgi61oy
>>405
> OSはindows10でPythonのバージョンは3.9です
indows→Windows
2020/11/19(木) 17:23:13.66ID:YSWc8XxM
>>403-406
3.9なんて使うからじゃろ
3.8にしとけよ
あと
ターゲットの本文?に全角文字入ってないか?入ってたらそれをヤメレ
408デフォルトの名無しさん
垢版 |
2020/11/19(木) 17:28:17.91ID:ikoVfZxF
教えて下さい。

tkinterのテキストに処理の状況を表示していきたいのですが、処理終了後に
一気に再描画される感じになってしまいます。
printしてshellに出力されるような感じで、テキストに出力するにはどうしたら
よいでしょうか。

サンプルです。
------
import tkinter
import tkinter.scrolledtext as tkst

def click():
for i in range(10000000):
# 10000回ループに1回テキスト出力
if (i / 10000 ) % 1 == 0:
editArea.insert('end',str(i)+'回目\n') # 一気に描画される
print(str(i)+'回目') # このようにしたい

# メインウィンドウ作成
root = tkinter.Tk()
root.geometry("600x400")

Button1 = tkinter.Button(root,text='実行',command=click)
Button1.pack()
editArea = tkst.ScrolledText(root,wrap= tkinter.WORD, width=20,height = 10)
editArea.pack(expand=True,fill=tkinter.BOTH,padx=5, pady=5)

# メインループ
root.mainloop()
------
どうかよろしくおねがいします。
2020/11/19(木) 17:32:51.21ID:YSWc8XxM
>>408
flush()について調べてみるとハッピーになれるかもしれない
2020/11/19(木) 17:40:55.60ID:4Pgi61oy
>>407
評価したいプログラムは
https://github.com/rlvaugh/Impractical_Python_Projects/blob/master/Chapter_1/pseudonyms_main.py
です、たぶん全角は入ってないと思います
いま3.9から3.8.6に変えてみて同じことをやってみても
Traceback (most recent call last):
File "c:\users\owner\appdata\local\programs\python\python38\lib\runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "c:\users\owner\appdata\local\programs\python\python38\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "C:\Users\owner\AppData\Local\Programs\Python\Python38\Scripts\pylint.exe\__main__.py", line 7, in <module>
File "c:\users\owner\appdata\local\programs\python\python38\lib\site-packages\pylint\__init__.py", line 22, in run_pylint
PylintRun(sys.argv[1:])
File "c:\users\owner\appdata\local\programs\python\python38\lib\site-packages\pylint\lint\run.py", line 298, in __init__
linter.read_config_file(verbose=self.verbose)
File "c:\users\owner\appdata\local\programs\python\python38\lib\site-packages\pylint\config\option_manager_mixin.py", line 290, in read_config_file
parser.read_file(fp)
File "c:\users\owner\appdata\local\programs\python\python38\lib\configparser.py", line 718, in read_file
self._read(f, source)
File "c:\users\owner\appdata\local\programs\python\python38\lib\configparser.py", line 1017, in _read
for lineno, line in enumerate(fp, start=1):
つづきます
2020/11/19(木) 17:41:42.54ID:4Pgi61oy
File "c:\users\owner\appdata\local\programs\python\python38\lib\codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
File "c:\users\owner\appdata\local\programs\python\python38\lib\encodings\utf_8_sig.py", line 69, in _buffer_decode
return codecs.utf_8_decode(input, errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
というふうになって同じみたいです
2020/11/19(木) 17:50:31.40ID:OpsIjeL3
>>403
文字コード変えてないか?
VSCODEとかのテキストエディタで該当ファイルを開いた時に
ちゃんとUTF-8になってるか?
413デフォルトの名無しさん
垢版 |
2020/11/19(木) 17:51:00.78ID:KWn/SEv2
>>410
その評価したいプログラムがUTF-16で保存されてるみたいだから
VS CodeかなにかでUTF-8で保存しなおせば大丈夫かも
2020/11/19(木) 17:57:08.10ID:4Pgi61oy
>>412
>>413
Visual Studio Codeで開くと右下(ですよね?)には
UTF-8って表示されています
2020/11/19(木) 18:03:30.56ID:EbSX4tjh
>>402
値をあちこちにコピペして使うことと
値を参照してる変数や関数をあちこちで使うことの違い

複数のファイルで同じようなimportを何度も繰り返しやってるなら
__init__.pyとかでまとめればいい

gitは何の関係が?
2020/11/19(木) 18:11:08.22ID:UFBeFMfP
>>git
自分はそこそこできるんだぜアピールじゃないかなw
よくいるよね。こういうタイプの人。
2020/11/19(木) 18:23:43.14ID:NbNudS2h
>>416
いるよね
質問者のくせにアドバイスに挑発的な返しをする人
2020/11/19(木) 18:26:14.64ID:YSWc8XxM
>>414
じゃあBOMがついてるとか?
2020/11/19(木) 18:31:09.44ID:oRKf5Y34
>>415
>複数のファイルで同じようなimportを何度も繰り返しやってるなら
ええ、そういう用途のときはそうすればいいと思いますよ

>gitは何の関係が?
ホストPC以外で開発する場合、通常はクラウドでコンテナ作って云々すると思いますが
いちいち簡易レスポンスのためのimportをコピペするのが面倒なので
gitでリモートします
2020/11/19(木) 18:33:57.52ID:oRKf5Y34
というかホストPCで開発するときも
プロジェクト毎にcloneすると思うけど
毎回ファイルごとコピペしてる人が多いのかな
2020/11/19(木) 18:43:27.44ID:4Pgi61oy
>>418
BOMっていうのは知らなかったですけど
https://qiita.com/JINr/items/255429d6174fad76b9b7
ここに書いてあることをやってみたのですが
BOM付きっていうところをにはチェックは入ってなかったです
あらためてチェックなし状態で上書き保存して同じことしても
同じようなエラーが出ました
422デフォルトの名無しさん
垢版 |
2020/11/19(木) 18:53:18.11ID:ikoVfZxF
>> 409
コメントありがとうございます。
flush() 色々と調べてみましたが、まだ有効に使えていませんが、
調べているうちに、update()とsee()というメソッドがあるのが
わかり、組合せたら上手くいきました。
ヒントいただきありがとうございました。

一応、結果報告
import tkinter
import tkinter.scrolledtext as tkst
import sys

def click():
for i in range(10000000):
# 10000回ループに1回テキスト出力
if (i / 10000 ) % 1 == 0:
editArea.insert('end',str(i)+'回目\n') # OK
editArea.update()
editArea.see('end')
#sys.stdout.flush()
print(str(i)+'回目') # このようにしたい

# メインウィンドウ作成
root = tkinter.Tk()
root.geometry("600x400")

Button1 = tkinter.Button(root,text='実行',command=click)
Button1.pack()
editArea = tkst.ScrolledText(root,wrap= tkinter.WORD, width=20,height = 10)
editArea.pack(expand=True,fill=tkinter.BOTH,padx=5, pady=5)
root.mainloop()
2020/11/19(木) 19:00:41.46ID:j3QxrLZF
>>421
myconfig.pylintrcの方がBOM付きUTF-16LEになってる予感
もしかしてpowershellでやった?
2020/11/19(木) 19:03:04.41ID:YSWc8XxM
>>422解決おめ+報告乙

>sys.stdout.flush()
おう、これ↑は標準出力(Win系ならDOS窓)への出力をいますぐやれよ という命令だから・・・
sysのimportもコメントアウトしちゃって大丈夫にみえる
2020/11/19(木) 19:04:21.67ID:YSWc8XxM
>>421
今知れてよかったな>BOMの存在
(これからもまれに苦しんでいくことだろう)

>>423横じゃが
なるほどなっとくありうる展開
2020/11/19(木) 19:11:37.20ID:4Pgi61oy
>>423
!!!その通りでした!!!
myconfig.pylintrcがBOMつきUTF-16になっていました・・・
本にフォルダでShiftを押しながら右クリックで
「コマンドウィンドウをここで開く」か「PowerShellウィンドウをここで開く」を選べと書いてあったので
PowerShellで開いてやってました
すいません正確な情報じゃなくて・・・
myconfig.pylintrcをUTF-8にしたらうまくできました!!!
ありがとうございます!
2020/11/19(木) 22:17:37.25ID:Na4zD9bI
>>419
クラウドでコンテナ云々とか別に普通じゃないと思うけど
場合によるでしょ
というか今どきはVSCodeのリモート開発がマジでローカルで開発してるみたいで便利でいいよ
あと、jsonモジュールはPython標準なのだから、よっぽど性能を出したいとかじゃなければ標準ライブラリ使った方がトラブらないと思う。自分のいい加減なコードより10万倍ぐらいテストされてるだろうから。
そもそも性能出したいときにPython使わないし、jsonモジュールを使わない方がいいケースがあまり思いつかないなあ。
2020/11/19(木) 22:31:26.53ID:oRKf5Y34
>>427
いや普通に主にVSCodeでのリモート開発ですよ
>ローカルで開発してるみたいで
そのためのコンテナなんですけどね・・
場合によってVSCodeなり別だったりでgit管理、運用がコンテナってだけで。
普通は仮想環境下ならこれらはセットだと思いますよ・・
あと繰り返しになりますが
>intとstrのみとわかっている
みたいな単純な用途の場合ですよ
2020/11/19(木) 23:28:35.13ID:Na4zD9bI
>>428
なるほど、ちゃんと読んでなかったけど
importを書きたくないからの主張なのか
なら、json.dumpsの1行上にimport jsonを書いて2行コピーするのはどうかな?
何回importがあっても問題ないし、文が書けるところならどこにでも書けるし、
式で完結させたければ
__import__('json').dumps(obj)
とすればいいみたい。(これにはちょっと驚いた)

自分はめちゃくちゃ簡単なはずのjsonでも固定のjsonを条件によって2個出し分ければいいとかじゃなければ、
たかだかjsonを出すのに、strに変な文字が入らないか考えたりintをstrに変換する方法を考えたりして、余計な判断が入るのが嫌だから、jsonモジュール任せだな。
まあ、楽な方法は人それぞれだと思うんでjsonモジュールを使わないのが楽と思う人もいるのは否定しないけど。
2020/11/19(木) 23:38:08.43ID:zsB/MCGD
考え方は人それぞれなんでしょうけど、「スマートな書き方」という質問に対して、JSON形式で返すのならjson.dumps使ったほうが他人がコードを読んでも「あ、これはJSONで返すんだな」と意味が理解しやすいしスマートだと思うなぁ
自己満足的なスマートか、保守性も考えたスマートなのか、方向性の違いかしら。
2020/11/19(木) 23:57:14.70ID:gzIvj2mX
import書きたくないから文字列コピペするとかちょっと意味わからん
2020/11/20(金) 00:20:07.13ID:aJFtJ7NQ
>>429
>importを書きたくないからの主張
'{"status":200,"error":"hoge"}'
とか直接書いてもいいし
res(200,"hoge")とかでもしいし
json.dumps(res)とかでもいい
自作モジュールで管理するでもいいし
という前提があります
が今回は、関数に分けるまでもjsonモジュール使うまでもなさそうだな
という用途で、かつ汎用的に流用したい、かつ変数代入やimportの省略による行数の節約
などができないかと思ったときに
formatの使い勝手が良かったしかし、{の干渉があった
が、結果的にその干渉を除くことができました
ってだけの話です
書きたくないというより使うまでもないな
ということに尽きると思います
2020/11/20(金) 00:25:40.46ID:Y24NtUEO
>>432
個人的な趣味だけど、まあC言語とかで書いてるなら言うことは同意できるよ。C言語で書いててそこからの移植とか。
個人的な趣味だけど、Python使ってて「使うまでもない」かどうか一々判断するのは面倒だなって思っちゃう。Pythonって、使えるものは何でも使ってやれの富豪プログラミングの精神に近いかなと。
まあ個人的な趣味でしかないんで、その判断をするのが異常だとは思わないよ。色々な理由があるのだろうし。
2020/11/20(金) 01:08:25.18ID:kqUw2Oqc
>>432
このケースで文字列のコピペでいいと思うのはたぶん君だけ

可読性/変更容易性/テスト容易性など他と比べて何一ついい点がなく明らかにマズい書き方
2020/11/20(金) 01:22:02.94ID:aJFtJ7NQ
極論""返すだけだとしてもどんな場合でもチェックすべきだ
みたいな議論と同じでその主張はさすがに違和感あります >>434
2020/11/20(金) 01:28:55.33ID:1jDOgyGC
statusコードを成型して返すだけのモジュールは別のケースで使っていて
今回はそれを使わないケースだった、というだけの話なのですが
もしかするとどんな場合でもformatを使った書き方でやっている
と勘違いしてる人がいるのかもしれない
2020/11/20(金) 05:05:30.75ID:pwTm9Uxw
>>272
漏れは、Windows 10, WSL2, Ubuntu 18.04 で、
VSCode の拡張機能、Remote WSL を使う

Linux側には、日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使って、
ruby 2.6.6, node 12.16.2 を入れた

yarn は、Windows側に入れて、WSL から、拡張子なしのyarn コマンドを呼べる。
これは、#!/bin/sh で始まるシェルスクリプト

anyenv は多言語向きで、rbenv, nodenv, pyenv, phpenv などを同じ使い方で、統一的に扱える。
同様のツールに、asdf もある
2020/11/20(金) 05:15:51.38ID:pwTm9Uxw
Ruby on Rails では、API モードがあって、API 用のアプリも作れる

初心者は、そういう事を知らないから、
何でも時間をかけて、低品質なアプリを自分で作るw
2020/11/20(金) 05:29:48.35ID:pwTm9Uxw
>>411
>UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
これで、検索してみれば?

UTF-8 は以下のように、先頭ニブル・4ビットで、1〜4バイト文字を判別しています

1バイト文字: 0000〜0111: 0〜7

多バイト文字の2バイト目以降
1000〜1011: 8〜11(8〜B)

2バイト文字: 1100〜1101: 12〜13(C〜D)
3バイト文字: 1110: 14(E)
4バイト文字: 1111: 15(F)

0xff は、4バイト文字を示すけど、それで始まる文字が存在しないのかも?
2020/11/20(金) 05:43:06.55ID:pwTm9Uxw
我流の人は、Git のプルリクを知らなそう。
就職では必須項目

上の人が見たら、一発で書き直し。
バグりやすいコードは、プルリクを受け付けられないだけ

議論するだけムダ

チェックを通ったコードは、合法になるから、
皆が模範にしてコピペするから、我流はダメ!
2020/11/20(金) 06:50:20.26ID:DAmoUJMr
>>432
> かつ変数代入やimportの省略による行数の節約などができないかと思った
いつの時代のおじいちゃんなんだよw
2020/11/20(金) 08:19:06.00ID:azkfkwLr
>>431
んだんだ
2020/11/20(金) 08:27:43.79ID:04W8lkpW
パイソンって書いた事ねーんだけっども、ブロックってインデントで
表現するんだべ?するってーと、100行のブロックにifに入れてぇ
ときは、100行分インデントすんのけ?
2020/11/20(金) 09:03:36.27ID:azkfkwLr
>>443
せやけど
IDEがまともだったり、テキストエディタでもSakuraエディタみたいなPythonソースコードモードがあるエディタなら
自動でやってくれるべ?
2020/11/20(金) 09:09:51.23ID:WciP5EDn
でも範囲の指定は自分でやらんとならんよね。
他の言語ならブロックの開始と終了を書いてやればいいんだけど
pythonは自分で範囲指定してインデントしてやる必要がある。
2020/11/20(金) 09:33:53.10ID:04W8lkpW
やっぱりそれなりのエディタや統合環境が前提なのかな(もちろん批判ではない)。
マジレスありがとう。
2020/11/20(金) 09:52:05.41ID:azkfkwLr
>>446
だがおれはいつもは秀丸でコードを書いている。
範囲指定→右クリメニュー「インデント」→おk!
448デフォルトの名無しさん
垢版 |
2020/11/20(金) 11:05:57.25ID:T+fLV2lq
行選択してtabキー押すだけじゃないの?
秀丸ってそうなの?
2020/11/20(金) 11:14:42.02ID:azkfkwLr
>>448
行番号選択ってこと?
できるかもしらんが、してないなぁ
2020/11/20(金) 11:26:50.71ID:E6icsWYy
なんでVSCODE使わないの?
2020/11/20(金) 11:33:54.21ID:iBr2xRx4
回答者側と思しき立場でただのgit管理にすら怪訝する人が上の方でちらほらいたので正直驚いたけど
個人開発であってもgitはほぼ必須になってくる場面があるのでまとめて覚えておいて損はない
2020/11/20(金) 11:48:54.11ID:SYPK5ijx
>>451
流れ軽く読んで来たけど
・実装の重複を防ぐためのクラス/メソッド抽出してモジュール化
 ⇒設計的な話
・Gitでモジュール化したものを管理する
 ⇒バージョン/ファイル管理的な話

この二つは本質的には別問題だけど、何故か混同された話になってて
よく分からん事になってるな
(実際の開発考えるとGit使ったやり方になるから分からん話でもないが)
2020/11/20(金) 11:58:33.01ID:azkfkwLr
>>450
ネットブックだと動かない
2020/11/20(金) 12:11:55.05ID:pblrwhkp
Notepad++にPython Indentを入れれば同じことができる。
2020/11/20(金) 12:32:50.55ID:azkfkwLr
だがおれは秀丸派
2020/11/20(金) 12:47:59.38ID:27JFXKUI
>>439
>4バイト文字: 1111: 15(F)
>0xff は、4バイト文字を示すけど、それで始まる文字が存在しないのかも?

1バイト文字は0xxx-xxxx
2バイト文字は110x-xxxx
3バイト文字は1110-xxxx
4バイト文字は1111-0xxx

↑この制限だけでも4バイト文字の先頭バイトは0xF0~0xF7の範囲
実際はUnicodeのコードポイントの上限がU+10FFFFまでなので0xF0~0xF4(1111-0100)
2020/11/20(金) 13:12:12.59ID:pRZ0VqUl
chromebookでも動くvscode(´・ω・`)
458440
垢版 |
2020/11/20(金) 13:17:17.31ID:pwTm9Uxw
YouTube で有名な、雑食系エンジニア・KENTA が言ってる

Git のプルリクは、転職に必須項目だと
2020/11/20(金) 13:33:16.00ID:RwZlwr9h
パソコンor通信環境のスペック次第だが仮想環境であればvscodeに限らず大体使える
スマホですら動く
460403
垢版 |
2020/11/20(金) 13:44:15.80ID:OhxLwjcY
>>439
>>423で解決しましたよ
2020/11/20(金) 14:07:20.42ID:geOpYg9g
>>451
git管理に怪訝してる人なんて一人もいないでしょ
むしろgitも理解してるから話が噛み合わない
2020/11/20(金) 14:57:48.56ID:gfvoQY5i
gitを持ち出したのは>>416の指摘通りだろうけど、書いてる内容見るとpythonのモジュールを理解してなさそう

自分が知らなかったことや見落としてたことを絶対に認めずに (本人にとっての)俺はできるんだぞアピールで返す人はスルーに限る
2020/11/20(金) 15:40:25.51ID:abuyzRZn
>>458
プルリクっていろんな人が好き勝手にソースをいじるOSS開発で役立つ機能っしょ
転職に何ら関係ないと思うが
2020/11/20(金) 16:07:05.73ID:Cnjv1GAE
いやプルリクそのものじゃなく今までにプルリクした実績のことじゃないの
GitHubアカウントを見せてこんなことしてきましたよと自己アピールする感じで
そんなん実際にするのか知らんけど
2020/11/20(金) 16:12:52.30ID:dRk/TXCB
日本語翻訳のプルリクでもええか?
2020/11/20(金) 16:21:35.66ID:abuyzRZn
>>464
そういうことね
あまり意味ないと思うなあ
プルリクって他人の作ったアプリに寄生する行為だし
こいつ採用してもOSSにかまけて仕事しないんじゃないかと思われるだけだろう
2020/11/20(金) 16:27:14.70ID:SYPK5ijx
>>466
流石にそれは偏見すぎる
2020/11/20(金) 16:51:03.75ID:zSvQnKz4
最初の質問が>>386だからな
こんなもんjsonモジュール使えで終わる話だろ
2020/11/20(金) 17:12:00.89ID:27JFXKUI
プルリクはOSSに限らないよ
転職の話はプルリクベースの開発スタイルに馴染みがあるかどうか
もしくは適応できるかどうかっての話だと思う
470デフォルトの名無しさん
垢版 |
2020/11/20(金) 17:38:21.51ID:AGMq159w
すまん、それpython関係ある???
2020/11/20(金) 17:53:38.81ID:04W8lkpW
あげるなよ、何かを信じてる方々の啓蒙活動なんだから。
背景雑音だっぺ。
2020/11/20(金) 19:34:59.52ID:M1wpYzhx
モジュール化してimportするまでもない
git管理するまでもない
関数化はしてもいいがするまでもない
そういう用途下で、ただのformat関数をつかった文字列出力の小技の話なのに
なぜかどんな場合にもimportすべきだjsonモジュール使ってチェックすべきだ
みたいな勢力がいる違和感
2020/11/20(金) 19:42:56.25ID:abuyzRZn
>>472
違和感でも何でもない
技術者にはそれぞれ己の中に譲れないポリシーがある
「〜するまでもない時はしないでいい」というのもポリシーだし
「どんな時も〜するべきだ」というのもポリシーだ
それが匿名掲示板でぶつかり合うとこうなる
2020/11/20(金) 20:00:35.31ID:OHdUFTne
>>462
git持ち出したのは>簡単な用途でない場合
の一例ですよ
簡易的に仮想環境化で動作確認したい場合とか
statusを返すようなモジュール個別開発したりcloneしたりバージョン管理もする必要のない用途例として出しただけです
ここの人なら普通に使ってるものだと思っていたし
できる人のアピールになぜgit?という感じで正直謎でした
2020/11/20(金) 20:29:53.22ID:l5Hw5z7m
2行目で何をしてるのか教えて下さい

s = input()
print(max(map(len, s.split('S'))))
2020/11/20(金) 20:35:44.50ID:azkfkwLr
>>475
print、max、map、len、split
それぞれでggrks

続きは↓でな
https://mevius.5ch.net/test/read.cgi/tech/1258320456/
477デフォルトの名無しさん
垢版 |
2020/11/20(金) 20:47:13.53ID:uMSrjpcB
JSONで返しますって言ってるAPIがJSON風の自前の文字列返してくるとか嫌がらせ以外のなにものでもない
何のためにJSONが存在してると思っている
2020/11/20(金) 20:54:33.52ID:abuyzRZn
>>475
sに入力した文字列を'S'を境にして区切り、区切った文字列ごとに文字数を算出し
その中から最大の数を選んで表示する

これは難解
map関数は関数型言語からバクッてきた機能らしく、Pythonの文脈に馴染んでおらず
使うと大抵可読性が落ちる
プログラマたるもの、難解な1行より明快な5行を書くことを心掛けなくてはならない
2020/11/20(金) 20:57:12.97ID:Y24NtUEO
バージョン管理しない書き捨ての用途だとしてもjsonモジュール使う方が何も考えなくていいもの
jupyterで適当なコード書くときだってjson numpy pandasあたりは大体始めに必要だとわかってimportしとくわ。

自分でフォーマットする合理性が理解できない。
「jsonモジュールを使うまでもない」というが、「jsonモジュールを敢えて使わない理由はない」と思ってしまう。
それこそ内包forを使うまでもないから使わない、みたいな話と同じように感じてしまう。
車輪の再発明はどうしても必要とされない限りは基本的に避けた方がいい行為、ということにも合意はなされない、のかな。
2020/11/20(金) 20:59:04.30
>>477
つまりパーサーを通したものこそ真のJSONである、と・・
しかし、そのパーサーの中身は・・?
これやってみては
if json.dumps({"status":200}) == '{"status": 200}':
_print(True)
481デフォルトの名無しさん
垢版 |
2020/11/20(金) 21:00:33.44ID:Y24NtUEO
>>475 >>478
print(max([len(st) for st in s.split('S')]))
だったら理解できるのかな?
特に478、こっちの書き方なら十分にPython流で明快とされると思うのだが
2020/11/20(金) 21:01:42.82ID:azkfkwLr
>>479
> 車輪の再発明
そういえば
去年あたり、このスレに
「エクスポーネンシャルの逆関数を発明した俺天才!」みたいな書き込みしにきたあふぉがいたなぁ・・・  (´ー`)
483デフォルトの名無しさん
垢版 |
2020/11/20(金) 21:08:06.35ID:Y24NtUEO
>>480
筋悪だな
json.dumps(json.loads('{"status": 200}')) == json.dumps({"status":200})
ぐらいにしないとFalseになる可能性は十分にある、今実験してTrueなったから未来永劫Trueだろう、というのは考えが甘いよ
それがTrueになるのはどのPythonの実装でなら担保されるのかな?

要は、いちいちJSONの仕様を100%確かめて、100%準拠した手書きJSONを書くというのは割りに合わないということ。
import jsonとかjson.dumpsと書くたったの10秒ぐらいの余計な時間で、
もし間違ったJSONを出力してパーサーの方でパースできない原因を究明することになったときに必要な何十分がなくなるんだから、
余計な10秒をかけない理由がない

変に手抜きすると結局その手抜きが原因で100倍ぐらい余計に時間がかかったりするのがプログラミングの常だもの
2020/11/20(金) 21:09:07.64ID:l5Hw5z7m
>>478,481
なるほど。ありがとうございます。
少ない行数で書ける人に憧れてましたけどそうなんですね…
485デフォルトの名無しさん
垢版 |
2020/11/20(金) 21:14:07.28ID:Y24NtUEO
>>484
少ない行数で書けることがカッコいい、わけではないが、このぐらいのmapは流石に読めたほうがいい
これを5行で書くほうが良いと言うのは、正直いって10年以上前にプログラミングを習ってそこから知識がアップデートされてない人種だと思ったほうが良い
勿論初心者なら、ちょっと読み解くのが難しいから自分には5行でしか書けない、5行のパターンじゃないと読むのが難しい、というのでも構わない
でも今どきJavascriptなんかでこんな書き方は当たり前なんだから、向上心があるなら慣れるべきだと思う
2020/11/20(金) 21:23:59.20ID:aJFtJ7NQ
>>483
ただの書き方の解釈、開発環境での用途の話であって
Trueが担保されるかどうかは別の話
余計な10秒をかけたくないときに使えば良いだけ
ただの文字出力用途で100倍余計に時間がかかってしまう具体例を教えてほしい
487デフォルトの名無しさん
垢版 |
2020/11/20(金) 21:39:21.22ID:Y24NtUEO
>>486
え、「ちゃんとパース可能なJSON」を書き出したいんじゃなくて、「ただの文字出力」をしたいって話だったの?
ただ単純に「ちゃんとパース可能なJSON」を書き出すのが目的だとしたら、
1. JSONの規格を100%理解しているわけではないプログラマーがいい加減に書き出した文字列(テスト回数10回ぐらい)
2. Pythonの標準ライブラリとして用意されているjsonモジュールを使ってオブジェクトをJSON文字列に書き出した文字列(テスト回数100万回ぐらい)
のどっちが良いか、で、1が良いなんてことあるの?
1が良い場合もないとは言えないと思うけど、何かしら条件が必要だと思わない?
「いい加減に書き出した」せいで1時間デバッグに余計にかかったんだとしたら360倍時間かかってるわけで
そもそも{}がうまく出ないとか5chに質問してる時点で相当解決に時間かかってるのでは…?
488デフォルトの名無しさん
垢版 |
2020/11/20(金) 21:56:03.77ID:AGMq159w
pythonでmap, filterあたり使う理由ってほぼないだろ
内包表記に比べて遅いしgeneratorで返ってくるし
489デフォルトの名無しさん
垢版 |
2020/11/20(金) 22:04:18.19ID:V+7Wns2i
>>488
シーケンシャルに処理していくならgeneratorを連鎖させると速い
それでも generator内包表記で充分なのは確かだが
490デフォルトの名無しさん
垢版 |
2020/11/20(金) 22:08:29.63ID:Y24NtUEO
>>488
内包表記に比べて遅い、は最近のPythonだとFalseだよ
内包表記に比べて短く書けるわけではない、というのは場合によりTrue
map(lambda x: func(x, 2), arr)と書くよりは
[func(x, 2) for x in arr]と書くほうが短いが、
map(str, arr)とかだったら、
[str(x) for x in arr]より短いから意味がないということもないと思う
list付けてもこの場合はmapの方が短いしね
と言いつつ、関数の呼び出しの形の差でmapを使うか内包表記を使うかいちいち考えるのはめんどくさいので常に内包表記使ってるけど...
2020/11/20(金) 22:10:42.73ID:aJFtJ7NQ
>>487
繰り返しになるけど、文字出力と同等の用途なだけ
個人的にフロントで「ちゃんとパース可能なJSON」を解釈できればいい、その程度の用途
あとはfomatの{回避にふと疑問を持ち質問を投げた、それだけこと
というか他でjson.dumpsは普通に使ってるので
こっち({回避の疑問)の方が主ではあります

繰り返しになりますが、何がなんでもformatを使って自己パーサーを作る、なんていう質問意図ではないです
個人用途で、キーや値の変更による成型を考える場合の変数代入や関数化する過程で発生する
json.dumps使用以外の過程を省きつつ
フロントで解釈できる程度の結果を得たい(得た)というだけの話

個人的には上みたいなJSONとして解釈できるただの文字出力用途で
開発途中に100倍余計に時間がかかってしまうようなことはないと思います
2020/11/20(金) 22:29:11.10ID:27JFXKUI
>>491
formatでつまづいた結果
5chで叩かれて悔しい思いして
100倍余計に時間かかったね
2020/11/20(金) 22:36:29.18ID:wMzkLTJS
>>491
だからそれが正しいと思うならそうすればいい
ただそう考える人はあまりいないと言うだけの話
特に職業プログラマーはチームで作業してることが多いから個人が考える「かっこいい方法」は忌み嫌われて当然
ましてや>>386程度の質問をするレベルじゃあねw
494デフォルトの名無しさん
垢版 |
2020/11/20(金) 22:40:22.91ID:Y24NtUEO
>>491
「フロントで「ちゃんとパース可能なJSON」を解釈できればいい」のならjson.dumps(obj) 一択
1行でコピペできないという問題も__import__('json').dumps(obj)という書き方で解決された

なぜそこまで自分のコードが信頼できるのか疑問
jsonモジュール(別にjsonモジュールに限らず、他の言語も含む世の中にある名の知れたライブラリ)を書いたプログラマーのほうが
色んな人にソースコードの動作を検証してもらってるし、コード自体も査読してもらってるし、長い時間をかけてそのモジュールを書いているし、
そもそもオープンソースとして公開する時点で優秀なプログラマーの可能性が高い
あなたの言う「スマートなやり方」というのは、「言語/言語のエコシステムの補助を使わずになんとかする方法」なのかな?

「適当な文字出力」と「パース可能なJSONの出力」はハードルが違うからね。
あと、この場合あなたが書きたいのは「パーサ」じゃなくて「シリアライザ」とか「フォーマッタ」と呼ばれる

ぶっちゃけ何度もimportしても構わないからimportは必ずプログラムの頭に書かなくてもいいとか知らなかったことを認めるのが癪で
引っ込みがつかなくなってるのではないかな?
超初心者用のスレなんで、知識が怪しいんじゃないか、というところにツッコミを入れるのもアレだけど、パーサの誤用とか含めて
プライドが高い割には知識が怪しいように思っちゃうなぁ。
2020/11/20(金) 22:40:35.67ID:aJFtJ7NQ
>>492
投げた質問が返ってくるまでその質問タスクしか処理できないなんてありませんよ・・
あなたはそうなのかもしれませんけど

>>493
その程度の読解力やレッテル貼りするような人格だと苦労しそう
お察しします
2020/11/20(金) 22:43:05.19ID:abuyzRZn
>>481
個人のポリシーでしかないから押し付けるつもりはないが
内包表記も関数型言語からの取入れであり可読性の悪いコードになる
何せコードを右から読まなくてはいけないからね
よって自分は先のmapとこの内包表記は極力使わないようにしてる
forとifとappendでリストにまとめるスタイルが一番しっくりくる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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