Pythonのお勉強 Part53 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/05/13(土) 22:48:04.14ID:O7RODXwf
Pythonオフィシャルサイト
http://www.python.org/

まとめWiki
http://python.rdy.jp/
関連スレ
http://find.2ch.net/?BBS=ALL&;TYPE=TITLE&STR=python
日本Pythonユーザ会 (※英語わかる人は上記のオフィシャルの方を見ることをお薦めします)
http://www.python.jp/

日本語の扱いで戸惑ったらこちらをどうぞ(バッドノウハウ集で笑える)
ttp://speirs.blog17.fc2.com/blog-entry-4.html
ttp://atomic.jpn.ph/prog/etc/encode.html
ttp://d.hatena.ne.jp/kakurasan/20100330/p1

PythonのUnicodeEncodeErrorを知る
ttp://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html
よくまとまってた。あとで読む

■前スレ
Pythonのお勉強 Part52
http://echo.2ch.net/test/read.cgi/tech/1483756857/
2017/07/05(水) 21:36:39.76ID:CFCu53LC
>>480
そのコードだと(big % small)の計算は例えば123と23の入力に対して
(123 % 23)じゃなくて("123" % "23")を計算しようとする(でTypeErrorがでた)

input()で得た入力は文字列のまま&pythonでは文字列と数値の暗黙的変換はされない
のでint()などで数値に変換しないと数値同士の剰余にならず文字列の書式化になる
484デフォルトの名無しさん
垢版 |
2017/07/05(水) 21:40:17.76ID:odMt6Ynp
>>480
今女とヤってるとこだから詳細省くが…パンバンパパンパンパパンッ
2017/07/05(水) 21:51:26.15ID:k74tei78
>>480
おまんみたいな池沼は、ウンコペチプァでもやってろ池沼
2017/07/05(水) 22:10:07.04ID:pIvHmVsN
>>480
big = int(input("a::"))
small = int(input("b:"))

でおk
2017/07/05(水) 22:21:55.51ID:gQXdHb0c
Python2なら input()でもいいけど、
Python3だと、int(input())でないとエラーになるね。
Python3のinputは、Python2のraw_input()に、
Python2のinput()は、Python3のeval(input())に相当する。
2017/07/05(水) 22:22:33.27ID:hF8cO617
Errorメッセージが日本語で出るようにする方法ってある?
2017/07/05(水) 22:54:17.92ID:n6J1aua5
>>488
無いけど、グーグル翻訳に貼り付けたら
大抵は日本語になる。
490480
垢版 |
2017/07/05(水) 22:54:39.31ID:2BCHNoEU
みんなありがとう

int(input())に修正したら無事解決しました
2017/07/07(金) 08:13:37.41ID:2lw0aSIt
>>482
飲み屋から2chチェックして書き込みまでするってどんだけツマンネー飲み会なの?
一人立ち飲みならわかる。
492デフォルトの名無しさん
垢版 |
2017/07/07(金) 08:22:55.43ID:3s7e5LVu
>>491
一人だよ。
立ち飲みではなかったけど。
493デフォルトの名無しさん
垢版 |
2017/07/07(金) 08:25:58.15ID:3s7e5LVu
>>488
プログラミング言語勉強してたら大体読める単語並んでるから、慣れれば大体何書いてるのか分かるぞ。
英語ペラペラになれとは言わんが、英語アレルギーは直しておいた方がプログラマとして今後もやって行くなら絶対徳。
494デフォルトの名無しさん
垢版 |
2017/07/07(金) 10:21:07.03ID:bti4Si71
みんなのパイチンくんとデカチンくんだよ〜〜〜w
2017/07/07(金) 11:56:48.82ID:RAFdGqIf
日本語のエラーメッセージとか、一度英語に戻して考えないと直訳過ぎてわかんなかったりした
二度手間
496デフォルトの名無しさん
垢版 |
2017/07/07(金) 12:19:05.29ID:LXQ/C2D2
それは訳が悪いのであり日本語のエラーメッセージが悪いのではない定期
2017/07/07(金) 13:27:39.96ID:PNT+aB48
エラーメッセージ日本語にしても「Index Error」が「インデックスエラー」になるくらいだと思うの
2017/07/07(金) 13:50:23.17ID:4tey7BLB
領域外参照違反とか言われるよりindex errorって出てるほうが分かりやすいわ
2017/07/07(金) 14:13:11.92ID:RAFdGqIf
>>496
同じ英語のエラーメッセージでも投げたとこによって日本語だと違ったりする
なので1対1で訳すなら直訳になる

元の英語のエラーメッセージが発生場所ごとに書かれてるような詳細なものなら訳せるかもだけど
2017/07/07(金) 15:47:25.19ID:NuuEQail
[]
{}
""
,,
::
:
2017/07/07(金) 16:22:38.57ID:NuuEQail
{"●":● , "○":[{"name":A, "1":11 ,"2":22}, {"name":B, "3":33, "4":44}, {"name":C, "5":55, "6":66}]}

APIのJSONがこの形なのですが
2個目("○"部分)のディクショナリの値が、リストになっていて、都度仕様変更により、リストの順番が変わります。
この、ディクショナリのリストの「"name"」を使って、以下の形にしたいのですが良い方法はないでしょうか。


{{"A":{"name":A, "1":11 ,"2":22}}
{"B":{"name":B, "3":33, "4":44}}
{"C":{"name":C, "5":55, "6":66}}}




以下でやったのですが、上手くできませんでした。

all = json["○"]
for ss in all:

■■name = ss.get("name")
■■kobetu = dict({name:ss})
■■print(kobetu["B"])
2017/07/07(金) 17:04:32.70ID:ZubRvcdJ
>>> json = {'●': '●', '〇': [{'name': 'A', '1': 11, '2': 22}, {'name': 'B', '3': 33, '4': 44}, {'name': 'C', '5': 55, '6': 66}]}
>>> all = json["〇"]
>>> hoge={}
>>> for ss in all:
  name = ss.get('name')
  kobetu = dict(eval('{name:ss}'))
  hoge.update(kobetu)

  
>>> hoge
{'A': {'name': 'A', '1': 11, '2': 22}, 'B': {'name': 'B', '3': 33, '4': 44}, 'C': {'name': 'C', '5': 55, '6': 66}}
>>> json['〇'] = hoge
>>> json
{'●': '●', '〇': {'A': {'name': 'A', '1': 11, '2': 22}, 'B': {'name': 'B', '3': 33, '4': 44}, 'C': {'name': 'C', '5': 55, '6': 66}}}
>>>
2017/07/07(金) 17:08:06.53ID:ZubRvcdJ
△ kobetu = dict(eval('{name:ss}'))
〇 kobetu = eval('{name:ss}')
2017/07/07(金) 18:30:29.86ID:KFjSO1Te
micropythonの話ってどこですれば良いですかね?
ESP8266上で動かしているのですが、ESPのスレはESPのデバイスの話が濃くて言語の話が薄い
でもここも通常のpythonぽくてmicroの話は違うような

ご存じの方教えてくだされ
2017/07/07(金) 19:33:13.78ID:8HfzzkN3
{x['name']:x for x in d['○']}
こういうことか?
2017/07/07(金) 19:35:30.84ID:8HfzzkN3
ごめん d は適当に読み替えて
2017/07/07(金) 19:37:54.84ID:2lw0aSIt
一人立ち飲み中にこのスレ見てみたけど、全然頭回らんわw
508デフォルトの名無しさん
垢版 |
2017/07/07(金) 19:42:24.51ID:tdv0VtnU
気にすんな、いつものことや
509デフォルトの名無しさん
垢版 |
2017/07/07(金) 20:19:31.25ID:cWOZkS00
>>501
型の性質上、"〇"の値を"name"の順番通りにしたいというなら、A,B,Cをキーに持つ辞書で保持するのは適した方法ではないです
リストのまま"name"の値をキーにソートする方がいい
510501
垢版 |
2017/07/08(土) 06:11:07.11ID:inX23hAm
>>502
>>505

ありがとうございます。
私の知識不足もあって、505さんのものまだ試せてないです。。色々いじってみます。
502さんのもので試行錯誤して以下ま出来ました。たぶんもう少しでクリアできそうです。ありがとうございます。


>>509
説明不足ですみません。
”○”のリストの順番が変わる理由が、仕様変更でリストの要素が50音順の並びで増えていくためで、
ソートした場合、順番が変わってしまことから、A、B、Cをキーに持つ辞書にしたかったというのが背景にありました。
説明不足でした。



all = json["○"]
for ss in all:
■■hoge = {}
■■name = ss.get("name")
■■kobetu = dict({name:ss})
■■hoge.update(kobetu)
■■print(hoge.get("B"))


(出力結果)
None
{"name":B, "3":33, "4":44}
None
2017/07/08(土) 08:52:20.78ID:VtagckP8
>>> json = {'●': '●', '○': [{'name': 'A', '1': 11, '2': 22}, {'name': 'B', '3': 33, '4': 44}, {'name': 'C', '5': 55, '6': 66}]}
>>> all = {x['name']:x for x in json['○']}
>>> all
{'A': {'name': 'A', '1': 11, '2': 22}, 'B': {'name': 'B', '3': 33, '4': 44}, 'C': {'name': 'C', '5': 55, '6': 66}}
>>>
512501
垢版 |
2017/07/08(土) 12:05:43.31ID:inX23hAm
>>505
>>511
こういう事なのですね!凄い。
できました!本当にありがとうございますっ!
513デフォルトの名無しさん
垢版 |
2017/07/10(月) 14:42:51.70ID:TZVwcXL0
なんでpython3はwindows日本語環境のopenのデフォをutf8にしないのですか?
2017/07/10(月) 14:55:18.60ID:9oiksQC/
>>513
Windowsの標準文字コードがCP932ことSJISだから、過去の遺産に引きずられてるからどうにもならない
2017/07/10(月) 15:49:43.02ID:CNxwaGHR
訳あってPythonを使わざるを得なくなったんだが
Pythonという名称には抵抗感じる
ヘビ嫌い
2017/07/10(月) 15:56:32.56ID:9oiksQC/
蛇じゃなくてモンティパイソンだからって思ったけどロゴマーク蛇だったな
2017/07/10(月) 15:57:07.85ID:t4qeEO37
牛だと勘違いしてたわw
518デフォルトの名無しさん
垢版 |
2017/07/10(月) 16:17:48.22ID:TZVwcXL0
>>514
なるほど・・・あり!
2017/07/10(月) 16:48:34.99ID:891wXSAy
ゴキブリとかウジ虫とかよりマシだろ
2017/07/10(月) 17:12:40.14ID:OAwCY67i
>>517
バイソン
2017/07/10(月) 20:31:44.61ID:RiONe1Ok
そもそもモンティ・パイソンのパイソンは蛇のパイソンのことなの?
2017/07/10(月) 20:36:51.88ID:UR+4+grg
スコットランドの民話に伝わるパイソン族の事やで
2017/07/10(月) 21:03:41.89ID:Fha/eGoH
屁の音をモチーフにしたペチプァ〜〜〜〜さんをバカにしてるのか?
524デフォルトの名無しさん
垢版 |
2017/07/11(火) 00:36:16.33ID:IKoJR0Wf
大丈夫、俺もヘビ嫌いだけど、そんなの忘れるくらい便利だ
2017/07/11(火) 07:25:06.97ID:UfErDQBR
俺巳年やで
2017/07/11(火) 09:15:48.80ID:zsCdG6oN
パイソンちえみ 35億
2017/07/11(火) 09:58:40.77ID:Sq+bXrW4
どちらかと言うとバイソンじゃんあいつ
2017/07/12(水) 00:08:36.43ID:iO19g1+a
パイセンチョリーッス
2017/07/12(水) 08:13:13.31ID:lqiSGecC
戦闘ヘリパイソン
2017/07/12(水) 14:26:50.95ID:sNyzU/qO
>>498
一般エラー
2017/07/12(水) 20:01:47.90ID:+iUzgANj
アプデするたびに将来的にこの機能は削除しますとか警告出てきてイライラしてきた
pythonはライブラリ頼みだからこういうところは弱いわ
2017/07/12(水) 20:37:45.78ID:4Bbie6ut
それな
2017/07/16(日) 00:18:11.00ID:84gmQO2A
PIL使って壁紙生成するプログラム組んだら満足したので寝る
2017/07/16(日) 09:41:56.40ID:kpOM34Sv
ピル飲んで満足して寝るのか
535デフォルトの名無しさん
垢版 |
2017/07/16(日) 10:23:11.02ID:8fieeS/I
昨日本屋でブラブラしてたら
pythonでマインクラフトいじる本が出てたので
なんとなく立ち読みしてみた
PILつかってjpg読み込んでブロックで絵描いたりしてたけど
出来上がった解像度にがっかりだった
100x100とかしか出来ないのは速度の問題?
それとも1000x1000くらいにすると別途課金されるの?
2017/07/16(日) 10:59:35.96ID:6hUm5kqX
本を書いた人に聞けば
2017/07/16(日) 12:09:37.94ID:yo5XpH/o
日本でブラブラ
2017/07/16(日) 13:02:08.57ID:nvinih80
おちんちんをぶらぶら
2017/07/16(日) 13:37:05.52ID:pHft25q3
minecraftはオワコン
540デフォルトの名無しさん
垢版 |
2017/07/16(日) 16:36:08.94ID:dlJarD9s
>>535
日本屋?
2017/07/16(日) 17:36:05.22ID:h6bT3cU+
tubeでGTAの自動操縦してるやつもいる
2017/07/16(日) 17:42:08.95ID:I9sDywDn
pillowの方がいいってよ(伝聞)
2017/07/16(日) 20:06:40.37ID:MaIM++PI
>>537 >>540
こいつら頭の悪い AI か
544デフォルトの名無しさん
垢版 |
2017/07/16(日) 21:53:18.37ID:aJG+vjk1
ぷろグラムのプのじもわからない素人だけど
ゲームでリセマラしようとマクロ組もうとそこらのサイトから参考になりそうなのを継ぎ接ぎして
やってみたけどおもったとおり動かない
誰か助けてください
sikuliというマクロツールでpythonでやってるらしいからここでいんだよね?
おねがいします



while 1:
click("1500190920747.png")
wait(12)

findAll("1500198166325.png")@この画像の数次第で終わりと継続に分岐したい
mm = SCREEN.getLastMatches()
cnt = 0
while mm.hasNext():
cnt = cnt + 1
mm.next()
if cnt > 3:
click("1500198822380.png")
2017/07/16(日) 23:18:40.28ID:QlYFozep
くだすれPython超初心者用に行け

インデントが狂ってると問題が正しく伝わらない
正しく伝わらないと泥沼になるから答えてもらえない
コードは https://ideone.com/ に貼るのがよい
2017/07/16(日) 23:42:54.15ID:aJG+vjk1
インデントでぐぐったら動かせるようになったー
ちゃんと空白とかにも意味があったんですね
やっぱ基礎からやらんとダメぽ
なにはともあれありがとうございました
2017/07/16(日) 23:52:13.38ID:QlYFozep
ファ〜
2017/07/17(月) 00:56:15.68ID:s2Ne6p+B
>>546
そうやって成長していくんやで
2017/07/17(月) 01:22:12.64ID:Fkkap2CA
池沼を甘やかすな
2017/07/17(月) 03:43:18.27ID:a/BJdC61
>>543
一瞬、空目したってことだろ
まともに句読点打ってないから
2017/07/18(火) 17:34:31.56ID:AEILjc4B
nao操作するためにコレグラフとパイソン使わなければいけないんだけどどうやって勉強するべき?本とか
2017/07/18(火) 17:43:50.76ID:Ap/4Wqih
キムチ
2017/07/18(火) 18:35:49.55ID:9n6pBnb3
気合で勉強すればヘーキヘーキ
2017/07/18(火) 18:58:34.78ID:FvnhYrVJ
Pythonくらいみんな生まれた瞬間から扱えるからヘーキヘーキ!
もしPythonを忘れちゃったなら公式チュートリアルを読めばすぐ思い出せるよ
もしプログラム自体を忘れちゃったなら「みんなのPython」でも読めばきっと思い出せるよ!
2017/07/18(火) 19:29:58.73ID:+aCTDJcV
大抵のことは気合いと筋肉でなんとかなる
2017/07/19(水) 22:59:16.26ID:RpIdIDLo
質問です
正規表現のグループ()の所だけを大文字にしたくて
中々うまういかなくて、下のやり方でなんとか出来たのですが
もっとスマートにやる方法ってあるのでしょうか?
よろしくお願いします

import re
text='abc amnc axyzc'
def func(m):
n=m.group(1)
o=n.upper()
return o
r=re.sub('a(\w*)c','a'+func+'c',text)
print(r)
2017/07/19(水) 23:42:45.26ID:747RlNYZ
適切なスペースと改行を入れましょう。
はい次の患者さん。
2017/07/20(木) 00:15:30.34ID:VcCFQpPf
pastebinとか使ってくれるといいんだけどね。
次の方どうぞー
2017/07/20(木) 07:38:22.64ID:9T3/DS4t
>>551
チュートリアル一通り読めばだいたい分かるよ。
2017/07/20(木) 11:19:03.57ID:hN2WxidD
>>556
>>> import re
>>> text = 'hoge abc amnc axyzc fuga abstract auuc'
>>> re.sub(r'\ba(\w+)c\b', lambda s: s.group(0).replace(s.group(1), s.group(1).upper()), text)
'hoge aBc aMNc aXYZc fuga abstract aUUc'
>>>
2017/07/20(木) 15:42:02.15ID:hN2WxidD
>>556
>>560にはバグ有り
>>> import re
>>> text = 'hoge abc amnc axyzc fuga abstract auuc aaac'
>>> re.sub(r'\ba(\w+)c\b', lambda s: s.group(0).replace(s.group(1), s.group(1).upper()), text)
'hoge aBc aMNc aXYZc fuga abstract aUUc AAac' ←最後のaaacがaAAcとならない
>>>
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
バグ修正版
>>> re.sub(r'\b(a)(\w+)(c)\b', lambda m: m.group(1)+m.group(2).upper()+m.group(3), text)
'hoge aBc aMNc aXYZc fuga abstract aUUc aAAc'
>>>
2017/07/20(木) 16:40:01.51ID:t+byJiGG
俺に考えられる最短はこれかな
re.sub(r'(?<=¥ba)(¥w*)(?=c¥b)',lambda s:s.group(0).upper(),text)
2017/07/20(木) 22:28:24.31ID:7Kb2npVp
>>561
>>562
ありがとうございました。勉強になります。
色々不手際すみませんでした。
2017/07/20(木) 23:10:44.70ID:mEIqzc+z
絶対に許すな
2017/07/20(木) 23:35:42.89ID:VcCFQpPf
>>564
帰れ
2017/07/21(金) 10:27:49.18ID:apJa7JCX
tuple = ("A", "B", "C", "D")

print tuple[1:3] # ("B", "C")


開始インデックス1、終了インデックス3なので、このときの出力って("B", "C", "D")じゃないんですか?
2017/07/21(金) 10:36:41.79ID:FosZjZYq
[begin, end)の範囲を指している。
beginは含み、endは含まない。
2017/07/21(金) 18:26:28.98ID:MgCB0LLq
0 A 1 B 2 C 3 D 4
と考えるとわかりやすいよ
2017/07/21(金) 19:30:18.82ID:x48/o23C
終端がインクルーシブな範囲をキレイに書く方法も欲しいと時々思う。
+1するとかじゃなくて。
2017/07/21(金) 20:09:54.03ID:AHiilwYQ
(インクルーシブってなんだ・・・)
2017/07/21(金) 21:22:16.16ID:vk0S3clC
終端を+1しちゃうのはインデックスが身に付いてないから
インデックスはゼロから数えるけど、初心者は1から数えちゃうんだよ、その差だね

インデックスが身に付くとスライスは実に分かりやすい
tuple[:x] #最初からx個を抽出
tuple[x:y] #インデックスxからy-x個抽出

ね、抽出する要素数がすぐわかる
2017/07/21(金) 21:27:48.02ID:ovAWGznG
お、いいね!インクルーシブできてんじゃん
2017/07/21(金) 21:38:53.67ID:uhbq8RLc
こういう感じの辞書データがあって
dic = [
{
"price": 554,
"count": 3
},
{
"price": 750,
"count": 8
}
]

こんな風に2つに分けたい場合どうやったらスマートにできますか?
price_data = {
"price": 554,
"price": 750
}

count_data = {
"count": 3,
"count": 8
}
2017/07/21(金) 22:05:23.86ID:dtKpnH3U
最近のdictは順序を保存するようになったのだっけか。
辞書や集合は、順序を保存しないから、2つに分けたあとのは、辞書じゃなくて、リストかタプルにするのが良いと思う。
2017/07/21(金) 22:06:12.60ID:dtKpnH3U
あと、キーを重複して登録するのもできないんじゃなかったかな。
2017/07/21(金) 22:18:41.67ID:fgMeqMsm
横からだけどタプルって変更不可能なリストってだけなのかな?
イマイチ使いみちが分からない
2017/07/21(金) 22:20:07.17ID:uhbq8RLc
>>574
ありがとうございます
順序が変わるのは困るのでリストかダブルにしてみようかと思います
キーの重複は試してみたらエラーなくできました
2017/07/21(金) 22:31:13.53ID:dtKpnH3U
>576
タプルは変更したくないものを入れておくのに使えるよ。

たとえば、リストは辞書のキーにできないけど、タプルな、辞書のキーにできる。
2017/07/21(金) 22:43:09.11ID:dtKpnH3U
辞書でキーが重複してると、エラーはでないけど、最後に登録した時の値しか残らないみたいだよ。

http://ideone.com/SRSe97
2017/07/21(金) 22:46:04.66ID:VRGA9Dz3
多値返却する関数が必要なときとか
2017/07/21(金) 23:00:51.39ID:vk0S3clC
>>573
アナタ ソノジショ オカシイ
ヤリタイコト コウジャナイ?
dic={'商品名A':{'price':554, 'count':3}, '商品名B':{'price':750, 'count':8}}

priceノ ゴウケイ コウジャナイ?
sum([dic[k]['price'] for k in dic])

コンゲツ ツカッタ オカネ ケイサン スル ミタイナ
2017/07/21(金) 23:01:59.53ID:T64/yPMc
C#がタプル今更出来るようになったが超便利だ
今まで参照渡しで頑張ってたから
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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