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

■ このスレッドは過去ログ倉庫に格納されています
2021/06/09(水) 21:05:44.61ID:zRBfpo4e
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがある(この板にあるとは限らない)ので、そっち池。
「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

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

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

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

〇前スレ〇 【まず1嫁】くだすれPython(超初心者用) その53
https://mevius.5ch.net/test/read.cgi/tech/1615846784/

次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
713デフォルトの名無しさん
垢版 |
2021/08/30(月) 17:48:48.11ID:7NK+aNuC
configparserもヘナチョコいんよねえ
714デフォルトの名無しさん
垢版 |
2021/08/30(月) 22:43:34.34ID:30yuDIRz
python2でpip等使わずlz4のデータ展開をする方法はありますか?
2021/08/31(火) 00:05:53.27ID:2Z3a814f
OSにliblz4があるか導入できるならctypesモジュールでいけんじゃない
716709
垢版 |
2021/08/31(火) 19:12:15.52ID:9YLyrvXT
みなさんありがとうございます
pymemcacheが探してた答えのようです
>>712
自分の設計が悪いだけなのでしょうが、引数で持ち回ると全体的にコードが冗長になってしまい正解が分からなくなっていました
2021/08/31(火) 19:30:48.38ID:VFuuQVk7
グローバル変数的なものを格納するだけに使うつもりで、常に1つしかインスタンス化しないようなクラスは、全くインスタンス化せずクラス変数とクラスメソッドで使うというのもありですか?
インスタンス化してインスタンス格納用の変数を用意するのが面倒だなと思いまして。
2021/08/31(火) 20:01:08.53ID:2Z3a814f
mockで差し替えたり、初期化を遅延したりしないんならそれでもいいんじゃない
もし必要になったときに見直せばいい
といってもシングルトンの制御いれるだけなんだけどね
2021/08/31(火) 21:31:36.81ID:1mws6K8n
https://ideone.com/Xn6V4Y

1から10まで数え上げるプログラムで
total = 0をdefの上の行に移動するとエラーになります
>UnboundLocalError: local variable 'total' referenced before assignment

defの中からグローバル変数?は書き換えられないということですか?
あたま痛い
2021/08/31(火) 21:47:50.29ID:vXJ7Oc0W
複数行コメントアウトしたいとき
'''
print("hello")
'''
pass

という風にしますが、
解除したいとき変更箇所が2箇所あるのでちょっと面倒だと思いました
なので
#'''
print("hello")
#'''
pass
こうして、上部のみの#を付けたり消したりするだけで切り替えできるようにしてみたのですが
何か不測の事態とか起きるでしょうか?
2021/08/31(火) 21:48:09.84ID:vX6Y4w4T
>>719
global total
2021/08/31(火) 21:53:19.20
エラーでなかった >>719
https://colab.research.google.com/drive/1KbiL4M7797yGTfasvBOkor3HJzTCgPLf
2021/08/31(火) 23:25:58.49ID:7dGeW7mE
>>719
Pythonの変数のスコープについて調べたほうがいいかもね
2021/08/31(火) 23:47:03.52ID:2Z3a814f
>>720
それ文字列リテラルでコメントアウトに使うもんやない
Python対応のIDEかエディタつかおう
2021/09/01(水) 07:51:46.18ID:A3Q1UiDE
twintってライブラリ使ったことある人おる?
自分のアカウントのすべてのツイートをスクレイピングしてきたいんだが、10日前くらいまでのツイートしかとれなくて困ってる
2021/09/01(水) 13:06:04.44ID:uLacWkrf
>>725
https://github.com/twintproject/twint/issues?q=is%3Aissue+10+days
2021/09/01(水) 20:28:34.09ID:KwaoNT+v
いちばん勢いあるPythonスレがこのスレで、この程度の勢いとか
Pythonほんとに人気あるの?
2021/09/01(水) 20:51:14.35ID:zw5pi55j
ム板と言うか5ch自体が衰退メディアですし
2021/09/01(水) 22:50:28.57ID:UppKED7J
>>726
ありがとう。
昨日から使い始めたけど、ちょうどそのタイミングくらいから他の人も使えなくなったっぽいですね
twintをあと1週間早く知ってればよかった。。
2021/09/02(木) 12:59:54.32ID:DVH2qPZi
Windowsでminiconda(4.9.2/python3.8.5)使っててproxy関係のエラーが出る。
proxyが必須なNW環境。
baseだとproxyエラーが出ずrequestで外部URLのスクレイピングなどもできる。
それ以外の環境をconda createで作ってそっちをactivateした状態からだと「cannot connect to proxy」エラーが出る。
.condarcにはproxyを記述してある。
どの環境からconda configを見てもHTTPもHTTPSもproxy情報が参照できている。

baseをcloneした環境を試したらそっちは繋がる。
cloneで作った環境とcloneせずにcreateした環境(proxyエラーになる)とでライブラリをチェックしたけどopensslとかcertifiとか入ってるもの自体はほとんど同じ。
違いというとcreateした方はversionがconda-forgeの最新版になってるからそこだろうか。
minicondaの最新版のインストーラ(4.10.3/python3.9)を使って再インストールしたらbaseからでも繋がらない。
proxy接続のためにWindowsの証明書ストアに.crtファイルをインポートとかしてるからその辺りかもしれない。
731デフォルトの名無しさん
垢版 |
2021/09/02(木) 16:02:33.72ID:L8dQJCTS
初めてwindows使うんですがcondaとpipってどっちがいいんでしょうか
今まではノリでpip使ってたんですがググるとcondaもいいと言われて迷ってきました
主な使用用途は簡単なスクリプトからデータ計算、セキュリティの勉強や自分用のまとめ表作りなど本当に様々です
732デフォルトの名無しさん
垢版 |
2021/09/02(木) 16:15:26.22ID:4vWPiFe2
>>730
原因を調べたいのだったら追及すれば良いけど
そうじゃないならVPNとかSoftEtherとかでProxy無しで外に出れるフェイク環境を作ると解決

>>731
pip
ただしcondaが共存してるときはcondaで先に探して
見つからないときだけpip使うようにしてる
2021/09/02(木) 19:59:47.57ID:bRMdZZsN
>>727
https://search.yahoo.co.jp/realtime/search?p=python
734デフォルトの名無しさん
垢版 |
2021/09/02(木) 20:21:57.15ID:PLPQmXRE
>>731
pip
condaいらん。無駄なことしたくなかったら入れないほうがいい
735デフォルトの名無しさん
垢版 |
2021/09/02(木) 20:32:53.62ID:lSTkj0Rg
https://twitter.com/freezerinalice/status/1433389771800256516
https://twitter.com/5chan_nel (5ch newer account)
2021/09/02(木) 20:41:46.54ID:t+wDMqp+
クラス変数に順次アクセスする方法はありますでしょうか。(define代わりにクラス直下に変数が複数ある状態)
__dict__.valuesで取れるとあったのでリストに入れてforで回そうと思ったのですが、変数以外にいろんな属性がついてきてしまいます。
2021/09/02(木) 20:55:57.53ID:DVH2qPZi
>>732
原因分かったわ。
世の中に配布されてるcertifiのcacert.pemっていうファイルにこの環境で使ってる独自の証明書のpemファイルの中身を追記したら繋がった。
コピペは避けたいから2ファイル読ませられないかとcertifiを調べたけどcacert.pemが決め打ちだから無理っぽい。
ついでになぜか3.8.5までしか動かない問題をチェックしたがそっちは解消されず。
3.9にすると同じ方法でも繋がらないどころかconda自身のアップデートもできない。
openssl周りじゃないかと思うけど諦めた。
2021/09/03(金) 11:02:01.16ID:qtGmv/9F
>>736 こういうこと?

https://stackoverflow.com/questions/1398022/looping-over-all-member-variables-of-a-class-in-python

https://stackoverflow.com/questions/5607307/get-the-list-of-a-classs-variables-methods-in-python
2021/09/03(金) 13:14:44.01ID:QJ/1j3Lw
>>738
出先なんで試せてないですが、そんな感じです。厳密には変数名ではなくて値を取りたいです。
740デフォルトの名無しさん
垢版 |
2021/09/03(金) 21:55:16.43ID:T2V+s1mX
>>738
差集合とるのか。なるほどな
https://ideone.com/OwAB4x
2021/09/05(日) 13:43:56.65ID:LaSEjliV
tzinfoが設定されているdatetimeオブジェクトを、時差が適用された状態で文字列か新しいdatetimeオブジェクトに変換したいです
具体的には↓のコードのlocal_dtから日本時間に変換したdatetimeオブジェクトが欲しいです
↓のコードではpublishedは最初UTCで、それをAsia/Tokyoのlocal_dtに変換しています
しかしlocal_dtのmonthやdayなどを参照しても日本時間になっていません
時差の実際の適用は手動でやる必要があるのでしょうか?

def get_published(self, obj):
print('tzinfo', obj.published.tzinfo) # UTC
tz = pytz.timezone('Asia/Tokyo')
local_dt = obj.published.astimezone(tz)
print('conv tzinfo', local_dt.tzinfo) # Asia/Tokyo
return local_dt
742デフォルトの名無しさん
垢版 |
2021/09/05(日) 14:51:07.53ID:LgQhIBwq
localtime()
2021/09/05(日) 14:53:32.33ID:lJqHVJAL
>>741
特に問題なさそうだけど
https://paiza.io/projects/e/sD6Ie32hJrm87zm1wb_LDg
2021/09/05(日) 15:54:14.08ID:LaSEjliV
>>742
timeモジュールのですか?

>>743
????
同じコードをこちらの環境(Linux)でも実行しましたがうまくいきました
Djangoでコードを動かすとなぜかうまくいきません
なんで?
2021/09/05(日) 16:08:51.59ID:lJqHVJAL
>>744
https://docs.djangoproject.com/en/stable/topics/i18n/timezones/
2021/09/05(日) 19:53:30.08ID:ejEr4mJx
リストの結合について質問です
リストの先頭要素を末尾に移動したいとします
ex)[0,1,2]→[1,2,0]

コマンドラインで以下のように書いたところ
2行目で can only concatenate list (not "int") to list というTypeErrorが発生してしまいました
li = list(range(3))
li[1:] + li[0] # TypeError

結果として
li[1:] + li[:1]
としたら問題なく通ったのですが、先に書いた方がエラーになるのはどうしてですか?

li[0]は0(int型)なので、スライスを使用して取得したリスト(li[1:] で得られる [1, 2]、リスト型)とは加算演算できない、という認識で良いですか?
で、li[:1]で取得できるのはリスト型の[0]なので加算可能ということでしょうか
747デフォルトの名無しさん
垢版 |
2021/09/05(日) 20:47:37.17ID:DaMQ65LY
>>746
大体そんな感じ

"+ (加算) 演算は、引数同士の和を与えます。引数は双方とも数値型か、双方とも同じ型のシーケンスでなければなりません。前者の場合、数値は共通の型に変換され、加算されます。後者の場合、シーケンスは結合 (concatenate) されます。"
https://docs.python.org/ja/3/reference/expressions.html#binary-arithmetic-operations
2021/09/05(日) 20:51:43.82ID:ejEr4mJx
>>747
ありがとうございます
参考URLもどうもです
749デフォルトの名無しさん
垢版 |
2021/09/06(月) 12:19:20.10ID:5X8quI1P
ファイル読み込み時に入力セパレータを改行から他の文字列に変える事は出来ないのでしょうか?
perlなら$/='\n\n'みたいに入力のレコードセパレータを改行2個にしたり出来るのですが
今はファイル一括で読み込んでsplitしてるので読み込み時間がえらく掛かってしまいます
1行ずつ連続した改行がくるまで読んで連結するとかはあまりスマートじゃないのでなにか上手い方法知ってらっしゃる方いましたら教えて下さい
2021/09/06(月) 12:45:22.69ID:n3QcSaSA
csvとして読み込め
2021/09/06(月) 12:47:18.91ID:FistWoaj
open関数のnewlineパラメータでできそうだけど速くなる気がしない
752デフォルトの名無しさん
垢版 |
2021/09/06(月) 14:44:42.59ID:DsY+3+kX
>>743
変数名や引数名の付け方が最低だな
753デフォルトの名無しさん
垢版 |
2021/09/06(月) 14:46:25.44ID:DsY+3+kX
>>746
li[1:] + [li[0]]
754デフォルトの名無しさん
垢版 |
2021/09/06(月) 14:48:25.79ID:DsY+3+kX
>>749
>一括で読み込んでsplit
本当にこれが原因だと思ってるなら
2行ずつ読めば良い
2021/09/06(月) 15:11:11.17ID:h2TdR+zH
first_value = li.pop(0)
li.append(first_value)
実行速度を気にするならdequeとか使うんかね
756デフォルトの名無しさん
垢版 |
2021/09/06(月) 15:25:00.95ID:5X8quI1P
>>754
すみません、2行ずつ読む意味が分からないんですがgzip化された25万行くらいのファイルでも読み込むと
d = fp.read()で一括で読んだ時は6秒程度、d = fp.readlines()やd = [x for x in fp]で1行毎に読んだ時は0.3秒程度と読み込みだけで結構な差が出てますので一括が原因だと考えてます。

やりたい事は下記のような必ず改行2連続で区切られたデータひと固まりをリストの1要素として取得したいわけですが、これを下記のようにやると読み込みに時間が掛かってしまうので先の質問に至ったわけです
d = fp.read()
s = d.split('\n\n')

aaa
bbb ここのひと固まりの行数は可変
ccc

ddd
eee

fff
ggg
hhh
2021/09/06(月) 16:49:12.87ID:cl/YIp9D
人間の発想だと改行が2個続くことを条件に分割してやれば早いって思えるけどpythonのあるべき書き方だと違うやり方の方が早いこともありそうな気がするね。
例えばだけど1行ずつ読んでkeyを行番号にvalueにして中身は条件判断せずにテキストを読み込み切ってからvalueを縦に走査して改行のみが入ったところで区切りの処理をするみたいな形にしたら早まらんかな。

元の質問の狙いとしては改行が2個続いたときに普通は使われない文字(例えば▲とか)に1回置換してそこからまた▲を行区切りとして読めば短縮されるのでは?というように見える。
けど756を見るとその置換処理の時点で6秒かかって意味なさそうに見えるわな。
2021/09/06(月) 16:53:07.95ID:VKhiLpUq
>>756
その程度なら次の行読んで
・データがあるならリストに追加
・空か末端ならリスト終了
でええやん
あるいはBufferedReaderつかってリスト毎に返すioを実装
759デフォルトの名無しさん
垢版 |
2021/09/06(月) 17:15:24.45ID:5X8quI1P
>>757
質問の意図としては一括払い読み込みのread()は遅いので使いたくない
読み込みが速い1行ずつの処理で行いたいが、perlのようなファイル読み込みセパレーターが改行2個に出来れば
純粋な1行読み込みみたいにループ処理の際に改行のみのデータが来るまでリストや文字列を連結すると言った事をしなくて良いのでその方法があったら知りたいって事です

>>758
やっぱりリスト追加とかやるしか無いんですかね
bufferdReaderとかってヤツは知らないので調べてみます
2021/09/06(月) 17:34:12.87ID:cl/YIp9D
ファイル開くときのopenでnewlineに改行2個入れてみたら?
2021/09/06(月) 17:35:55.31ID:cl/YIp9D
>>760
エラー出たわ
762デフォルトの名無しさん
垢版 |
2021/09/06(月) 18:22:41.52ID:5X8quI1P
なんか調べてたら公式のissue152248で任意の区切り文字での読み取りの話を色々やられてたんで、それ通りやればとりあえずは望み通りの動きが出来ました
まあ知らない記述やらモジュールとか使ってるんで全く内容理解してませんが
長々と失礼しました、回答頂いた方ありがとうございました
763デフォルトの名無しさん
垢版 |
2021/09/06(月) 23:20:11.85ID:lLs6oVSG
よろしくお願いします
tqdmのプログレスバーがリストの長さだけ改行されてターミナル上で表示されてしまいます
これを1本のバーが更新されて表示されるようにしたいです
python3.7.9, VScode, windows10です
764デフォルトの名無しさん
垢版 |
2021/09/06(月) 23:39:42.63ID:ek7WdP0s
1行の長さを適当に100文字と考えて50MB程度しかないのに、buffer(あるいは行)に分割しないだけでそんなに遅くなるもんかな?
2021/09/07(火) 10:32:46.11ID:SoS5+Qbw
うちのpython3.8.5のシェル、pip install sympyが通らないからおかしいなーと思ってpip installを実行したらこれも通らないんだけど何故?

>>> pip install sympy
File "<stdin>", line 1
pip install sympy
^
SyntaxError: invalid syntax
>>> pip install
File "<stdin>", line 1
pip install
^
SyntaxError: invalid syntax
2021/09/07(火) 10:50:57.04ID:SgLDDegk
>>765
それはシェルじゃなくてPythonのインタプリタ
pip installはbashやzshみたいなシェルに入力するコマンド
Pythonのインタプリタは基本的にPythonのコードを入力するところ
767デフォルトの名無しさん
垢版 |
2021/09/07(火) 11:05:44.28ID:E5TDGgcH
>>764
色々試してみましたが、読み込みと言うよりメモリに一括で入れるのが原因で遅くなる感じのようです

d = fp.read() や d = ''.join(fp) や d = ''.join([x for x in fp])とか色々試しましたけど、これらの場合は遅くて
下記のようにfor文で連結させたら早くなりました
ネットとか見てもjoinの方が速いとか書いてるんですけどね
d = ''
for s in fp:
d += s
768デフォルトの名無しさん
垢版 |
2021/09/07(火) 12:03:40.05ID:E5TDGgcH
>>767
自己レスですけどマシンの問題のような気がします
Linuxでやってるとread()がめっちゃ遅いんですが、windowsだと変わらないくらい速いです。
寧ろ+=で代入とかしてる方はクソみたいに遅すぎて、なんでここまでの差が出るのか意味分からないくらいです
2021/09/07(火) 12:18:31.34ID:hE/CNaTP
>>767
どう考えても計測方法・計測環境の問題
キャッシュか空きメモリの影響
2021/09/07(火) 13:57:15.69ID:6nMAIx0t
メモリ周りだとありがちなのは初回だけ遅くて2回目は早い(python用にメモリ空間を囲うから)だけどそうでもないならOSのファイルシステムの根っこのあたりが腐ってるとかかもな。
個人的に作ってるようなものだったらgoogle colabとかのクラウド実行環境でサクッと検証してみては?
771デフォルトの名無しさん
垢版 |
2021/09/07(火) 14:25:01.03ID:QthkAqNV
>必ず改行2連続で区切られたデータ

readlines() でループ回して一回ずつ飛ばせば良いだろうね
2021/09/07(火) 15:00:03.49ID:GNL8Ud6q
改行3連続があった場合は?
2021/09/07(火) 15:48:04.56ID:2tb+Xun1
>>741
ですが解決しました
sqlite3使ってたせいだったみたいです
2021/09/07(火) 18:18:55.32ID:SoS5+Qbw
>>766
ありがとうございます。今度はシェルでpip install sympyが通ったんですが
pip installが通りません。
>pip install
ERROR: You must give at least one requirement to install (see "pip help install")
2021/09/07(火) 18:42:45.52ID:o/q1by9H
>>774
単純にpip install <インストールしたいパッケージ名>
っていう構文だから
ッケージ名を書いてなかったら、そりゃエラーメッセージ通りのエラーが出るぞ
776デフォルトの名無しさん
垢版 |
2021/09/07(火) 18:46:56.75ID:9ZJa/YC2
d = ''
for s in fp:
__d += s
これは一番ダメな実装でしょ。
文字列はイミュータブルだから、メモリコピー量が2乗で増えていくことになる。
それでもマシンの能力が「十分」なうちは、他の実装より速いこともありうる、ってだけ。
2021/09/07(火) 19:35:15.63ID:yHN0q2ka
>>776
ねーよ
2021/09/07(火) 19:36:34.77ID:u7xHCyux
>>773
sqlite3とどう関係が・・・??
2021/09/07(火) 19:59:43.49ID:6nMAIx0t
>>776

随分昔(※Java1.5の頃)から、「文字列結合は"+"ではなく、StringBufferを使うと処理が高速化する」ということが既に広く知られていました。
https://qiita.com/nkojima/items/0098dccbe4a593bc0306

みたいな話かな。
pythonだとどうなんだろ。
2021/09/07(火) 20:23:56.12ID:SoS5+Qbw
>>775
え、インストールしたパッケージ一覧が出てくるんじゃないですか?
誤情報ですかね・・・
2021/09/07(火) 20:25:59.15ID:yP3cXAjd
pip list
2021/09/07(火) 20:26:41.96ID:o/q1by9H
>>780
節子、それやりたいならpip listや
2021/09/07(火) 20:33:41.53ID:YcIWO4/P
Elixir は片方向リストで、immutable だから、
先頭への追加ではコピーされないけど、
末尾へ追加するとコピーされる

つまり、先頭のみ最適化される

だから未だに、文字列を追加していく方法が分からない
2021/09/07(火) 20:37:37.38ID:eKv4jfBm
>>776
今時はよほどループ回さんとたいして違わない
https://qiita.com/GinRickey/items/d8ed9964820313340a93
2021/09/07(火) 21:31:13.42ID:8Blsw2sW
CPythonでは最適化が入っていてO(n)になるんだけど使うなとPEP8に書いてある
https://www.python.org/dev/peps/pep-0008/#programming-recommendations

For example, do not rely on CPython's efficient implementation of in-place string concatenation
or statements in the form a += b or a = a + b. This optimization is fragile even in CPython
(it only works for some types) and isn't present at all in implementations that don't use refcounting.
In performance sensitive parts of the library, the ''.join() form should be used instead.
2021/09/07(火) 23:20:45.23ID:Cp1uuQsT
>>779
それってJavaの処理系がさぼっているだけだよねね
2021/09/08(水) 00:39:17.00ID:jISXv5nw
>>786
スレチだからあれだけど、一応はJDK11で大分改善されたぞ
(それでも+結合が一番遅いけど)
788デフォルトの名無しさん
垢版 |
2021/09/08(水) 15:36:42.18ID:sW5ieu31
>>732
>>734
大変遅くなりましたがありがとうございました
助言通りpipにします
789デフォルトの名無しさん
垢版 |
2021/09/08(水) 15:56:50.49ID:45GUJlB8
重いcondaら
2021/09/08(水) 16:50:53.30ID:B2IhbCSc
勉強するだけならcondaが便利

でも他システムと繋げにくい
2021/09/08(水) 17:27:10.26ID:tJQkvu8J
formatで
0.1未満なら "5.2%"
0.1以上〜1.0未満なら "5.1%"
みたいに、全体の桁数は固定で値によって少数点以下を調整してくれるような簡易な方法ってないですか?(%だけでなく、fなんかでも)

formatだと丸められるので、単純に
if x >= 0.1 とかはできないので、一旦formatかけてからlenで桁が溢れてないかチェックしてるんですが、もうちょっとスマートな方法が無いものかと。
2021/09/08(水) 17:42:49.27ID:s8bChe9P
単に関数作っとけばいいんでないの?
2021/09/08(水) 17:50:12.13ID:QqH5BAVe
何回か読み直したが
難解過ぎて俺には文章の意味がわからなかったよorz
794デフォルトの名無しさん
垢版 |
2021/09/08(水) 17:51:41.60ID:45GUJlB8
ruby 使ってると馬鹿になりゅよ
2021/09/08(水) 17:53:59.73ID:s8bChe9P
>0.1未満なら "5.2%"
>0.1以上〜1.0未満なら "5.1%"

ここが逆になってるんだろ?
小数点以下が0.1以上の場合は全て0.2に統一って事じゃ無いの?
そうでないとしたら俺も理解不能だわ。
2021/09/08(水) 18:59:48.32ID:XUjypBYd
condaはバックアップ取ったりcloneできるのが便利。
2021/09/08(水) 19:32:05.85ID:aHZlxj+w
master.py上に実行したいスクリプトtestxx.py(xxは数字)がたくさんあります。
os.systemで引数を渡してtestxx.pyを実行しているのですが、testxx.pyからの戻り値を受け取る場合はどうしたら良いのでしょうか。標準出力の値なら取れるみたいな記述を見ましたが、実行中にprintを多様しているため、任意の戻り値のみを取得したいです。
798791
垢版 |
2021/09/08(水) 20:04:49.50ID:tJQkvu8J
分かりにくくてすみませぬ

{x:5.2%} {x:5.1%} というformatで
xが0.1=10%、1.0=100% なので、

10%未満なら9.99% まで少数点2桁、
10%以上100%未満なら99.9% まで 少数点1桁
で表示してほしい、という意味です。
全体桁固定で少数点だけ変動するようなformatの表記、あるいはやり方は無いかなという質問です
2021/09/08(水) 20:42:07.84ID:s/O0A+9w
こんなんで
x = 12.125
f'{x:.2f}'[:4]
2021/09/09(木) 01:16:22.36ID:YDItKt7x
numpyのメソッドzerosやonesなどは引数をタプルで指定することになっていますが、リストで指定しても実行できています。
特に問題ないように見えるのですが、タプルで指定した方がいい理由などあるのでしょうか?
2021/09/09(木) 02:10:35.73ID:1BTdIMLT
タプルは普遍だけれども、リストはそうでないから成長することを想定して必要以上の領域が確保されちゃうぶん効率が悪いとかあるんじゃね?知らんけど
2021/09/09(木) 02:34:23.48ID:OKDvztcs
sequenceの操作しかしてないから実際はlistでもOKないんじゃない?
onesの説明には
> Parameters: shape: int or sequence of ints
とあるしzeros側のメンテ漏れとか
2021/09/09(木) 08:14:59.88ID:Ubp0J8aB
>>799
%だと末尾に%が付くので…
2021/09/09(木) 08:44:11.31ID:1BTdIMLT
>>803
つければいいだろ…
f'{x:.2f}'[:4] + '%'
805デフォルトの名無しさん
垢版 |
2021/09/09(木) 14:16:43.72ID:3sOE3L2f
>>797
subprocess
popen
2021/09/09(木) 14:54:22.16ID:MjE68I3R
>>798
こういう事?
x = 0.5
print(f'{x*100:.2f}'[:5]+'%')
2021/09/09(木) 16:50:44.90ID:Ur+lRPYu
これで良くない?
str_formatted = f"{val:.2%}"[:4] +"%"
2021/09/09(木) 16:58:17.08ID:MjE68I3R
>>807
それだとうまくいかんよ。

>>>val=0.5
50.0%
>>>val=1.5
150.%
2021/09/09(木) 17:03:24.41ID:s2e04Gy+
>>808
> 10%未満なら9.99% まで少数点2桁、
> 10%以上100%未満なら99.9% まで 少数点1桁
って言ってるのにわざわざ150%とか出してきてドヤるのは頭になんか障害でもあるのか?
2021/09/09(木) 17:16:30.91ID:MjE68I3R
>>809
>>798
別にドヤってないし、>>807に値を渡した結果を書いてうまくいかない旨を示しているだけだが?
俺も同じようなの試してうまくいかなかったのでうまくいかないと書いただけ。
急に絡んでキレるのは頭に障害でもあるのか?
2021/09/09(木) 17:32:52.06ID:3PF/LFW4
その>>798から引用してるんだけど…
マジでお前が読めよw
2021/09/09(木) 17:35:57.82ID:MjE68I3R
すまん。なんか勘違いしてたわw
>>807で大丈夫だな。
俺のだと、こうだわ。print(f'{x*100:.2f}'[:4]+'%')
2021/09/09(木) 18:13:06.28ID:Ur+lRPYu
100%の値を渡した時に表示がおかしくなる書き方した俺が悪かった、すまん
境界値テストをちゃんとやってなかった証拠だな、マジでごめん
(実務でも似たような事やらかすからマジで反省しとる……)
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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