くだすれPython(超初心者用) その44【Ruby禁止】

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2019/07/24(水) 21:02:48.30ID:d1IM+Tl+
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
☆「Ruby では」「Rubyでは」をNGワード登録推奨

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

★Pythonのソースコードはそのまま5ちゃんにコピペするとインデントが崩れるので
  ↓等のてきとうなソースコード用うpろだに貼ってきてください。
ttp://ideone.com/      デフォ設定はC用のため言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう

◆エラーを解決したい場合は、表示されてるエラー全文(勝手に省略禁止)と
  実行環境(Pythonのバージョン・OS名・IDEの種類とバージョン)をシッカリ書くこと。

◇Python公式サイト◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/

〇前スレ〇
くだすれPython(超初心者用) その43【Ruby禁止】
http://mevius.5ch.net/test/read.cgi/tech/1555397061/
196デフォルトの名無しさん
垢版 |
2019/08/18(日) 21:10:52.92ID:1iNtwV7Z
>>186
rstripってのもあるよ
2019/08/20(火) 20:00:14.61ID:Gkd3xMH4
>>195
その「意識高い」ってのは
マジで意識が高いのかそれとも「意識高い系」なのか……。
2019/08/20(火) 21:17:30.05ID:AoZjSCV7
一文字足すだけであら不思議!
199デフォルトの名無しさん
垢版 |
2019/08/21(水) 00:44:14.26ID:jDiMObB6
文と文系は対して変わらん
200デフォルトの名無しさん
垢版 |
2019/08/21(水) 07:08:42.46ID:plKhWM8d
python3でマルチスレッド処理をしたいです
def a(b):で作成した関数aをwhile無限ループ内で何度も繰り返したいです。
しかし、TypeError: a takes 1 positional argument but 18 were given(18のとこは15-20くらいで色々ある)
となってしまいます。

何がおかしいんでしょうか?
どうやったら治るか教えてください
2019/08/21(水) 07:31:33.39ID:G2PqedMK
>>200
その間違っているコードを示さないことには何が間違いか指摘しようがないぞ
202デフォルトの名無しさん
垢版 |
2019/08/21(水) 07:33:57.94ID:plKhWM8d
>>201
threading.Thread(target=a,args=(b)).start()
2019/08/21(水) 09:35:34.95ID:INPmh9wc
argsにタプルを指定した気になってるようだけどタプルじゃないって奴だな
204デフォルトの名無しさん
垢版 |
2019/08/21(水) 12:47:13.20ID:plKhWM8d
>>203
つまりどう直したらいいんでしょうか・・・
すみません
2019/08/21(水) 13:24:35.84ID:rtQcncog
https://docs.python.org/ja/3/tutorial/datastructures.html#tuples-and-sequences
> 問題は 0 個または 1 個の項目からなるタプルの構築です。(中略) 一つの要素を持つタプルは、値の後ろにコンマを続ける (単一の値を丸括弧で囲むだけでは不十分です) ことで構築できます
2019/08/21(水) 13:24:46.58ID:2OErRBE5
>>204
  >>202
207デフォルトの名無しさん
垢版 |
2019/08/21(水) 15:35:14.41ID:ur92HW83
threading.Thread(target=a,args=(b,)).start()
threading.Thread(target=a,args=((b,))).start()
2019/08/21(水) 15:37:24.39ID:2OErRBE5
横レスだけどなるほどなっとくした >>207 & >>205
2019/08/21(水) 19:53:15.36ID:vrRBM7oH
pythonも奥が深いな
2019/08/22(木) 12:09:15.94ID:5n19vLwe
一要素のタプルとかいう意味不明な物を許してるからこういう問題が存在するんじゃないの
2019/08/22(木) 12:38:18.50ID:+WLUVT0B
thread使ってるけど気にしたことないなぁって確認したらargs使ってなかったわ
引き渡すの全部Globalに入れちゃってるや
2019/08/22(木) 14:32:52.32ID:qSCycJ6B
a=10
b=a/2
print(b)
ってしたら、5.0ってなるねん
5ってしたいねん
どうやったらいいん?
2019/08/22(木) 14:35:51.73ID:OjO/vENV
>>212
print(b)

この部分を、

print(int(b))
とかじゃ整数にできんかね?
2019/08/22(木) 14:37:09.83ID:qSCycJ6B
>>213
できひんねん
2019/08/22(木) 14:38:20.20ID:OjO/vENV
>>214
じゃあ
a=int(10)
で最初に指定してあげるとかなら?
2019/08/22(木) 14:38:43.03ID:TnC8Wcje
5.0でええやんか
2019/08/22(木) 14:39:29.05ID:qSCycJ6B
>>213
あ、ごめん
出来たわ
2019/08/22(木) 14:39:59.01ID:qSCycJ6B
>>216
競プロでは不正解になるねん
2019/08/22(木) 14:40:36.08ID:OjO/vENV
>>217
いいよ
うんちぶりぶり!!
プログラミングなんてトライアンドエラー繰り返しだと思うしガンガレ
2019/08/22(木) 14:41:47.36ID:qSCycJ6B
>>219
おうよ!
221デフォルトの名無しさん
垢版 |
2019/08/22(木) 14:42:42.91ID:vsttXPXA
ほんとはトライアルアンドエラーやぞ
2019/08/22(木) 14:50:01.50ID:qSCycJ6B
>>221
友達おらへんやろ?
なったろか?
さみしないか?
223デフォルトの名無しさん
垢版 |
2019/08/22(木) 14:51:17.49ID:xQsiKIbM
b=a//2
または
print(f'{b:.0f}')
2019/08/22(木) 14:57:28.14ID:YHG3Udjg
教科書読んでドリル
225デフォルトの名無しさん
垢版 |
2019/08/22(木) 15:09:06.86ID:vsttXPXA
>>222
トライは動詞、エラーは名詞だから
トライアンドエラーは間違い
精進しろよ?w
226デフォルトの名無しさん
垢版 |
2019/08/22(木) 16:38:42.98ID:+sQNWHqe
>>212
python3からは勝手にfloatに変換されるので、intで閉じさせるならa//2とする
227デフォルトの名無しさん
垢版 |
2019/08/22(木) 16:40:18.63ID:+sQNWHqe
tryは名詞の意味もあるぞ
辞書引け
228デフォルトの名無しさん
垢版 |
2019/08/22(木) 17:11:06.84ID:vsttXPXA
>>227
これでいいかい?w
https://ejje.weblio.jp/content/trial+and+error

ついで。
「トライ・アンド・エラー」は間違い! 会議で使ってはいけない和製ビジネス英語
https://www.quicktranslate.com/blog/2017/09/%E3%80%8C%E3%83%88%E3%83%A9%E3%82%A4%E3%83%BB%E3%82%A2%E3%83%B3%E3%83%89%E3%83%BB%E3%82%A8%E3%83%A9%E3%83%BC%E3%80%8D%E3%81%AF%E9%96%93%E9%81%95%E3%81%84%EF%BC%81-%E4%BC%9A%E8%AD%B0%E3%81%A7%E4%BD%BF/
「トライ・アンド・エラー(試行錯誤)」は和製英語で、英語ネイティブは使わないのです。英語では、正しくは 「 trial and error (トライアル・アンド・エラー)」になります。
2019/08/22(木) 17:57:15.28ID:ewSTQs5i
カタカナで書いてる時点で和製英語にきまってるだろ
英語の文法とか何の関係もねーよ
2019/08/22(木) 18:01:49.82ID:bvtbd5/q
スマイル・シンデレラは間違い
スマイリング・シンデレラと呼ばなければならない

で、だからなに? って話だなw
2019/08/22(木) 18:31:51.10ID:k0K3XsJW
>>229
それ
りんごは英語でアップル
くらいの知能レベルの文
2019/08/22(木) 21:07:30.73ID:NZc4hO3L
和製英語禁止とか生活大変だろ
2019/08/22(木) 21:47:06.20ID:tsQp+M7t
例えば「エンバグ」は和製英語だが(その証拠に英英辞典には載っていない)
プログラマで使ったことないやつなんか10%もいないだろ
2019/08/22(木) 22:19:28.34ID:NtN1+LDS
VSCodeのPythonの型推論がクソ進化してる
もう型アノテーションいらないんじゃないかこれ
2019/08/23(金) 01:41:15.41ID:HCAwSO4F
https://www.p2pquake.net/dev/json-api/

JSONっぽいけど、始まりが[で終わりが]になってる
reqests.getで取得したとして
この中のearthquakeの中のhypocenterの中のnameを取り出すにはどう書いたらいいですか?
2019/08/23(金) 05:33:37.30ID:s44pimIO
>>233
エンバグってなに?
2019/08/23(金) 06:42:20.26ID:N9EC0fnt
エンバグなんて使ったことない
2019/08/23(金) 06:59:13.46ID:oK3Cn5/Y
こないだテレビ見てたらカーボーイハットの男が叫んでた。
2019/08/23(金) 07:22:07.28ID:eFyFop4/
>>233
自分の常識が世間一般の常識と思い込むのイクナイ
2019/08/23(金) 07:34:27.45ID:W0iLWMiN
>>233
それ業界英語だからや
普通に英単語でもあるぞ enbug
2019/08/23(金) 07:36:51.29ID:W0iLWMiN
>>235
アクセス過多で業務妨害罪でタイーホ!

URLてきに、apiでとれるようになってるんだろうから
そこ用のapiの勉強しんしゃー
2019/08/23(金) 08:16:50.69ID:Mz9ZP4mp
enbug バグを仕込むこと(故意でなくても)
2019/08/23(金) 08:29:31.08ID:1dI4xuIA
>>236
バグを直したら違うところがバグった
2019/08/23(金) 08:32:19.37ID:Mz9ZP4mp
ていうか英語の接頭辞のニュアンスくらいマなら知っとるやろ
2019/08/23(金) 08:57:07.61ID:W0iLWMiN
>>244
おまえの常識
周囲の非常識
2019/08/23(金) 08:58:29.25ID:Mz9ZP4mp
エンクロージャって聞いて分からんマとかおりゅ?
2019/08/23(金) 09:22:50.85ID:5TcsxCJp
>>240
CollinsにもWebsterにもMacMillanにもODEにも載ってないのに「英単語」と言い張るのは無理がある
もちろんこれらの辞書はすべてdebugはコンピューター業界での用法も当然に収録している
これでも不満ならありとあらゆる英単語を載せているOEDを引けば答えがわかる

ちなみにenbug.orgにも「日本語由来」と(英語で)書いてある
2019/08/23(金) 09:24:16.55ID:5TcsxCJp
正確には「日本語圏でしか使われていない単語」か
要するに和製英語を一部の人間が英語に持ち込んでるだけで英単語ではない
2019/08/23(金) 11:28:23.12ID:LjhFqZ/B
英語の大先生は中央線に飛び込んで死んでね
2019/08/23(金) 11:29:14.67ID:HCAwSO4F
>>235
r = requtsts.get(url)
d = r.text
d = json.loads(d)

これで最新の10件が取れますが[]で括られてます
リストってことになってしまうから例えば
d = d[0]
とやれば1件目が取れます

10件欲しいならforループ使えばいいのは分かるんですが、例えばissueの中のtypeを取り出したい時
for dd in d:
sType = dd['issue']['type']
print(sType)

これだと
KeyError: 'issue'
とエラーが出るのはなぜですか?
2019/08/23(金) 12:24:51.70ID:s+6jWuTi
コードガールこれくしょんの問題8-4をやっているんですが、以下の回答のどこがダメなのか分からず先に進めません…;
かなり初歩的な質問で申し訳ないのですがどなたか教えていただけると助かります。

from random import randint
#1から10のランダムな整数を出力して下さい。
a=randint(1,10)
print(a)
2019/08/23(金) 12:50:55.60ID:GCcQKmFF
print(randint(1,10))
これをループして
2019/08/23(金) 12:51:13.89ID:MQdWPEng
>>251
randrange使うんじゃないの?知らんけどw
2019/08/23(金) 12:56:09.54ID:MRE+SfwO
揚げ足とるとそれだとランダムな整数が代入された変数を出力してるもんなぁ糞だけど
2019/08/23(金) 13:47:49.94ID:jgkDRT2h
>>250
issueが無いデータがあるからでしょ
if 'issue' in dd:
とかでキーが存在するか確認しろ
2019/08/23(金) 14:16:36.43ID:5TcsxCJp
>>251
ちょっとやってみたけど
『文字列「"sky"」を出力してください』で
print("sky")で蹴られるとか明らかになにかおかしいだろこれ
2019/08/23(金) 15:03:24.96ID:s+6jWuTi
251です。他のステージもプレイしてみましたが、以前は正解になった回答↓でも不正解になったので公式側に不具合が起きているのかもしれません;
時間を置いて再度試してみます。コメントありがとうございました。

#文字列「egg」を出力してください。
print("egg")

#10から2を引き算して出力してください。
print(10-2)
258デフォルトの名無しさん
垢版 |
2019/08/23(金) 17:53:49.62ID:Zx6EO+xk
>>235
ここって今も更新されてるの?
2019/08/23(金) 22:34:52.86ID:bCjBZ45B
>>255
どうもありがとうございます
存在していないkeyでした

http://ideone.com/0ErCLL

これを実行すると
村上市 (2)
関川村 (1)
鶴岡市 (1)
な感じでプリントされますが、

村上市 (2), 関川村 (1), 鶴岡市 (1)
といったように、一行でプリントするにはどんな方法がありますか?

>>258
更新されているようです
Rubyでのサンプルページも作られていました
https://github.com/p2pquake/epsp-utils/tree/master/json_api_reader
2019/08/23(金) 22:40:04.86ID:bCjBZ45B
>>259
for p in points:
# print(p)
# sys.exit()
s = p['scale']
s = str(s)
s = scaleDic[s]
a = p['addr']
print(a, end=" ")

こうやるとaのvalueが横一列で表示されたので、試しに
print(a, end=" ", s end=" ")
こうやってみたらエラーでダメでした
2019/08/23(金) 23:03:35.92ID:VukiVfH6
format
2019/08/23(金) 23:57:42.43ID:bCjBZ45B
>>261
どうもありがとうございます

formatの使い方ですが、
print('{1} {0}'.format(points[0]['scale'], points[0]['addr']))
print(f'{points[0]["addr"]} {points[0]["scale"]}')

pointsの0番目を指定しているのでどちらも同じく
村上市 20
と表示されます
pointsの中にはいくつか入っているので0番目だけじゃなく全て表示したいのでforループを使いました
だけれどそれだと縦にプリントされてしまいます
.formatの指定の仕方で横にプリントが出来るということですか?
2019/08/24(土) 01:12:22.32ID:feuvYzbT
l = ['{}({})'.format(p['addr'], scaleDic[str(p['scale'])]) for p in points]
print(', '.join(l))
2019/08/24(土) 09:12:37.87ID:+nNIwdjo
print(a+"("+s+")", end=",")じゃだめなんか知らんけど
2019/08/24(土) 09:28:04.44ID:fnGH5ITP
改行無しを多くつかうなら
def princ(x):print(x,end="")
で、end=""を少なくすると良いかも
266デフォルトの名無しさん
垢版 |
2019/08/24(土) 09:51:52.05ID:BpytXyBE
これでお願いします
http://ideone.com/GEHy2w

template = '{0} ({1})'
for p in points: p['scale'] = scaleDic[str(p['scale'])]
output = [template.format(p['addr'], p['scale']) for p in points]
print(*output, sep=', ')
267デフォルトの名無しさん
垢版 |
2019/08/24(土) 10:57:17.18ID:6nD2xE5w
君のは無駄すぎる

print(', '.join(f"{p['addr']} ({scaleDic[p['scale']]})" for p in dd.get('points', [])))
2019/08/24(土) 11:06:04.31ID:xvjQRABf
後から湧いてきてエラそうなのが笑える
269デフォルトの名無しさん
垢版 |
2019/08/24(土) 11:12:04.69ID:6nD2xE5w
あと scale 46 もあるな
270デフォルトの名無しさん
垢版 |
2019/08/24(土) 11:17:47.27ID:6nD2xE5w
>>268
うびぃも後出しじゃんけんでperlをdisってるからな
他人の事は言えんやろ
2019/08/24(土) 11:49:43.27ID:c46ZB698
>>260 print(f'{a}({s})',end=', ')

一番最後にも , がつくのが少しうざいけど。
end= と言うのは print文の最後を改行の代わりに指定文字を出力して終わると言う意味だから、複数指定するのは間違い。
2019/08/24(土) 12:16:48.26ID:c46ZB698
>>259 >>266 scaleDic のキーは、str ではなくて、数字じゃ無いとダメだろ。
これで良い筈。
http://ideone.com/sld6FX
2019/08/24(土) 12:46:52.13ID:feuvYzbT
揚げ足取りばっかりだなw
2019/08/24(土) 12:54:31.62ID:SB9VKIDg
>>263
どうもありがとうございます!
l = [f'{p["addr"]} (震度{scaleDic[str(p["scale"])]})' for p in points]
ll =', '.join(l)
print(ll)
f'に置き換えても動きました!

>>264
>>265
どうもありがとうございます!
これらも確認してみます!
2019/08/24(土) 12:54:42.98ID:SB9VKIDg
prefs = {'山梨': 2, '東京': 42, '北海道': 2, '千葉': 12, '神奈川': 31, '茨城': 1, '埼玉': 5, '静岡': 3, '栃木': 1, '沖縄': 1}
これを
valueの多い順に、
東京 (42), 神奈川 (31), 千葉 (12)...
と並べる方法もありますか?

prefsSorted = sorted(prefs.items(), key=lambda x: x[1], reverse=True)
この関数だと、
[('東京', 42), ('神奈川', 31), ('千葉', 12), ('埼玉', 5), ('静岡', 3), ('山梨', 2), ('北海道', 2), ('茨城', 1), ('栃木', 1), ('沖縄', 1)]
value順に並べられるけど、リストでも辞書でもなさそうな形式に変わってしまいました。
不要な文字をstripやreplace等で消そうと試しましたが、タプルだから無理とエラーが出ました。

教えていただいたように
pp = '{} {}'.format(pSk, pSv) for pSk, pSv in prefs.items
ppp = ', '.join(pp)
print(ppp)
これには応用出来ませんでした
2019/08/24(土) 12:56:04.04ID:SB9VKIDg
>>266
>>267
>>271
>>272
ありがとうございます
レス頂いた内容ひとつひとつきちんと試してみます
2019/08/24(土) 13:15:05.15ID:cyI4/KcP
pp = ['{}({})'.format(i[0],i[1]) for i in prefsSorted]
print(', '.join(pp))
2019/08/24(土) 13:29:52.26ID:SB9VKIDg
連投すみません

>>264
>>265
>>271
これ(>>260) に対するendの使い方が分かりました

>>265
短いけれど内容難しいです
2019/08/24(土) 13:30:03.13ID:SB9VKIDg
>>266
formatの対象を別変数に入れたり、printでsepを使う時にアスタリスクが使える事が参考になりました

>>267
これ (>>263) をさらにコンパクトにしたってことなんですね

>>272
なるほど
scaleDicのkeyをstrじゃなくintにすればよかったんですね
2019/08/24(土) 13:43:44.40ID:SB9VKIDg
>>277
どうもありがとうございます!
formatでいけるんですね
じっくり調べてみます
2019/08/24(土) 14:14:17.12ID:SB9VKIDg
書き直しました
http://ideone.com/cVlEOe

pの中のscaleが空っぽの場合エラーになってしまうので、25〜26行目ようにifを使いました
一応これで動いてるっぽいんですが、やり方あってますか?
2019/08/24(土) 14:54:59.05ID:SB9VKIDg
教えていただいたおかげで、Rubyでのサンプル(https://github.com/p2pquake/epsp-utils/tree/master/json_api_reader)の実行結果のようにPythonでも表示できるようにしてみました。

引数有り無しで何分前までの情報を表示するか選べるようにしました。
ただ、時間指定するか件数指定するかで迷っています。
サンプルは100行ほどで治まっているけれど、自分のは1.5倍もあるのできっと無駄だらけ(特にmain関数内のインデント)なんだろうと思いました。

http://ideone.com/jf4yY4
https://i.imgur.com/694EBuR.jpg
283デフォルトの名無しさん
垢版 |
2019/08/24(土) 15:01:22.44ID:u2q8uNB0
>>281
p['scale']
の代わりに
p.get('scale', 0)
としてscaleDict[0]のところに'不定'など入れるべき
2019/08/24(土) 16:05:24.01ID:c46ZB698
>>281 24行目
scale = dic.get(k, “不明”)
2019/08/24(土) 21:07:21.79ID:SB9VKIDg
>>283
>>284
どうもありがとうございます
辞書を.getで使う事は知っていたけれど,で区切って代入したいものを書けば見つからない場合にそれが代入されるんですね
25〜26行目も不用になりました
勉強になりました
2019/08/24(土) 21:08:53.62ID:SB9VKIDg
>見つからない場合に

じゃなくて代入するべきkeyが無い場合
ですね
2019/08/24(土) 22:27:37.43ID:ZFPgn961
>>9
かなり遅れましたがあざーす!!!!!!
2019/08/24(土) 23:47:57.43ID:dA7WdXyV
Ruby には、式展開がある

文字列内の#{ } 内に、変数・リテラルなどの式を書くと、
式を評価してから、文字列に変換する

文字列に変換する際、Object#to_s が呼ばれる

a = 1

p "答え : #{ a + 2 }"
#=> "答え : 3"

こうやって簡単に、可読性が高いプログラミングができるから、Rubyは初心者向け。
Python では、こんなに簡単に書けないから、ものすごい時間を浪費するw
289デフォルトの名無しさん
垢版 |
2019/08/25(日) 00:22:10.20ID:YrUvuEmX
これは恥ずかしい
2019/08/25(日) 00:24:20.23ID:9mosJQ5t
>>288
Rubyくん
Python3.6からf-stringが導入されたからできるよ
精進したまえ
2019/08/25(日) 00:45:52.85ID:xUfkLqmE
a = 1
print(f'答え: {a + 2}')
答え : 3
2019/08/25(日) 00:50:05.77ID:xUfkLqmE
>>291
自分はこのやり方しか知らない
3.6以前や2の時代はどう書いてたんですか?
293デフォルトの名無しさん
垢版 |
2019/08/25(日) 00:52:43.33ID:AaCFD+Ee
xを2*10の行列にしたいんだけど、なんでこれだと20次元のベクトルになっちゃうの?
正解はどうすればよかんべ・・・・
import numpy as np

x = np.array([[]])
for i in range( 10 ):
x = np.append( x, [i, i*i] )
print(x)
2019/08/25(日) 00:55:00.62ID:zdoVOlQu
>>292
print'答え:'+str(a+2)
とか。
295デフォルトの名無しさん
垢版 |
2019/08/25(日) 01:59:09.84ID:mg6wG7oZ
>>293
np.appendの行を
x = np.stack((x, [i, i*i]))
にする

あるいは
x = np.arange(1, 10)
x = np.stack((x, x*x)).T
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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