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

■ このスレッドは過去ログ倉庫に格納されています
2022/05/22(日) 22:25:08.74ID:/hGmbW/Z
当スレに★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(超初心者用) その56
http://mevius.5ch.net/test/read.cgi/tech/1640536690/

次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
590デフォルトの名無しさん
垢版 |
2022/07/28(木) 20:16:12.08ID:Hv8PyQaz
>>585
馬鹿には無理
591デフォルトの名無しさん
垢版 |
2022/07/28(木) 22:51:57.42ID:9hZjKw0t
>>585
リスト返すよりよりジェネレータ―の方がコスト低いからでは解決しない質問?
2022/07/28(木) 22:58:58.42ID:cRsx7yDk
リスト作成のコストと比べても意味ないやろ
yield使わずにジェネレーターを作ればありがたみが分かる
2022/07/29(金) 00:22:32.77ID:fEBZH37g
リストをfilter()使ってlambda式ではなく外部関数を呼び出して抽出する場合、外部関数に追加の引数を渡すことってできますか?
リストの要素に加えてさらに判定用の引数を与えて外部関数で処理させたいです
2022/07/29(金) 01:28:35.66ID:8gcFFgPp
>>593
部分適用した関数を用意すればできるよ
partialとか関数を返す関数を書くとかで
リストを[(要素, 追加引数)]の形にzipするのでもてきる

ただlambda使って外部関数に引数渡すのが一番よく使われてる印象
2022/07/29(金) 02:05:51.08ID:sW6reep3
>>593
functools. partial
2022/07/29(金) 02:28:02.24ID:fEBZH37g
>>594,595
functools.partialもlmbdaもできました。ありがとうございます。
確かにlambdaのほうがすぐに書けるのと、パッと見て分かりやすいかもですね
2022/07/29(金) 16:36:15.82ID:0LOpWdsN
ある変数に対してifまたはelseで値を代入するとき「未定義の可能性があります」という警告が出てしまいます。
この警告は無視して構わないのでしょうか?
実際はifかelseが必ず実行されるため、未定義になることは無いと思います。
2022/07/29(金) 18:15:50.48ID:APedJzV4
両方でちゃんと定義があれば問題ないんじゃないの
599デフォルトの名無しさん
垢版 |
2022/07/29(金) 18:30:32.97ID:XaB7Y5c2
>>597
その部分のコード書いてみ
たぶん未定義になるパターンがある
2022/07/29(金) 19:07:07.88ID:GzwVbssN
ifとelse両方で定義してあれば未定義にはならんと思うけどな
定義してないから警告出るのかね
2022/07/29(金) 19:10:09.40ID:WG/TpH2M
>>597
無視しない方がいい
2022/07/29(金) 19:58:02.11ID:47SIIXKm
て言うか未定義の「可能性」なんて普通の処理系ではでないだろ
なんかツール使ってるならそのツールの名前書きなよ
2022/07/29(金) 20:45:46.18ID:IOBifLpO
どこかに未定義ルート有るんだ
そこらへんを探すのが楽しい
2022/07/29(金) 21:51:50.81ID:a1Tgek7B
Ruby では、条件分岐で初期化されるはずの変数が、
初期化されなかった場合に、nil・未定義になる

if false
n = 1
end

p n #=> nil
2022/07/29(金) 23:03:00.11ID:jDexz6tX
翔泳社のスラスラわかるPythonを読み終えて、
次にソフトバンクのPython完全入門を買おうか迷ってるんですが、
どなたか読んだ方いましたら感想を教えて下さい
よろしくお願いします
2022/07/30(土) 02:27:49.30ID:z4LSWTQO
入門書は1冊で充分なのでは?
2022/07/30(土) 02:27:58.30ID:z4LSWTQO
入門書は1冊で充分なのでは?
2022/07/30(土) 02:34:45.44ID:f1hyBgWY
レスは1回で充分なのでは?
609デフォルトの名無しさん
垢版 |
2022/07/30(土) 09:23:55.07ID:azT7AVAA
webアプリ作って内部サーバーから使ってみよう、みたいな本読んでるんだが

コマンドプロンプトに
python -m http.server --cgi 8080
と書いてwebサーバー立ち上げて
ブラウザで
htttp://localhost:8080
開くまではできたんだ

ここから
htttp://localhost:8080/開きたいwebアプリ.py
へ移動しても、中身がテキストとして表示されるだけでwebアプリとしては機能しない
これはなにか手順間違えてるかな?

pythonコード自体は以下
https://techiedelight.com/compiler/?MN5F
610デフォルトの名無しさん
垢版 |
2022/07/30(土) 09:27:36.20ID:paa5jUiA
●未定義ルートがある
●typoを見落とし
611デフォルトの名無しさん
垢版 |
2022/07/30(土) 09:28:23.25ID:paa5jUiA
>>606-607
レスは一回で充分
612デフォルトの名無しさん
垢版 |
2022/07/30(土) 09:29:27.96ID:paa5jUiA
>>609
flask使え
2022/07/30(土) 13:25:48.25ID:OlgNXvPr
呼ばれたクラスのメソッド実行やインスタンスの参照はできますでしょうか?
RubyのBinding_of_caller gemのようなことをやりたいです。
2022/07/30(土) 15:23:09.66ID:8gKCOMRQ
>>609
例えば、Ruby では、

コンソールで、ウェブサーバー・WEBrick を起動する
ruby -run -e httpd . -p 8080

ブラウザで、
http://localhost:8080/a.html
とすると、HTML が表示される

例えば、これが、
http://localhost:8080/a.csv

a.csv, a.txt など、ブラウザが解釈できない拡張子の場合は、ダウンロードされる
2022/07/30(土) 15:41:57.89ID:cxvuT0Ap
>>609
cgi_directoriesで定義されてるディレクトリの中にあるソースコードじゃないとじっこうできないかも

>>614
csvじゃなくてcgiの話な、チンカス
2022/07/30(土) 15:55:32.29ID:lN6AqJ/F
>>609
/cgi-binに配置して
localhost:8080/cgi-bin/xxx.pyでアクセス
2022/07/30(土) 15:56:01.53ID:lN6AqJ/F
あ、被ったね
2022/07/30(土) 16:15:20.28ID:t64/Q8Lh
14分差でかぶるとかすごいな
619605
垢版 |
2022/07/30(土) 17:33:25.97ID:opcLftHA
レスありがとうございます

実は最初にソフトバンクの本を買おうと思ったのですが、アマゾンレビューを見たら
少しわかりにくい箇所もある、という感想があったのでワンクッション入れました

今となっては独習Pythonなどの中級書に進んだ方がいいですか?
2022/07/30(土) 17:49:27.02ID:6SJJiflx
手段が目的になってるパターン
621デフォルトの名無しさん
垢版 |
2022/07/30(土) 19:25:46.15ID:EI1U6qjF
民明書房の「結局あんたはpythonで何がしたいの?」とか読むといい
622605
垢版 |
2022/07/31(日) 08:22:18.53ID:V2xTXw/0
辛口ですね
2022/07/31(日) 08:43:12.47ID:bF6WKikK
bool([])がFalseなのに
all([])がTrueになる理屈を教えてください
2022/07/31(日) 08:56:05.73ID:IhfjCb0y
イテラブルの要素の探索中にFalseでリターンされなければTrueをリターンされるようにallが実装されてるから
https://github.com/satwikkansal/wtfpython#-all-true-ation-

設計思想的な話しなら分からん
2022/07/31(日) 09:01:11.39ID:qkw0CgkT
数学的にそれが自然
Wikipediaの論理包含とかVacuous truthを読め
626デフォルトの名無しさん
垢版 |
2022/07/31(日) 09:35:16.42ID:qvc5fIgv
test
627デフォルトの名無しさん
垢版 |
2022/07/31(日) 09:36:51.24ID:qvc5fIgv
r = True
for e in S:
r = r and e
return r

S が空の場合,for文の中は1度も実行されない.
返されるのは,rの初期値であるTrue
2022/07/31(日) 09:37:12.57ID:bF6WKikK
>>624
理屈はわかりました
その実装にした人を小一時間問い詰めたい気分でいっぱいです
all([])の結果にTrueを求めるユーザーが世の中に一人でもいるのでしょうか…

>>625
数学はよくわからんのですごめんなさい
629デフォルトの名無しさん
垢版 |
2022/07/31(日) 09:39:03.02ID:qvc5fIgv
似たような例として,Sの要素の和を計算することを考える.

r = 0
for e in S:
 r = r + e
return r

Sが空の場合,rの初期値である0が返される.
630デフォルトの名無しさん
垢版 |
2022/07/31(日) 09:45:32.68ID:qvc5fIgv
似たような例として,Sの要素の積を計算することを考える.

r = 1
for e in S:
 r = r * e
return r

S が空の場合,返されるのはrの初期値である1
631デフォルトの名無しさん
垢版 |
2022/07/31(日) 09:48:34.65ID:qvc5fIgv
sum, prodという関数がPythonにあるのならば,

sum([]) == 0

とするのが自然だし,

prod([]) == 1

とするのが自然.

prodのほうは不自然に感じる人がいるかもしれないが,sumが自然なのと同じ理由でprodも自然.
632デフォルトの名無しさん
垢版 |
2022/07/31(日) 10:26:40.61ID:qvc5fIgv
0! := 1と定義するのも同じ理由.
633デフォルトの名無しさん
垢版 |
2022/07/31(日) 12:12:56.03ID:eQtf7hMi
anyとかallは評価できるものがある場合にのみ使うべきだと思うんだ。空打ちしたら「何だこりゃ」ってなる
つまり
all([]) ではなくall([''])と使いたい。これなら正しく(評価がなされて)falseが返る
つかall([]) ってどういう状況よ
2022/07/31(日) 12:23:51.14ID:1z9jykhy
リテラルを渡すわけじゃないだろ
2022/07/31(日) 12:55:33.13ID:VBdofYjo
論理包含、Vacuous truthを読めと言ってる人は理由を知っているだけで理解できていない
636デフォルトの名無しさん
垢版 |
2022/07/31(日) 13:14:04.77ID:aNbLKyix
>>635
言葉足らずは役立たず
637デフォルトの名無しさん
垢版 |
2022/07/31(日) 13:25:03.81ID:qvc5fIgv
any([]) == False
all([]) == True

こうだと何が問題になるのかが分からない.
638デフォルトの名無しさん
垢版 |
2022/07/31(日) 13:32:01.26ID:qvc5fIgv
all(S)は∀x(x∈S ⇒ x==True)が真であるときに,Trueになり,偽であるとき,Falseになる.

Sが空なら∀x(x∈S)は偽だから,∀x(x∈S ⇒ x==True)は真である.

any(S)は∃x(x∈S and x==True)が真であるときに,Trueになり,偽であるとき,Falseになる.

Sが空なら∃x(x∈S)は偽だから,∃x(x∈S and x==True)は偽である.
2022/07/31(日) 14:16:45.61ID:WKv/EkLm
お勉強スレで403がでる
2022/07/31(日) 14:23:06.73ID:VBdofYjo
allとanyのあるある言いたい TrueとFalseのあるある早く言いたい
2022/07/31(日) 15:56:07.05ID:KzJjN0dA
聞いてねえ黙っとけマザコン男
2022/07/31(日) 16:39:23.51ID:6uU1oN4W
突然マザコンという単語が出てきた
普通の人はすぐに思い浮かぶ単語ではない
つまり、自分がそうだとよく言われたから頭に浮かびやすいと自己紹介しているわけだ
2022/07/31(日) 17:10:58.62ID:a1qLKfui
vscでインタープリターが設定出来ずエラーになる
なんでぇ…検索しても出てこない…
2022/07/31(日) 17:19:39.16ID:WKv/EkLm
vscスレあるからそっちで聞いたら?
2022/07/31(日) 17:40:03.84ID:VBdofYjo
>>623の疑問にバッチリ明快にお答えしましょう
all([1,2,3]) -> True
all([1,2,3]+[]) -> True
all([1,2,3]) and all([]) -> True
よって、all([]) -> True

同様にanyの場合は
any([1,2,3]) -> True
any([]+[1,2,3]) -> True
any([]) or any([1,2,3]) -> True
よって、any([]) -> False

Vacuous truthとか言われても分かんないでしょ、wiki見ても分かんない
>>638の取って付けた数式見ても分かんない、でもコードで書くとあら不思議一目瞭然
2022/07/31(日) 18:21:17.32ID:vZudoVRF
全く疑問に答えてなくて草生えるwwwww
2022/07/31(日) 18:30:32.80ID:IhfjCb0y
>>645
空リストに分解するのはいいね
ただanyはFalse側で示さないといけないな
2022/07/31(日) 18:42:16.99ID:1IXOln4s
1. [True, True]
2. [True, False]
3. [False, False]
4. []

この4つから
1種類だけ処理したい場合と2種類だけ処理したい場合を
all, any, notで各listにつき1回走査するだけで書けるかどうか
もしall([])がFalseだとしたらどうか
2022/07/31(日) 19:03:02.60ID:VBdofYjo
>>647
配列例を一緒にしようとしたんだけど、こっちの方が分かりやすいか

any([0,0,0]) -> False
any([0,0,0]+[]) -> False
any([0,0,0]) or any([]) -> False
よって、any([]) -> False
2022/07/31(日) 19:10:05.63ID:SPHl3eVE
こう決めてるからといって準備してあるものから答えを持ってくるのではない
あくまでデジタル計算の答えがそうなっているだけ
それをわかってないみたいね
2022/07/31(日) 20:42:04.88ID:nQONknSe
ID:VBdofYjo
ルビーガイジと別のベクトルで頭おかしいね
2022/07/31(日) 22:11:23.00ID:NZWDJWM/
単なる慣習でしかなくて合理的な理由はない
プログラミングではall([])がFalseだったほうが楽になるケースの方が圧倒的に多い

残念ながらempty listだけ別途チェックするのが無難
2022/07/31(日) 22:46:03.58ID:MJo3DzqX
all()は論理積のロジックなので初期値True
any()は論理和のロジックなので初期値False
そうしないと成り立たない
654デフォルトの名無しさん
垢版 |
2022/07/31(日) 23:10:20.11ID:Q3Sy7AQw
ドキュメントのallの説明で、(or if the iterable is empty)が加えられたのは2009年か2010年ぐらいから
2022/07/31(日) 23:18:11.45ID:CM+nxrXh
>>653
それ使う側の視点じゃなくて
内部実装上の都合でしょ?
2022/07/31(日) 23:50:52.02ID:MJo3DzqX
>>655
これ以上に自然な定義はあるのか?
引数が空の時に余計な評価を挟む方がよっぽど不自然だと思うが
2022/08/01(月) 01:15:16.60ID:NO37bZGb
>>656
実装の都合上は自然かもね
使う側の視点からは全くもって自然じゃないよ
2022/08/01(月) 01:55:03.33ID:wljefKG6
>>657
all()とany()の動作を文章にして書いてみたら分かる
関数の仕様自体が気に入らないなら自分で書くしかない
2022/08/01(月) 02:13:06.07ID:4h+jHRsn
>>652
> プログラミングではall([])がFalseだったほうが楽になるケースの方が圧倒的に多い
具体的にコードで示して欲しい
2022/08/01(月) 04:29:53.53ID:rSGUMJSi
まあ5×0=0で5^0=1なのも実装した人にとって自然なだけだし言いたいことはわかる
2022/08/01(月) 09:45:47.74ID:hJhRRxUQ
やっとバカにも理解できたようですが、>>660を見る限り理解できていませんw 残念
2022/08/01(月) 16:21:23.81ID:Vk1tQ6YT
Eric Matthesの「python crash course」(和名:最短コースでゼロからしっかり学ぶpython入門)を完了して次にデータ解析をやりたいんです
そこで
オレイリーの「pythonによるデータ分析入門」を読んだのですがまだ私にはレベルが高いようです
橋渡しになるレベルの本はありませんでしょうか?
2022/08/01(月) 17:14:07.64ID:WOhHaybL
>>662
『Pythonによるあたらしいデータ分析の教科書』辺りで
Jupyter Notebookとか分析の基本覚えてから
『Python実践データ分析100本ノック』でデータの前処理とかを本格的に勉強してから
オライリー本読んだ方がええかもね
2022/08/01(月) 18:05:15.09ID:BgE8bCyg
型ヒント(num: int = 1など)って普通に使われてますか?
私も常に使った方がいいですか?
2022/08/01(月) 20:36:49.60ID:Vk1tQ6YT
>>663
ありがとうございます
ポチりました
2022/08/01(月) 23:46:48.65ID:It4OEKpF
使われてると思うし使えた方がいい
PyCharmとかVSCodeで書いてると型を判断してくれるので書きやすくなるしミスも判明しやすくなる
2022/08/02(火) 00:20:43.20ID:R2oSGNsV
>>653
配列の全ての要素が5以上かをチェックするcheck関数を作りました
def check(lst):
return all(i >= 5 for i in lst)
空リストが入力された場合Falseを返したいのですが
論理積のロジックなのでFalseを返すと成り立たなくなります
空リストのチェックはどうすれば良いでしょうか
668デフォルトの名無しさん
垢版 |
2022/08/02(火) 03:57:40.09ID:AJvhpMFc
def check(l):
__if l:
____return all(map(lambda i: i>5, l))
__else:
____return False

すべて5以上か みたいな関数名にして使う
checkはダメ。論外
2022/08/02(火) 04:03:59.45ID:KlfR+zxP
>>667
return bool(lst) and all(i >= 5 for i in lst)
2022/08/02(火) 07:10:05.89ID:R2oSGNsV
>>668
>>669
これはいけません 論理積のロジックなので空リストが入力された場合はTrueを返す必要があります
Vacuous truthを知らないのですか? 論外です
2022/08/02(火) 07:19:05.10ID:Qu9LGAtZ
空listはfalseなのでbool()は不要
もしくは lst or [0] とすれば空listチェック不要
2022/08/02(火) 08:36:47.08ID:KlfR+zxP
>>670
ああそういうことか
667の質問の意味が今わかった
変な質問だなと思いながら適当に答えちゃった
673デフォルトの名無しさん
垢版 |
2022/08/02(火) 08:45:25.83ID:UYHD5f/y
>>670
空のリストでtrue返したいならall([i for i in lst if i>5])で返るが
2022/08/02(火) 08:56:18.05ID:KlfR+zxP
>>671
bool()は不要のほうは、戻りが True,False,[]の3種類になるから個人的にいや。
lst or [0]のほうは、i >= 5 とかの場合使えなくなるからよろしくないかと。
2022/08/02(火) 08:57:08.71ID:KlfR+zxP
>>674
訂正
lst or [0]のほうは、i >= 0 とかの場合使えなくなるからよろしくないかと。
2022/08/02(火) 12:52:45.59ID:7OOUBMB7
>>668
配列じゃなくiterableだと詰むよ
2022/08/02(火) 13:36:46.22ID:R2oSGNsV
>>672
そうなんッス >>667のcheck関数は完璧ッス 論理積のロジックでVacuous truthで数学的に自然なんッス
check(a+b+c) と check(a) and check(b) and check(c) が等価になると理解できるッス
でも空リストは弾きたいじゃないッスか しかし空リストの場合にFalseで返すと数学的に不完全になるッス
つまり空リストを弾きたいならcheck関数外の前後どちらかで引数のチェック処理が必要というわけッス
メッチャ不便じゃないッスか これが>>659の回答ッス
メッチャ不便なんで数学的に不完全な>>668-669 のようなコードになるッス これが自然ッス
でもその場合 check(a) and check(b) and check(c) みたいな使い方はできなくなるッスよね 空リストが来たらアウトッスから
つーわけでどっちもOKな解決策はあるのかなという質問ッス
同じようなcheck関数を書く場合に空リストの扱いはどうするのかって話ッス
もしそれが>>668-669のようなコードになるのならオイラの勝ちということッス
もちろんall([])がTrueになる理由は理解してるッスよ 5×0=0で5^0=1ってことッスもんね 分かってるッス そこは大丈夫ッス
678デフォルトの名無しさん
垢版 |
2022/08/02(火) 13:57:06.18ID:AJvhpMFc
>>676
要件は配列の要素をチェックする関数の作成だけど。
679デフォルトの名無しさん
垢版 |
2022/08/02(火) 14:10:48.20ID:3RqJykXJ
>>677
そもそも数学的な計算がしたいとき、空のリストが来たら不自然になる って
そりゃ空のリストは数学的じゃねーんだから不自然になって当然だろ

空のリストとかいう非数学を数学化する関数を実装しろよ。それはお前の好きにしろ
680デフォルトの名無しさん
垢版 |
2022/08/02(火) 14:25:29.34ID:UYHD5f/y
そういえばBytesIOがイテレーターなのはなんでなの?
配列じゃあかんのか?
2022/08/02(火) 14:44:44.43ID:PAwGL3nC
>>677
全然意味わからん
空リストを弾きたいならcheckの中で例外発生させるなりすればいいだけじゃねーの?
682デフォルトの名無しさん
垢版 |
2022/08/02(火) 14:58:23.12ID:4vAniN45
>>681
こいつはネチョネチョ言葉遊びしたいだけのゴミ野郎だから無視でいいよ
上の方でも暴れとる。rubyキチガイと同列の泥人形
2022/08/02(火) 15:02:37.40ID:3/XF33uC
どうせ発生しないような例外的なやつの対応ばかり考えている無能
2022/08/02(火) 15:21:43.17ID:GXJqSimc
>>677
100%同意する
2022/08/02(火) 15:24:08.55ID:uvL1JwEu
>>678
all([]) == Trueはデメリットが大きい例として>>667が書かれてるという文脈を理解してから書いてね
686デフォルトの名無しさん
垢版 |
2022/08/02(火) 15:36:16.40ID:4vAniN45
>>684-685
バレてるぞ恥晒し
687デフォルトの名無しさん
垢版 |
2022/08/02(火) 15:44:30.79ID:aYPyq7OS
all([]) == True
any([]) == False

であると困る例を教えてください.
2022/08/02(火) 17:37:12.67ID:PAwGL3nC
>>685
それ all([ ]) = False でも何も解決しないだろw
True / False しか返せないのに空リストかどうかの情報欲しいなら別の方法で返すしかない
2022/08/02(火) 19:22:29.51ID:R2oSGNsV
実は空リストの場合Noneを返すという手を考えたッスけど 数学的完全性を保つことはできなかったッス
しかしたった今思いついたッス 空リストの場合は2を返せばいいッス 2はTrueッス
我ながら自分の才能が恐ろしいッス
2022/08/02(火) 19:46:15.70ID:R2oSGNsV
>>689
訂正するッス 2じゃなくて1.0を返せばいいッス 空リストの場合は1.0を返すッス
1.0なら check(a+b+c) == (check(a) and check(b) and check(c)) が成立するッス
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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