くだすれPython(超初心者用) その50【まず1嫁】
レス数が950を超えています。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(超初心者用) その49【まず1嫁】
https://mevius.5ch.net/test/read.cgi/tech/1595057607/
次スレは >>985 あたりが挑戦してくだしあ。(980過ぎて自動落ちは、無くなって久しい)
### END OF TEMPLATE ### >>844
本でDjangoを扱っているので、
自分でも出来るのか気になりました Djangoの書籍なら図書館に何冊か置いてるだろうから、とりあえず借りてくれば FastAPI の人気が高まってるね。 flask に似てるがドキュメントを作ってくれる。
パフォーマンスが高い。
performanceは「japronto >>> FastAPI > responder >>> Flask ~ Django」だと言えそう
FastAPIとresponderはsingle workerだと秒間100~1000程度のrequestであればpython界で圧倒的なperformanceを誇るjaprontoとほとんど同水準
2020年08月21日に更新
[FastAPI] Python製のASGI Web フレームワーク FastAPIに入門する
https://qiita.com/bee2/items/75d9c0d7ba20e7a4a0e9 たいていのベンチャー企業では、Rails, AWS, CircleCI を使う。
その唯一の例外が、GCP で、Tensorflow
Azure を使う理由はない >>851
チュートリアルだってWebに日本語で転がってるのだから、やってみたらいいのよ。
もしくは読むだけでも使えそうかどうかはわかるんじゃない? >>854
業界2位のクラウド環境に向かって何様だよ
現実を認識しろ生ゴミガイジ アメリカ政府はAzure採用しちゃったからね
これからのAWSはオワコンになるかもしれない
(ちなみに日本政府が採用したのはAWS) ifでA and Bを使った時、もしAがfalseならBを処理する必要はないので
Aのみ処理でifを抜けるだろう、というのを確かめるために
def a(f):
_print(f'a = {f}')
_return f
def b(f):
_print(f'b = {f}')
_return f
if a(False) and b(True):
_print(True)
else:
_print(False)
としました
たしかにa()のみの実行となりましたが
それはどんな環境でも常にそうなるものなのでしょうか?
ifの入れ子にする必要なければandのまま行きたいです 優先順位を考えることと
if 中に複数の関数を直接書くときは関数の副作用に注意
(特に内部状態変更されるクラスとか使ってるとき)
副作用嫌うなら事前に実行した値を if に入れるんだろうけど
質問の趣旨からすればそれはしたくないようだし >>858
>それはどんな環境でも常にそうなるものなのでしょうか?
はい
"式 x and y は、まず x を評価します; x が偽なら x の値を返します; それ以外の場合には、 y の値を評価し、その結果を返します。"
https://docs.python.org/ja/3/reference/expressions.html#boolean-operations >>858
>それはどんな環境でも常にそうなるものなのでしょうか?
―> Yes
and/or は(他の +/- といった算術演算子とは異なり)短絡評価されると
Pythonの公式ドキュメントで明記されている
短絡評価という概念に関しては「Python 短絡評価」でググッてください >>859
つまり>>858の例だと_a=a(False),_b=b(True)とおいてif _a and _b:
みたいにするってことですかね(あえて_a判定後に_bを置かずに)。
b()がファイルやウェブ検索の結果だった場合に
そもそもb()したくない的な問題があるので悩みどころではあります。
>>860,861
なるほど
コードのぱっとみで短絡評価かどうか個人的にわかりにくかったのですが
それは文法というかそういう概念だからと考えるべきなのでしょうね
ありがとうございました >>862
X というオブジェクトがあるとして
if X.a() and X.b():
みたいな操作をするとき
a() も b() も独立なら良いけど
a() や b() が X の内部状態を変更してて
特に b() の判定前に a() の結果が b() の結果に影響を及ぼすとかそんな時の話
本人にしか判らんだろうから気を付けてってだけの話 for分、またはそれに類似するもので
listの先頭数個分を一気に取り出すことってできませんか?
for i1, i2, i3 in range(10)
みたいな感じで使いたいです for i, j, k in np.array(range(9)).reshape((3, 3)):
print(i, j, k)
0 1 2
3 4 5
6 7 8 >>852
ありがとうございます
まずPythonの文法を勉強したいと思います
>>855
ありがとうございます
おいおい見てみます 参考書1冊勉強したけどコード書ける気がしません…
これからどういうふうに勉強していけばいいかアドバイスくれると嬉しいです >>867
ハローワールドくらいは済ませたの?
そもそもPCにPythonインスコは済んでるの? 要素数が異なるとき
np.resize() は要素を先頭からループ
for i, j, k in np.resize(np.array(range(10)), (4, 3)):
print(i, j, k)
0 1 2
3 4 5
6 7 8
9 0 1 要素数が異なるとき
ndarray.resize() は 0 を代入
a = np.array(range(10))
a.resize((4, 3), refcheck=False)
for i, j, k in a:
print(i, j, k)
0 1 2
3 4 5
6 7 8
9 0 0 一番人気気の言語にしておけば問題ないよ。
今やPython かc の二択だろ。 >>869
その辺は済ませました
参考書に載ってるコード打ち込んだりwebに転がってるソースコードコピペしてどんな感じに動いてるのか試したりしました じゃああとは作りたいものができるまで特段何も上達しないのでは>>873 オンラインでコード書きながら学習できるサービスあるからそういうのやってみるといいと思います
paizaとかそういうの 定期的にchunkingの質問出るけどどのやり方も微妙だよね
標準で用意してくれてもいいのに >>864
i1, i2, i3 = arr[:3] import tkinter as tk
root = tk.Tk()
tk.iconbitmap(default='icon.ico')
root.mainloop()
みたいにタスクバーの左上にアイコン入れようとすると
起動時なんかワンテンポ遅れるような挙動あるけどこれ仕様??
対策知ってたら誰かおすえて >>878
アイコンをMIME BASE64化したデータをPythonのコードに埋めておき、読ませる 練習問題でmatplotlibというのが出てきたのですがこれはjupyterでしか使えないのでしょうか IDLEだとどう宣言して使えばよいのでしょうか >>880
その問題の解説やヒントにのってないのか?
宿題なら、宿題丸投げスレへいどうしる
むしろjupyterで使うのはちょっと変化球なんじゃ… >>878
そもそもアイコンのサイズはちゃんとタスクバーの左上とやらのサイズになってんの?
リサイズ必要なクソ品質のアイコン食わせてたら
そら重いぞ >>881
載ってないです
ソフトを入れてやってくださいと書いてます
宿題ではなくフリーのサイトを見ながら勉強しております >>879
エンコードの方がいいのか
ありがとう
一応アイコンサイズは削ってやってる
ところでBase64エンコードだとファイル容量33%くらい増えるけど
容量より単純にローカルから読み込むよりも挙動の改善が見込めるて
考えでおk? >>873
1冊勉強したというが、そんなのは勉強したとは言わんよ。ただ書かれてるのを打ち込んだり、コピペしただけで、自分の頭では何も考えていないだろう。
本で出てきたサンプルコードを自分なりに変更してどう挙動が変わるのか、どんなエラーが起こるか、どうやって解決するか、こんなことが出来るのではないか、なぜ思った通りにならないか、色々と試行錯誤したり調べたりして、習った個々の要素を理解して自分で使えるようになるまでやってみなよ。 初心者はまず住所録を作ろう
全ての基本がつまってる Pythonの配列(list)って違う型の要素を入れてもいいんですね
ちょっと怖い… 業務前提のプログラミング学習で最初に乗り越えなければならない事はデータベースへのアクセスだ >>884
Base64 は、ファイル内に埋め込んでいるから、ファイル読み込みしなくてもよい
ただし、サイズは大きくなるから、サイズの小さいアイコンなどに限定した方がよい >>864
p (1..8).each_slice(3).to_a https://www.sejuku.net/blog/63816
ここに書かれているos.walkの使い方なんですが、文字列とリストは結合できません、というエラーが出ます。流用するときにはprint文は使わないので実害はないのですが、どうすれば動作させられるのでしょうか?
もう一つ
txtファイルがフォルダ内に有ればそれを開いて処理、無ければ次のサブフォルダに移るという動作をさせたいのですが、うまくいきません。
for curDir, subDirs, files in os.walk(pDir):
if os.path.exists(glob(curDir + '\\*.txt')):
処理
よろしくお願いします Ruby には、walk がない
glob しかない >>895
1つ目の質問はエラーになるコードをどこかに上げるか
エラーになってる行番号みて文字列とリストを結合してるところを修正して
2つ目のはos.walkでもできるけどpath.globやglob.globで.txtまで指定したほうが簡単
from pathlib import Path
for x in Path('.').glob('**/*.txt'):
__with open(x) as f:
____print(f.read()) >>880
よく知らないけど、IDLE は、CUI・コンソール端末じゃないの?
画面がない。テキスト表示するだけでしょ?
普通は、VSCode を使う
よく知らないけど、
matplotlib, jupyter などは、HTML, CSS, JavaScript じゃないの?
WebGL で描画してるのでは? >>898
よく知らないなら推測で初心者の質問に答えるな。
初心者が混乱するだろうが。
WebGLなんかで描画してない。 >>899
そいつは>>1でスルー推奨されているこの板の有名なキチガイだよ。
まったく言葉が通じない。 >>893
そのフリーサイトとやらの指示にまずしたがえよ >>897
1 コードは挙がっているものをそのままコピペして親フォルダのパスだけ変更しました。エラーはサブディレクトリを列挙するところで出ます(リストなので)。サイトの実行結果を見ると、文字列(種別)のあとにリストの内容が列挙されていますが、自分の環境では文字列とリストは結合できないと蹴られます。現在のディレクトリはリストではないので問題ありません
2 ワガママを言って申し訳ありませんがos.walkを使って一例を書いてもらえないでしょうか >>902がなにひとつ897を理解できてなくてわろるwwww >>895
sejuku は糞サイト
ブロックして良いレベル
google で検索するなら -sejuku >>902
for curDir, subDirs, files in os.walk(pDir):
for filename in files:
if filename.endswith('.txt'):
print(open(os.path.join(curDir, filename), 'r').read()) マコなりの所は最悪、sejuku の解説は良いと、
誰かが動画で言ってた ublacklistとback2stackoverflowはプログラマには必需品だな >>910
思い込みでなく、実際に試してどういう実装になってるか把握してから発言しろ。
試さずに思い込みで嘘を言うのはエンジニア失格だ。 PythonをPyInstallerでビルドしてexeファイルにした後、そのexeを起動してる時に
外部のプログラムからビルドしたexeファイル内のPythonの関数を操作する...みたいなことをやりたいんですが
そういうのってどうやったら出来ますか?APIをユーザーに提供するようなことがしたいのですが... >>912
関数呼び出しを基礎としたプロセス間通信(IPC, Inter-Process Communication)の
手法は大きく2種類、RPC と RMIがある
RPC(Remote Procedure call:遠隔手続き呼び出し)は、
古典的な手法で汎用性があり言語非依存だが実装は面倒になる
「RPC Python」でググればいくつか解説記事が見つかるので
(xmlrpc/json-rpc/Mproc/gRPCなど)、そちらを参照
RMI(Remote Method Invocation)は「分散オブジェクト」と呼ばれる
オブジェクト指向言語の分散化から発展した手法で、
言語依存(原則、記述言語間での通信に限定)だが実装は簡単になる
Java RMI(Java)、dRuby(Ruby)などが有名で日本語情報も豊富にある
Pythonで該当するのは PYRO(Python Remote Object) になるが、
英語情報しかないから、気に入れば挑戦してみればいい
ぶっちゃけ今時の手軽の実装手法は、サービス提供側アプリでHTTPサーバ機能を実装し、
利用側アプリからはHTTPでアクセスするというWebサービス化だろう
この場合、提要するAPIは(Python関数ではなく)URLになるけれどね >>907
ありがとうございます!さっそくやってみます >>907
フォルダにサブフォルダしかなくてファイルが存在しない場合もあるんですがその場合はどうすれば? py2exeでexe化したんだけども
例えばwith open('list.txt')みたいな感じで使ってるファイルはどうやって認識させるの?
dist内にファイルはあるんだけど読み込まれてないんだよね >>907
何度もすみません
フあィルが存在しなくてもエラーは出ませんでした
ありがとうございました >>914
とても丁寧にありがとうございます!
勉強になりました >>917
テスト(開発)環境では list.txt がカレントディレクトリ ./list.txt にあって
本番環境では list.txt が dist/list.txt にあるんだろ? 諸先輩方質問させて下さい
csvをdfに読み込んでから 当該csvに
追記し csvに反映させる方法を探しています
具体的には
山田,25
鈴木,35
のdfに
佐藤,45 を追記して
山田,25
鈴木,35
佐藤,45
のdfにしたいです ちなみに列方向
山田,25,A
鈴木,35,AB
佐藤,45,O
には出来るのですが行の追加が上手くいきません... 環境はpandasです
よろしくお願します >>921
pandasはPythonのバージョンでもOSの種類・バージョンでもねぇよ >>920
間違った情報を堂々と掲載すんのやめて欲しいわ…
とあるモジュールを除外してOKって書いてるブログ信用したせいだった >>923
おれの経験からエスパーすると
ブログ掲載当時はなくても動いたが
py2exeのバージョンなんぼかからは、除外しちゃうとexeが動かなくなるモジュールがひとつふたつある csvにエクセルかなんかで書き足してもう一回dfとして読み直せばいいんじゃないかな
マジレスするとdf.loc("名前") = 数値
で渡瀬 nun = 1〜100の自然数
numが8以下の時はそのままの数だけforを回す
numが8以上の時は8回ごとに
for i in range(8)
を分割して合計numまでforを回したいです
どうすれば出来ますね? >>926
residual = num
while residual > 0:
count = min(residual, 8)
for i in range(count):
pass
residual -= count
さっきちょうど同じコードをCで書いた。
定石的なコードだね。 for i in (i%8 for i in range(num))
の誤り お二人ともありがとうございます
ただ、このコードだと恐らくi>7のときにiが0に戻ってしまうと思うのですが
i=8以降は回した回数も考慮する(8,9,10と継続していく)ことって出来ますかね?
別変数に回した回数持たせれば良い気もしますがそれだとちょっと不格好だなと 日本語で仕様を説明できないやつの頭の構造は理解できんな pythonやperl使いは見た目や短く書く事に固執してかえって効率悪いことする人結構いるよね Pythonは他人が作り上げた見た目の良さに縛られる
ユニクロで人形を指さして「あれと同じものください」と言ってるようなものだ
初心者でも間違う事はないし、基礎を叩きこむにはちょうどよい
しかし、さらに何かを目指すのであれば、いつまでもPythonをやるわけにはいかないのだ 肝心な部分をふわふわ表現してるのは何も無いってことだよ >>933
効率が多少悪くなってもコードの意図が明確になるならそれでいい
上の例で言えば頭の中では8以下かどうかで場合分けして考えてるんだからまずそれをコードで表現すべき
意図が不明確になる最適化を施す必要があるならやればいいけどそれは自分の意図を表現できてから >>921
df = pd.DataFrame([['山田', 25],['鈴木', 35]], columns=['a', 'b'])
print(df)
df = pd.concat([df, pd.DataFrame([['佐藤', 45]], columns=df.columns)], axis=0)
print(df) >>926
それって結局[1..100]を[[1..8],[9..16]..[..100]]ってリストのリストにしたいって事?
だったらそう書いた方が、forだけでコツコツする以外にも簡単な方法とか出るかも。
例えばスライス使うとか
a = list(range(1,101))
print(a[:8])
>[1,2,3,4,5,6,7,8] 8以下と8以上でダブリが出るから元の仕様が間違ってると思うけど
[1]
[1,2]
[1,2,3]
[1,2,3,4]
[1,2,3,4,5]
[1,2,3,4,5,6]
[1,2,3,4,5,6,7]
[1,2,3,4,5,6,7,8]
[0,1,2,3,4,5,6,7]
[0,1,2,3,4,5,6,7]
...
[0,1,2,3,4,5,6,7]
って出力が欲しいのか? 最近、pythonを学び始めたのですが、どうもうまく行かないので
ご教授ください。
pandasでやや大きいdataframeがあり、そこの任意の位置にデータを書き込みたい
のですが、ilocのスライス指定で変数の計算がうまくいきません。
例)
g += 1
retu1 = i*6
retu2 = i+5
df.iloc[g,retu1:retu2] = [ 1,2,3,4,5 ]
~~~~~~~~~~~~~~~~~~~~~~
この行でValueErrorが出て止まる。
イメージとしてはforループの中で5個を横に次々に並べて行く感じです。
※1〜5は実際は変数です。
下記のように実数だとうまくいきます。
output_df.iloc[g,0:5] = [ 1,2,3,4,5 ]
なにか対処法あるでしょうか。
どうぞアドバイスをよろしくおねがいします。 >>941
別にそこが変数だからエラーが起きてるわけじゃないだろ。
retu1とretu2の値をチェックしてみたら? ユニクロ人形構文
〈言語X〉は他人が作り上げた見た目の良さに縛られる
〈店舗〉で〈見本〉を指さして「あれと同じものください」と言ってるようなものだ
〈行為者〉でも間違う事はないし、〈行為〉を叩きこむにはちょうどよい
しかし、さらに〈曖昧な目標〉を目指すのであれば、いつまでも〈言語X〉をやるわけにはいかないのだ >>942
>>943
ありがとうございます。
そうでした。retu1よりもretu2は5 大きくなければならないので
i+5ではだめですね。
なにか思い込んでいたようです。
無事前に進めました。ありがとうございました。 デバッグの仕方を勉強した方が良いよ。 その方が早い。 VSC使ってるんですが、デバッグってどうやるんですか? >>947
ブレークポイント設定してF5
あとは流れで レス数が950を超えています。1000を超えると書き込みができなくなります。