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

レス数が950を超えています。1000を超えると書き込みができなくなります。
2021/12/27(月) 01:38:10.93ID:GepmXCuJ
当スレに★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(超初心者用) その55
https://mevius.5ch.net/test/read.cgi/tech/1633070807/

次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
2022/04/30(土) 19:22:27.31ID:XZrd/bpX
https://docs.python.org/ja/3/reference/compound_stmts.html#function-definitions
式じゃないし識別子でもない単にそこで実行される文
2022/04/30(土) 21:51:14.91ID:yu/EzU82
>>872
それ「実行文だから」とか全然理由になってない
インタプリタ型の言語ならJSでもRubyでもPHPでも全く同じことできる

実行文ではないC言語でも定義より先に呼び出したらエラーになる
2022/04/30(土) 22:12:01.94ID:o6QgUZIK
>>872
┏━━━━━━━━━━━━┓
┃The image you are       .┃
┃requesting does not exist   .┃
┃or is no longer available.   .┃
┃                        ┃
┃imgur.com             ┃
┗━━━━━━━━━━━━┛
2022/04/30(土) 22:22:35.44ID:64v4nlhT
seleniumでaタグをclickしてswitch_to.windows(driver.window_handles[1])しても<html><head></head><body></body></html>っていうページにアクセスするようになる
なんで無内容に?どうすればいいんだろう
そもそもGUI上はクリックしてないんだけどなんだこれ
2022/04/30(土) 22:23:14.79ID:OR8SZm5l
>>875
> インタプリタ型の言語ならJSでもRubyでもPHPでも全く同じことできる
やれるね、だから何?

> 実行文ではないC言語でも定義より先に呼び出したらエラーになる
コンパイル言語で定義より先に呼び出し?
実行順序とソース上の順序を混同してるだろw
2022/04/30(土) 22:59:55.25ID:64v4nlhT
>>877
解決
クリックしたあと2秒sleepさせたら出来た
読み込みに時間が掛かるんだな
2022/04/30(土) 23:11:39.76ID:484odO/R
>>878
だから何じゃねーよww
ダメだこいつw
881デフォルトの名無しさん
垢版 |
2022/05/01(日) 02:13:14.49ID:b95w4aAB
>>875
C言語の場合、宣言すれば定義は後回しでOK。
2022/05/01(日) 05:53:28.01ID:Rd1MW222
>>880
ダメなのはお前の頭だろw
他の言語なんて関係ないし
2022/05/01(日) 08:06:33.67ID:JzdAzqq0
https://i.imgur.com/3qXlqVA.jpg
884デフォルトの名無しさん
垢版 |
2022/05/01(日) 09:40:22.97ID:0ggTu6P0
実行文って、コンパイル型言語で宣言文と区別する意味の用語だから、Pythonでは、完全にナンセンス
「実行文だから」は何の意味も持たない
実行文でない文は、逆にあるのか?
2022/05/01(日) 10:00:01.37ID:aj8iUgGb
コンパイル言語?
JSにも宣言文はあるんだが
2022/05/01(日) 10:06:43.73ID:KjQtFKQ9
インタプリタだって全部の行を一行ずつ実行しながら解釈しているとは限らないんだから区別はあっておかしくない。
887デフォルトの名無しさん
垢版 |
2022/05/01(日) 10:39:20.23ID:c1q3P+1N
宣言っていまいち意味わからんのだけど。
defは今の名前空間に新たにオブジェクト(function/callable)を作成するって捉える方がしっくりする。
だから、名前()で呼び出しするためには、その前に作成が終わってなきゃダメよね、ってなる。
って考えると、Pythonは上から下に順番に実行しかしていない、ってわかる。
2022/05/01(日) 11:07:07.83ID:IDzy7BiL
関数定義をまとめた関数をスクリプト末尾に書いて
それをスクリプト先頭で呼ぶようにすれば…と思ったけどダメですね
ズラズラ並んだ関数定義を見たくない場合、定義部分を別スクリプトにして
それをimportすればいいのかな?
2022/05/01(日) 11:28:22.49ID:UqOJOPuh
868のやり方じゃ駄目なんけ?main()の呼び出しを最後に書く以外は関数の並び順は自由だし、関数名がmainなら最初に実行されるだろうことは暗に容易に伝わる。
自分も呼び出すほうを上、呼び出されるほうを下に書くほうが読みやすいと感じるから常にそうしてるよ
2022/05/01(日) 11:54:47.68ID:IDzy7BiL
>>889
自分はメイン処理をトップレベルに書く派なので
残念ながらこの手法は使えません

しかし知識として知りたくはあります
>>868ってmain()より下にあるhoge()をmain()から呼べるってことですよね
それは何故でしょうか
2022/05/01(日) 12:26:54.53ID:Dd8WxxXv
>>890
> 868ってmain()より下にあるhoge()をmain()から呼べるってことですよね
> それは何故でしょうか
main()が(定義される時じゃなくて)実行される時はdef hoge()も実行済みだから
2022/05/01(日) 12:29:09.32ID:UqOJOPuh
そのこだわりはよくわからんな…
デメリットしか思いつかん
2022/05/01(日) 12:46:49.10ID:JzdAzqq0
相互参照している場合とかどうするんでしょうね?
2022/05/01(日) 12:52:31.00ID:Yd4A+jrH
>>885
>>872で「実行文だから実行時に関数定義をかえることができる」と書いてるのは嘘だったってことかな?
2022/05/01(日) 13:24:18.52ID:Rd1MW222
>>893
実行までに各々定義すればいいだけだからなんの問題もないだろ
2022/05/01(日) 13:25:01.76ID:Rd1MW222
>>894
Pythonの話とJSの話の区別もつかない無能乙
2022/05/01(日) 13:46:20.12ID:qrKdrkjM
どうでもいい話になってきてるような
スレタイにふさわしいと言えばそうだが
898デフォルトの名無しさん
垢版 |
2022/05/01(日) 14:07:59.04ID:b95w4aAB
スレタイ通り下らない話で盛り上がってて実に素晴らしい。
899デフォルトの名無しさん
垢版 |
2022/05/01(日) 14:08:54.21ID:QvrU5Mi0
エントリポイントのエの字も出ない
2022/05/01(日) 14:18:30.82ID:Gwm1B3AE
>>891
実行というからおかしくなる
関数のシグニチャを評価するタイミングと
関数のボディを評価するタイミングの違い

前者が他言語でいう宣言文の役割
Cのプロトタイプ宣言とかと同じ
Pythonでも宣言として捉えたほうが分かりやすいよ
2022/05/01(日) 14:20:32.48ID:IDzy7BiL
>>891
うーんよくわかりません
なぜ上にある関数から下にある関数を呼べるのか
私の脳はここまでです

>>892
メリットが二つあります
・スクリプトの先頭から実行が始まるので流れを追いやすい
・メイン処理の字下げが一段少なく済む
2022/05/01(日) 14:40:33.88ID:vJsN8meg
>>901
> 先頭から実行が始まる
先頭に書いてあるのがmain関数なら上から読み下せるのは同じじゃね?
2022/05/01(日) 14:53:14.40ID:KjQtFKQ9
うちはスクリプトの末尾にこの2行、ってのが定番たわ。

if __name__ == '__main__':
main()
2022/05/01(日) 15:06:46.08ID:JzdAzqq0
>>895

https://i.imgur.com/1yUgMXq.jpg
2022/05/01(日) 15:10:06.70ID:Rd1MW222
>>900
だからそんな思考回路だと
if xxx:
def foo:
print('foo1')
else:
def foo:
print('foo2')
みたいなコード見たらなんで宣言2個あってもいいんだよ?ってなるだろ
2022/05/01(日) 15:11:46.01ID:IDzy7BiL
>>902
main関数が処理の始まりかどうかは結局下を見ないと確定しないので…
ならばトップレベルにメイン処理を書く方が安心確実と思う次第です
2022/05/01(日) 15:15:47.63ID:4M5GqABF
def main(): hoge()
def hoge(): print(‘hoge’)
main()

Pythonの評価順は基本的に上から下に一行ずつ
1行目ではdef main():までの関数シグニチャのみ評価してボディは評価されない(それがdefの役目)
2行目も同じようにdef hoge():までの関数シグニチャのみ評価
3行目の関数呼び出し時にmain関数のボディが評価される
そのタイミングではhoge関数はシグニチャが評価され関数として宣言済みなのでhogeを呼び出せる
2022/05/01(日) 15:20:45.71ID:Rd1MW222
>>901
Pythonインタープリターの気持ちになって考えればわかると思うよ
1: def main():
2:  hoge()

3: def hoge():
4:  print(‘hoge’)

5: main()
1を実行する時は2の内容をmainで登録する(この時点では2自体は実行されない)
3も同様に4の内容をhogeで登録する
5のmainの呼び出しで2が実行されて4が呼ばれるので実行順は1→3→5→2→4のようになる
2022/05/01(日) 15:22:24.87ID:Rd1MW222
>>906
そう思うのは自由だけどPythonでは無理だから諦めるか他の言語にするしかない
2022/05/01(日) 15:22:30.22ID:F/hLZDCn
>>905
宣言が2個あったところで何が問題なの?
2個あったらエラーにするルールのある言語もあるけどPythonにそんなルールない
2022/05/01(日) 15:30:33.22ID:vJsN8meg
>>906
確かにそのとおりだけど、あんまり他人を疑いすぎると禿げちゃうよ
2022/05/01(日) 15:36:27.81ID:M2LDeL9g
これからはクラス定義もクラスメソッドも関数もごちゃごちゃにして途中でjson入れたり意味なく連想配列作ったりいきなりタプルにしたり判読し辛いコード書くことに決めた
初心者が初心者になる前に躓いて読めなくなるようにしていこう
2022/05/01(日) 15:37:45.97ID:M2LDeL9g
オーバーライドしまくってやる
2022/05/01(日) 15:38:22.08ID:M2LDeL9g
意味なく戻り値にクラスメソッド使ってやる
2022/05/01(日) 15:51:18.35ID:Rd1MW222
>>910
エラーにしない言語って何?
2022/05/01(日) 15:55:09.23ID:zrtkQxP2
javascriptは同じ名前の関数が並んでてもエラーにならないな。後ろが使われる
2022/05/01(日) 16:00:48.30ID:DfY2Iokg
グローバル変数・定数の定義とか、
場合分けしてモジュール等をインポートするときとか、
これらをサブ関数の中か、その前にグローバルで書くべきかいつも悩むわ

モジュール等のインポート
グローバル変数・定数の定義
 場合分けによるモジュール等のインポート(環境依存)
サブ関数の定義
 場合分けによるモジュール等のインポート(環境非依存)
メイン関数の定義
メイン関数の実行(>>903

これ、問題ある?
918917
垢版 |
2022/05/01(日) 16:03:56.84ID:DfY2Iokg
グローバル変数・定数の定義なんかも
サブ関数としてまとめて定義して、メイン関数で呼び出してグローバル宣言したほうがいいのかな?
2022/05/01(日) 16:08:44.40ID:Rd1MW222
>>916
まあjavascriptはvarで同じ変数使ってもエラーにならないような言語だしね
さすがに最近はletで重複させるとエラーになるみたいだけど
920デフォルトの名無しさん
垢版 |
2022/05/01(日) 16:30:44.75ID:6txgexSj
機能別にモジュール作って、関数詰め込んで使ってるんだが、合ってる?
2022/05/01(日) 18:30:38.94ID:tQAUcym9
一連の流れ見てもよくわからんのだけど、質問は何なの?
2022/05/01(日) 18:43:16.30ID:CmrphzhC
自分の思い通りにソース書きたいけど仕様上書けない、どうしたらいいのって愚痴
2022/05/01(日) 19:08:52.26ID:tQAUcym9
もう質問じゃないよね。だったら区切ってもいいでしょ
2022/05/01(日) 19:09:28.98ID:Jd2/Razo
わからないです
2022/05/01(日) 21:52:03.79ID:haToe2zO
>>917
普通にモジュール分割していいなら
メイン関数は定義せず__main__.pyのトップレベルに書く
定数は定数用のモジュールを用意してimport
926デフォルトの名無しさん
垢版 |
2022/05/01(日) 22:17:08.56ID:b95w4aAB
「オレは気に入らない」って人は生きるの辛そう。
柔軟性が無いと常に何かと戦うことになる。
2022/05/01(日) 23:58:05.46ID:Hq8ES+K0
こだわりなくてもいいとこなら別にそれでいいんじゃね
こだわらなきゃいけない事なんていくらでもあるだろう
2022/05/02(月) 00:19:51.52ID:zZIONtog
ノットフォーミー全盛期だよな、現代
929デフォルトの名無しさん
垢版 |
2022/05/02(月) 13:04:57.99ID:ZthOcqCz
とにかく在日は悪いことしかしない
在日は皆殺しにすべき!
2022/05/02(月) 21:11:16.99ID:FWJ3qdnv
俺も最初の頃はこだわり持って色々なこと試してたけど結局シンプルイズベストだと気づいてさっさと書くようにしたら効率上がったなぁ

まぁある程度新しいことにも挑戦するべきだけどさ
でもセイウチ演算子の使い所がよく分からないよね
2022/05/03(火) 06:15:08.74ID:mgZ8H7hi
> でもセイウチ演算子の使い所がよく分からないよね
C言語やってたら余裕
with open("sample.txt") as f:
while text := f.readline():
print(text)
2022/05/03(火) 06:20:24.93ID:ZdlL7fiJ
それfor文より何がいいの?
というかファイルのデータなくなったらエラーでないの?
while文の終了条件がわからない
2022/05/03(火) 06:51:18.93ID:mgZ8H7hi
for 文で書いてみてよ
2022/05/03(火) 07:44:11.89ID:GYbp8Bpg
セイウチ演算子の使い所は、PEPのExapmlesを見れば分かるのでは

https://peps.python.org/pep-0572/#examples
2022/05/03(火) 10:25:34.40ID:lrUYCsXU
>>933
for line in f: print(line)
ファイルオブジェクトはiterableで行読み込みする
てかふつうこう書かん?

>>932
https://docs.python.org/ja/3/library/stdtypes.html#truth
ファイル終端で空文字列(=偽)が返って終了
936デフォルトの名無しさん
垢版 |
2022/05/03(火) 16:37:55.33ID:zAUrPbJb
0.1*3==0.3がFalseになるのに、0.1*2==0.2がTrueになるのはなぜですか?
2022/05/03(火) 16:54:49.32ID:zAUrPbJb
解決しました。忘れてください
2022/05/03(火) 18:09:38.71ID:5IHsdKXO
>>937
ちなみに何故です?
2022/05/03(火) 19:47:01.45ID:6X7U05Nz
計算誤差でしょ
940デフォルトの名無しさん
垢版 |
2022/05/03(火) 20:19:38.25ID:zAUrPbJb
>>938
二進数だから
>>939
そうなんだけど、0.2はその誤差が何で出ないのかなってわかんなくて聞いたけど、書いてすぐわかっちゃった
2022/05/03(火) 20:45:03.55ID:tKI6TxwO
知りたい~
2022/05/03(火) 22:27:11.85ID:lyrCvvNg
案外やなヤツw
2022/05/04(水) 05:25:28.65ID:8abXDPny
ちんちんシュッ!シュッ!シュッ!
2022/05/05(木) 10:24:51.52ID:vEkkTSCd
(2^((2^(35-1))-1))*(2-(2^-4060))
の計算がしたいんだが、できないのでとりあえず
2^17179869183 の計算がしたいが、

多倍長電卓LMで一瞬で解答が得られる
2^2147483647 でさえも、

ttps://paiza.io/projects/RM8L_oSwcs5_ghDFro5Sew
でも
ttp://codepad.org/ZhAiGY69
でも
ttps://ideone.com/TeJEDo
でもタイムアウトして困っています。
2022/05/05(木) 12:32:07.83ID:Yq75WaGa
日本語でOK
2022/05/05(木) 12:38:36.07ID:MYAXyIRK
6億桁ぐらいか?
そんなのprintしろって言われても困っちゃうよ
2022/05/05(木) 16:24:10.63ID:gVprMCyl
>>944
そんだけデカい桁扱いたいなら
Decimal使いつつ、デフォルトの指数設定も弄らないとオーバフロー起こすぞ
https://docs.python.org/ja/3/library/decimal.html

コード例としてはこんな感じ
https://ideone.com/exndwC
(桁数6億ぐらいだから多分合ってると思う)
2022/05/05(木) 17:06:58.83ID:vEkkTSCd
>>947
どうもありがとう。
大変参考になります。
2022/05/05(木) 17:20:45.83ID:h3TBoBMl
decimal 使わずとも print しなけりゃ時間内に終わるよね?
2022/05/05(木) 17:22:51.83ID:h3TBoBMl
https://ideone.com/xXhkPf
2022/05/05(木) 17:37:43.73ID:vEkkTSCd
有効桁数100桁で2^17179869183の計算ができました。
https://ideone.com/dqhOTo

どうもありがとう。
2022/05/05(木) 18:05:45.24ID:vEkkTSCd
>>949-950
カレットが使えないんじゃないかな?
計算結果が違っている。
ttps://ideone.com/SNjYuo

**で置き換えてみたがランタイムエラーになる。
ttps://ideone.com/F2N5yS
ttps://ideone.com/WUSd0H
2022/05/05(木) 19:04:52.15ID:h3TBoBMl
元の式をコピペして動いたと思っちゃった。
確かに ** にしないと計算結果違っちゃうね。
python の int は多倍長計算してくれると思ってたけど
上限あったのね。勉強になったです。
2022/05/05(木) 20:44:57.60ID:SUkJat8/
>>940
これ教えてください
2022/05/05(木) 20:54:23.21ID:Rtfrs1Kx
>>954
二進数 誤差
でググりもしてないならこの分野向いてない
2022/05/05(木) 20:58:06.37ID:SUkJat8/
>>955
なんで0.2も0.3も二進数で表現できないのに0.2は誤差がでないんですか?
2022/05/05(木) 21:20:06.74ID:Rtfrs1Kx
>>956
答えとしてはたまたまでPythonの浮動小数点の実装方針

>>> [(x, 1e-1 / 10 ** x) for x in range(10)]
これでイメージつくかも
2022/05/05(木) 21:33:08.66ID:/WvxkOMY
仮数部が等しいから当然
2022/05/05(木) 21:51:52.77ID:tw5Ro1fM
0.2 に誤差がでないのではなく、
誤差付き 0.1 を2倍した結果が、誤差付き 0.2 と等しくなる、
というだけ

0.1, 0.2 を二進数にすると、それぞれ以下の無限小数になる

0.00011001100..
0.0011001100..

これらを正規化すると、以下のようになる

1.1001100.. x 2^-4
1.1001100.. x 2^-3

つまり、仮数部が同じで指数部が 1 だけ異なる

float の仮数部の桁数は小数点以下 52 桁なので、
53 桁目で丸められて誤差が入るが、
元の仮数部が同じなので、丸められた結果の仮数部も同じ
960デフォルトの名無しさん
垢版 |
2022/05/05(木) 22:29:18.63ID:VIM8YOLC
優しみがゴイスー
2022/05/06(金) 01:20:26.74ID:wPj9y4p8
2進数の11 は、3 だけど、
110なら6、1100なら12

指数部の指定で、桁がずれるだけで、仮数部は同じ。
仮数部は2桁で、11とする

10進数の11 は、11だけど、
110なら110、1100なら1100

これも指数部の指定で、桁がずれるだけで、仮数部は同じ。
仮数部は2桁で、11とする
2022/05/07(土) 13:14:50.97ID:2qmSGQfh
プロジェクトのパッケージ構成で質問
https://packaging.python.org/en/latest/tutorials/packaging-projects/#packaging-python-projects
上記内の例で__init__.py、example.pyが存在するのはsrc直下ではなくて、その中にあるexample_package内であってますか?
2022/05/07(土) 22:17:49.52ID:hLdUgsLX
>>947で教えて頂いた
https://ideone.com
のdecimalのemaxって最大9を何個まで指定可能か知ってますか?

とりあえず801個まではテストしてみて動きましたが。
2022/05/08(日) 07:16:57.55ID:rAxhmZ4o
decimal.MAX_EMAXに書いてある
2022/05/08(日) 08:22:04.33ID:vKAQqA9f
>>964
どうやったらそれを画面出力できるの?

print(decimal.MAX_EMAX)
NameError: global name 'decimal' is not defined
print(MAX_EMAX)
NameError: global name 'MAX_EMAX' is not defined
2022/05/08(日) 09:10:53.78ID:lPzTyKes
リファレンスの読み方の勉強からはじめたら?
2022/05/08(日) 09:12:41.48ID:8ykKyj07
__
    ̄ ̄ ̄二二ニ=-
'''''""" ̄ ̄
           -=ニニニニ=-


                          /⌒ヽ   _,,-''"
                        _ ,(^ω^ ) ,-''";  ;,
                         / ,_O_,,-''"'; ', :' ;; ;,'
                     (.゙ー'''", ;,; ' ; ;;  ':  ,'
                   _,,-','", ;: ' ; :, ': ,:    :'  ┼ヽ  -|r‐、. レ |
                _,,-','", ;: ' ; :, ': ,:    :'     d⌒) ./| _ノ  __ノ
2022/05/08(日) 09:23:18.61ID:abjrWq6f
あのさぁ、俺はお前らを「道具」として見てンだわw
俺が聞いたらお前らは素直に答える。これだけでいいのw

decimal.MAX_EMAXの出力方法教えろやおらぁwwwwwwwwwwwwwww
2022/05/08(日) 09:26:59.55ID:gMjR/OFO
https://docs.python.org/ja/3/library/decimal.html#constants
2022/05/08(日) 09:29:39.59ID:3lpfIXfe
NameError: global name 'decimal' is not defined
これを解決すればいいんじゃない?
2022/05/08(日) 09:30:11.41ID:rWXY/EV0
>>965
まずdecimal.MAX_EMAXの値はリファレンスに乗ってる
https://docs.python.org/ja/3/library/decimal.html
の定数って所

で、コードで確認する例もおいておく
https://ideone.com/gt9i0u
2022/05/08(日) 09:34:38.39ID:vKAQqA9f
>>969
書いた通りリンク先に書いてある(18個)以上の9の数を設定できちゃうんだけど、
9の数が999999999999999999個ってことなの?
でも1601個設定して10^10^1600を計算したらエラーになったぞ。
2022/05/08(日) 10:09:59.71ID:vKAQqA9f
ごめんなさい。1600個いけました。9の個数が足りてませんでした。
9の数が999999999999999999個まで行けそうですね。

すみません。
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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