[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 06/30 01:58 / Filesize : 284 KB / Number-of Response : 1045
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2022/05/22(日) 22:25:08.74 ID:/hGmbW/Z.net]
当スレに★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公式◇ www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi

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

次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###

775 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 16:37:01.79 ID:GNjKAHJ2.net]
なにがわからないの?
x and y === if x then y else x
x or y === if x then x else y

776 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 17:05:06 ID:Rerux/uK.net]
>>747
それ
True and print('right')
False or print('right')
と同じで両方共に print('right') の値を見ないと全体の値は確定しないから 'right' が表示されるのは当たり前
1 > 2 and print('right')
ってやればどうなる?

777 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 17:15:18.30 ID:w9crSB+N.net]
andは左側が真の場合、右側を評価する
andは左側が偽の場合、右側を評価しない
orは左側が真の場合、右側を評価しない
orは左側が偽の場合、右側を評価する
左側だけで真か偽か判明してる場合は右側を評価しない

778 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 18:30:45.48 ID:VXkV51Mv.net]
>>746
そうですね。書いてありましたね。
あとやったとすれば、
a.datas += [('習済みデータ.xml','

779 名前:.\\習済みデータ.xml', 'DATA'),]
※学習済みデータは「haarcascade_frontalface_default.xml」等
を記述したことと、1つのファイルにしたときに、Temporaryの実行パスを取得を工夫したことくらい…

あ、できたファイルを実行時にウィルスとして検知されるので、
pyinstallerの中のファイルの再コンパイルも必要です。
[]
[ここ壊れてます]

780 名前:747 mailto:sage [2022/08/08(月) 19:28:04.38 ID:ej7caoJh.net]
>>748-750
ありがとうございます

すいません、聞き方が悪かったです
ショートサーキットの機構については分かります
bool型を返すわけではないprint()関数が右端に「使える」ことが不可解です
print()は確かNoneを返す関数だったはず

781 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 19:40:14.54 ID:Rerux/uK.net]
>>752
None を bool として評価すると False になる

782 名前:デフォルトの名無しさん [2022/08/08(月) 19:41:18.38 ID:wsYAfPSE.net]
>>752
NoneはFalse
bool()で非ブール型もブールに変換した上で解釈される

783 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 20:06:39.11 ID:UzajzKaJ.net]
右辺はboolとしてなんて評価されません
適当なことを言うな
https://wandbox.org/permlink/gk6gdiVzpzvoPWfI



784 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 20:15:13.65 ID:EDIALeRU.net]
>>755
評価時に__bool__が呼ばれます。if とかで使うと出力される。

785 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 20:33:20.93 ID:EDIALeRU.net]
左だとすぐに呼ばれるのに対して違うんですね理解しました

786 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 21:21:18.46 ID:icSMNlYR.net]
文字列の置換って
translate()とreplace()のいいとこ取りの置換方法ないの?

translate()は
"aa"→"b"
にできないんだよね?

あと
AAA = kansuu(AAA)
BBB = kansuu(BBB)
CCC = kansuu(CCC)
DDD = kansuu(DDD)
みたいな感じになってるときって
for文で入れていく以外思いつかないんだけど、他に見やすい書き方あるかな?

787 名前:デフォルトの名無しさん mailto:sage [2022/08/08(月) 22:27:42.98 ID:GdyVfCQX.net]
>>758
文字列をmappingベースで置換したいならflashtext使うといいかも

2つ目のはAAA, BBB, CCC, DDDをコレクション(dict, list, tuple等)にする

788 名前:デフォルトの名無しさん [2022/08/09(火) 11:17:14.43 ID:6xBGELHM.net]
フォルダパスとファイル名とURLを書くと画像を保存してくるコードを書いたんだけど
https://techiedelight.com/compiler/?BQkA

エラーの対処はわかったんだけど、もっと別の書き方があるのではと思ってしまう
他の人はこれをどう書きますか?

789 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 13:25:52.34 ID:804xd0t9.net]
raw文字列

790 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 14:13:10.80 ID:6cdAV71K.net]
バックスラッシュの代わりに、スラッシュを使う
でもいい

791 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 14:27:14.68 ID:reKZbZGW.net]
raw文字列、joinpath、with_suffix

792 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 16:46:37.99 ID:904t2Z05.net]
pathlib一択でしょうね

793 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 17:34:17.89 ID:VX/MyXfz.net]
HTTPErrorやIOErrorのハンドリングもやったほうがいいよ



794 名前:デフォルトの名無しさん [2022/08/09(火) 17:48:28.39 ID:/U/bpI39.net]
外部からの入力系は全部
try:
req
except:
クソ
するな俺は。ユーザーは信用しない
あとダウンロード系も
try:
down
except:
失敗
する。どんなわけわからんエラーくるかしらんし

795 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 18:07:25.22 ID:RasYFqXo.net]
外部とのやり取りは一筋縄ではいかないからねえ
ついでにリトライも入れておきたい
requestsには頼らずビルトインで頑張るw

796 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 18:28:07.98 ID:Lt/MnBA ]
[ここ壊れてます]

797 名前:v.net mailto: >>766
それ普通じゃね?
[]
[ここ壊れてます]

798 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 21:17:15.16 ID:DxAePLof.net]
わざわざtryしなくても例外が起きると止まるっしょ

799 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 22:15:13.78 ID:v2aJaQdL.net]
わざわざブレーキつけなくても事故れば止まるっしょ

800 名前:デフォルトの名無しさん mailto:sage [2022/08/09(火) 23:22:34.01 ID:xxgft6hm.net]
>>760
Windows で、path = "C:\a\b"
みたいに、\ を使わなければならないの?

Ruby では、
path = "C:/Users/Owner/Documents/a"
みたいに、/ を使うけど

801 名前:デフォルトの名無しさん [2022/08/09(火) 23:25:51.13 ID:KqAyUORM.net]
>>771
前半、バックスラッシュを使わなくてもアクセスできる。
後半、スレチ。いちいち書くな。

802 名前:デフォルトの名無しさん [2022/08/09(火) 23:34:41.82 ID:oM0lzHLp.net]
合わせてバックストレッチ。

803 名前:747 mailto:sage [2022/08/09(火) 23:46:35.97 ID:8UDvOyKH.net]
レスが遅くなってすいません
答えてくれた方ありがとうございました
ああいった書き方もあるんだと頭の片隅に留めておきます



804 名前:デフォルトの名無しさん [2022/08/10(水) 00:02:07.83 ID:DjE5xMJT.net]
>>769
普通はエラー処理系にraiseするからtry節置くと思うが

805 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 02:29:00.47 ID:kx7L/9BB.net]
なにが普通かは人による

806 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 03:50:21.12 ID:obfeaPUq.net]
なぜこの関数が作られたのかを考えながらプログラム書くとすっきりする

807 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 10:26:29.49 ID:rR8/AFmc.net]
Enum 列挙型という概念を初めて知ったが
使い所がよくわからない

808 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 12:53:32.14 ID:vnHVeG1e.net]
関数をローカル変数に代入するメリットって何でしょうか?

809 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 13:19:15.14 ID:8RUvvZbB.net]
何度も同じ計算をしないで結果だけ繰り返し使える

810 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 13:33:33.79 ID:bGy3yklD.net]
場合によるけど、処理前半でローカル変数に関数を代入しておくことで、処理後半の分岐が消えて見通しが良くなる可能性はあるかも。
何らかの理由でリネームしたかったとか?

811 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 15:00:50.94 ID:vnHVeG1e.net]
ありがとうございます

812 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 15:59:42.31 ID:WlLD55gQ.net]
>>779
同じコードで呼び出す関数だけ違うパターンって結構あるから
ソートとか

813 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 17:43:12.15 ID:YLnkT8Qt.net]
>>779
ループ内で毎回foo.bar()するよりも
ループの外でbar = foo.barして
ループ内ではbar()だけにすると微妙に速くなる



814 名前:デフォルトの名無しさん [2022/08/10(水) 21:48:18.68 ID:5JgNVH0W.net]
かけるかな

815 名前:デフォルトの名無しさん [2022/08/11(木) 07:13:22.60 ID:HPSk7Pik.net]
https://i.imgur.com/FBcOaIq.png
質問です。WindowsでColabでやってます。
1024×768のサイズの画像のみを収集したいのですが、
違うサイズの画像が入ってきます。どうすればいいですか?

816 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 07:56:07.13 ID:X31RE6bn.net]
>>786
設定したfiltersがcrawlに設定されていない
google_crawler.crawl(keyword='流星', filters=filters, max_num=10)

817 名前:101 mailto:sage [2022/08/11(木) 09:45:20.53 ID:fCiqpa8j.net]
英語って本当にプログラムに適してるのか?
isspace()
って何かと思ったらis spaceかよ
空白ないと判別しにくいのはプログラミングにおいてどうかと思うわ

818 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 10:00:41.98 ID:nadsErGw.net]
キャメルケースとかスネークケース使えよ

819 名前:デフォルトの名無しさん [2022/08/11(木) 10:13:40.52 ID:ECrQVbq4.net]
atoi

820 名前:デフォルトの名無しさん [2022/08/11(木) 11:12:03.43 ID:m7iYSaV1.net]
>>788
少なくともあんたはプログラムに向いてないな

821 名前:デフォルトの名無しさん [2022/08/11(木) 12:26:10.60 ID:fKEJQx+N.net]
https://i.imgur.com/HJTruLr.png


822 名前:>>787
ありがとうございます。早速、記入してみたのですが、
画像が収集できなくなりました!
AssertionError となりましたが、どうすればいいですか?
[]
[ここ壊れてます]

823 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 12:46:20.99 ID:7cUH/Z7I.net]
×(かける)じゃなくて x(エックス)じゃねーの?
=1024x768
てか、コードはスクショじゃなくてコピペしてくれ



824 名前:デフォルトの名無しさん [2022/08/11(木) 13:47:35.08 ID:fKEJQx+N.net]
>>793
ありがとうございます。早速、修正してみたのですが、
TypeError となりました!どうすればいいですか?
コードのコピペ↓
from icrawler.builtin import GoogleImageCrawler

google_crawler = GoogleImageCrawler(storage={'root_dir': '流星フォルダ'})
filters = dict(size='=1024x768')
google_crawler.crawl(keyword='流星', filters=filters, max_num=10)

825 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 13:58:15.94 ID:7cUH/Z7I.net]
エラーもコピペしてくれよ...

826 名前:デフォルトの名無しさん [2022/08/11(木) 14:07:01.78 ID:fKEJQx+N.net]
>>795
このようなエラーとなっています。
エラー↓
Exception in thread parser-001:
Traceback (most recent call last):
File "/usr/lib/python3.7/threading.py", line 926, in _bootstrap_inner
self.run()
File "/usr/lib/python3.7/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "/usr/local/lib/python3.7/dist-packages/icrawler/parser.py", line 104, in worker_exec
for task in self.parse(response, **kwargs):
TypeError: 'NoneType' object is not iterable

827 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 15:00:05.18 ID:7cUH/Z7I.net]
>>796
バグかも...
https://github.com/hellock/icrawler/issues/107

828 名前:デフォルトの名無しさん [2022/08/11(木) 15:15:10.72 ID:fKEJQx+N.net]
>>797
バグですか...ありがとうございます。
他のコード、1024×768のサイズの画像のみを収集するには、
どうすればいいですか?

829 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 15:27:49.52 ID:JwgkCgjA.net]
めちゃ無駄だけど1024x768以外の画像は捨てちゃうぐらいしか思いつかん...

830 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 16:47:42.06 ID:X31RE6bn.net]
>>798
できました、min_sizeとmax_sizeも指定する必要があるみたいです
Python3.10でやりました、TypeErrorにはなりませんでした

google_crawler = GoogleImageCrawler(storage={'root_dir': '流星フォルダ'})
filters = dict(size='=1024x768')
google_crawler.crawl(keyword='流星', filters=filters, max_num=10, min_size=(1024, 768), max_size=(1024, 768))

831 名前:デフォルトの名無しさん [2022/08/11(木) 18:48:40.17 ID:fKEJQx+N.net]
>>800
ありがとうございます。早速、試してみましたが、
バージョン違いのためかNameError となりました。
現在、Python 3.9.12 のバージョンなのですが、
ColabでPython3.10にするにはどうすればいいですか?

832 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 18:56:22.30 ID:X31RE6bn.net]
エラーもコピペしてくれよ...

833 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 19:26:39.81 ID:L6VcpDZr.net]
バージョン違いって断定してるんだからそれでいいだろ
他の可能性を検討しようとするなよ



834 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
そんな能力あるのになんでColabのバージョンは変えられないの?

835 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
>>801
Python 3.9.7が残っていたからicrawlerインストールして>>800実行したら
問題無くできたのでPython3.9.12でもできるハズ
Colabが悪いのではないでしょうか?

836 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
windowsの3.9.13でも問題ないな
ちゃんとgoogleの検索結果取得できてないか、htmlパースに使ってるbeautifulsoup4かlxmlがおかしいかかな

837 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 20:01:15.15 ID:X31RE6bn.net]
>>801
まさかだけどNameErrorって、NameError: name 'GoogleImageCrawler' is not defined じゃないよね?
>>800の前にfrom icrawler.builtin import GoogleImageCrawler してるよね?

838 名前:デフォルトの名無しさん [2022/08/11(木) 20:18:34.40 ID:fKEJQx+N.net]
>>807
ありがとうございます。早速、試してみましたが、
見事に解決しました。
>>800
改めてありがとうございます。
お陰さまで、1024×768のサイズの画像のみを収集することができるようになりました。

839 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 20:24:18.19 ID:7cUH/Z7I.net]
>>807
せめて>>794ぐらいは見てから書きなよ...
まあエラーのコピペ待ちでいいかと

840 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 20:25:02.29 ID:7cUH/Z7I.net]
>>808
えっ、まじで>>807だったの?...

841 名前:デフォルトの名無しさん mailto:sage [2022/08/12(金) 05:55:29.63 ID:vrgQH6RZ.net]
(超初心者用

842 名前:) []
[ここ壊れてます]

843 名前:デフォルトの名無しさん [[ここ壊れてます] .net]
jupyternotebookでセル内のコードが長くなるため,
defで定義した関数を同一ディレクトリ内のmy_func.pyに保存し
メインのコードmain.py 内でimportすることにしました.

my_func.pyに保存した関数内では,numpyを使っているのですが,numpyが認識されません.
main.py でnumpyをインポートしていますが,その効果をmy_func.py内に待避した関数に及ばせるためには
どうすればよいでしょうか.



844 名前:デフォルトの名無しさん [2022/08/12(金) 11:54:38.42 ID:V16IFZ6j.net]
my_func.pyでnumpyをインポート

845 名前:デフォルトの名無しさん mailto:sage [2022/08/12(金) 13:39:22.16 ID:f9Pn84YJ.net]
>>813
ありがとうございます。早速、記入してみたのですが、
my_func.pyでnumpyが認識されました。
main.py内にインポートしているnumpyどうすればいいですか?

846 名前:デフォルトの名無しさん [2022/08/12(金) 14:10:01.68 ID:AKRIAlbQ.net]
main.pyでnumpyを使っていなければいらない

847 名前:デフォルトの名無しさん [2022/08/12(金) 15:01:37.64 ID:P/MIlql5.net]
そのライブラリを直接呼ぶコードがあるファイル毎にimportする。直接呼ばないなら不要

main.py
__import funcs

__funcs.test()


funcs.py
__import numpy

__def test():
____print(numpy.random.randint(0, 10))

848 名前:デフォルトの名無しさん mailto:sage [2022/08/12(金) 15:14:18.69 ID:f9Pn84YJ.net]
>>815
>>816
ありがとうございます。早速、試してみましたが、
見事に解決しました。

849 名前:101 mailto:sage [2022/08/12(金) 16:36:29.89 ID:SBMPsz73.net]
普通、FunctionalをFucって略すか?


幻塔というゲームのテスト用のサーバーネームが
JP Fuc Test Server
だったらしく炎上してた

850 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 03:28:02.47 ID:nuG2c1c/.net]
mypyでエラーにならないように pathlib.Path の型を示したいんだが、これはどうすりゃいいのかね?
type()でチェックすると
<class 'pathlib.WindowsPath'>
となるんだが pathlib.WindowsPath と指定してもエラー出るし

851 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 03:32:04.91 ID:nuG2c1c/.net]
動的な基底クラスはmypyでチェックできないって言ってる人がいたわ
そういうことなのか?

852 名前:デフォルトの名無しさん [2022/08/13(土) 03:54:53.99 ID:xLCZiP8v.net]
pylanceだとpathlib.Pathでいけるけどmypyあかんか?

853 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 07:30:43.65 ID:nuG2c1c/.net]
>>821
お、いけたわ
さんくす



854 名前:デフォルトの名無しさん [2022/08/14(日) 04:23:42.79 ID:aYzApZcG.net]
pythonでcuda使いたいが、お勧めのサイトありますか?
ちなみにcudaは3090とかの方がいいですか?

855 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
にほんごでおk

856 名前:デフォルトの名無しさん [2022/08/14(日) 10:12:56.20 ID:A6qxvdf0.net]
[python cuda]🔍

857 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 11:25:05.75 ID:Gnb69e0i.net]
Noneの比較はis を使うべきで==を使うべき"でない"なんて記述を見かけるのですが、

if dictData.get('key') == 'hogehoge':
__echo 'OK'

例として辞書のgetメソッドのようにキーが無ければNoneを返すような場合で上記のような判定もすべき"でない"のでしょうか?
この場合dictData.get('key', '')のように、キーが見つからない場合の値を明示的に書くべき?
(ただdict.get()のようにコントロールできないのもありますよね)

858 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 12:06:39.34 ID:KzxSNF0d.net]
if hoge is None:
こんな風に定数Noneと比較する場合の話だよ

859 名前:デフォルトの名無しさん [2022/08/14(日) 12:18:23.17 ID:T9w5rPHY.net]
Noneを==すると稀にNone==None ->Falseあるから避けよう。バグのもと。これはググれば解説あるから読んで

で、普通は
if dic.get('key') == 'foo':
__func()
だけでしょう。あればする、なければ終わり

if dic.get('key') == 'foo':
__func()
else:
__func_b()
でもいいけど。

基本的にNoneやFalseを判定しにいかない。まずTrue判定をして、その反対をelse (if)で受ける

ただまあNone / Falseだけを知りたい場合があって
そのときは
if dic.get('key') is None:


860 名前:__func()
などと書く。英文として読みやすいからよい

つか辞書から無い可能性あるkeyのgetは避けたい
db検索的に書きたいならget使わずtry節書いてKeyError専用処理作ろう
[]
[ここ壊れてます]

861 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 12:29:39.79 ID:Gnb69e0i.net]
>>827,828
なるほど、明示的にNoneであることの比較の場合はということですね。ありがとうございます。
>>828さんの最後の件も承知しました。

862 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 12:34:40.20 ID:Gnb69e0i.net]
>>828
あ、やっぱりすみません、最後のget使うべきでない理由って簡単に教えていただけますか?
今回、API等の応答で、辞書の目的のキーがあったりなかったりするような応答で、キーがあれば拾う、無ければ無視、という単純なものなのですが、それでもgetは使わないほうが良かったりしますか?

863 名前:デフォルトの名無しさん [2022/08/14(日) 12:41:52.12 ID:VI2zLni0.net]
>>682
1000%同意する



864 名前:デフォルトの名無しさん [2022/08/14(日) 12:45:09.72 ID:Xz0meKRj.net]
>>830
dict['key']が存在してvalueがNoneの場合にTrueになっちゃうから、キーの不存在判定だけしたいなら'key' in dictの方がいいんじゃないかな

865 名前:デフォルトの名無しさん [2022/08/14(日) 12:50:22.70 ID:T9w5rPHY.net]
>>830
エラーは出ていいんよ
逆に握りつぶしちゃいけない
というかgetってなんのためにあるんだ?

try:
__dic[input()]:
____print('ある')

except KeyError:
__print('ねえわ')

except Exception as e:
__print(e.__class__.__name__)

外部入力受け付けるのって鬼門なんでこういう感じで書きたい
keyerrorは想定できるし、別の意図してないエラーも拾いたいだしょ

866 名前:デフォルトの名無しさん [2022/08/14(日) 12:51:39.01 ID:T9w5rPHY.net]
>>833
しつれい
try:
dic[input()]
print(1)

867 名前:デフォルトの名無しさん [2022/08/14(日) 12:53:45.52 ID:A6qxvdf0.net]
>>830
その用途なら、getでもいいんじゃない?
>>832が言う様な違いはあるけれど、キーが不存在でNoneが返る場合と、キーが存在するが値がNoneの場合とを、区別する必要があるかどうか、考えて決めれば良いよ

868 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 15:22:06.37 ID:nJs5efs8.net]
キーに階層があって、途中のキーがなかったりすることがある場合なんかだと、
区別する実益はあるかもしれんね
一応、.get('key', {}) なんて方法もあるけど

869 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 15:22:39.42 ID:Gnb69e0i.net]
>>832
失礼しました。最初の例ですとおっしゃるとおりですね。内容まで取得するケースも想定してました。

>>833-835
ありがとうございます。要件などふまえ考えてみます

870 名前:デフォルトの名無しさん [2022/08/14(日) 16:52:51.09 ID:T9w5rPHY.net]
ああわかった

db['key1': 0, 'key2':0,,,]
if key1:
__print('ある')
else:
__print('ない')

こんときgetじゃないといかんのだな
あるいは

try:
__value = db[a'']
__print('ある')
except KeyError:
__print('ない')
except:
__print('未定義エラー')

871 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 22:47:50.08 ID:549c+n4K.net]
Ruby の偽は、nil, false だけ。
これ以外は真

でも、Python, PHP, JavaScript などは、
各型に偽値がある。空文字列・空配列・空辞書など

だから、とんでもなくバグるし難しい。
すべての型の可能性を考えないといけない

文字列型・配列型・辞書型ならとか。
だから、TypeScript みたいな型チェックツールが作られた

872 名前:デフォルトの名無しさん [2022/08/14(日) 22:57 ]
[ここ壊れてます]

873 名前::22.86 ID:I2sSNpX6.net mailto: >>839
死ね
[]
[ここ壊れてます]



874 名前:デフォルトの名無しさん [2022/08/15(月) 09:22:07.96 ID:c1YCm0IS.net]
>>838
どういうこと?

875 名前:デフォルトの名無しさん [2022/08/15(月) 13:07:09.65 ID:RvdaGkLE.net]
>>841

dict['key'] = value

dict.get('key') = value

取得したvalueがFalseになるとき、つまり0とかNoneとか空白のとき
if dict['key'] is not True になる。値はあるにも関わらず
一方
if dict.get('key') is Ture なので、期待する挙動としてはgetのが正しい

値がダミー(0など)の辞書の用意とかありうるので






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<284KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef