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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2019/02/04(月) 21:22:10.08ID:9MrdxUVg
★当スレにRubyのソースコード類を書くことを禁ず
☆Ruby等、Pythonではないプログラミング言語での回答類を書くことも禁ず

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

エラーを解決したいときはエラー表示や環境(バージョン/IDEまたはcommand line/OS)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで

前スレ
くだすれPython(超初心者用) その40
http://mevius.5ch.net/test/read.cgi/tech/1542874174/


◆PythonのHome Page
http://www.python.org/

◆まとめwiki
ttp://python.rdy.jp/

◆Pythonのソースコードをそのまま5ちゃんにコピペすると
  インデントが崩れるので
  こういうところ↓にはってきてください
ttp://ideone.com/      Pythonするにはぷち手間あるのがめんどうかなぁ
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数を長めに指定しる。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう
ttps://ja.osdn.net/pastebin/ ログイン必須になりやがった(゚Д゚#)
−−−−天麩羅ここまで−−−−
2019/03/03(日) 09:07:55.13ID:uQiZZFNH
fanation w
2019/03/03(日) 09:09:26.05ID:R+BaZbTo
>>468
おおう
txtがゲシュタルト崩壊しとった
訂正

def test_fanction(txt):
  ここにnを指定してるボックスからnを取得する命令を書け
  n = int(n)
  hoge = ''
  for i in range(n):
    hoge += random.choice(txt)
  print(hoge)

より望ましくは、hogeはcharactarsみたいな、意味を持つ語にしてやってくれ
2019/03/03(日) 09:11:11.71ID:R+BaZbTo
>>469
スレタイを読んでから
美しいお手本回答を見せてくれ
2019/03/03(日) 09:27:27.29ID:uQiZZFNH
>>472
イヤどす
2019/03/03(日) 09:36:06.45ID:R+BaZbTo
じゃあ
とりあえず
しゃぶれよ
2019/03/03(日) 10:06:47.90ID:uQiZZFNH
>>474
しゃぶるくらい別にいいけどさ
言っておくがそれセクハラだぞ
2019/03/03(日) 10:12:44.52ID:R+BaZbTo
>>475
いいんだw

「とりあえずしゃぶれよ」は5chのお約束ヤジの一つだわな
現実で言ったらたしかにやばいw
2019/03/03(日) 10:23:46.84ID:uQiZZFNH
>>476
確かにやばいw
が、別にいいんだぜ
2019/03/03(日) 10:26:05.53ID:R+BaZbTo
>>477
じゃあ
ケツ貸せよ は・・・? (・∀・)ドキドキ!
2019/03/03(日) 10:28:10.10ID:uQiZZFNH
>>478
それだけは断る!
断じてことわる!!
2019/03/03(日) 10:28:50.13ID:R+BaZbTo
>>479
だめかー
・・・・・・もしかして→ (´・ω・`)ぢぬし?
2019/03/03(日) 12:07:09.41ID:CoMPR6UA
>>471
ありがとう御座います
あれからn取得用入力ボックスを作って色々やっていたのですが、test_fanction内でn取得までできるのですか?乞食で申し訳ないのですが書き方を教えて貰っても大丈夫でしょうか?
2019/03/03(日) 12:41:36.16ID:CoMPR6UA
>>481
連投すいません
自分が考えた事はn取得ボックスsuを作って取得ボックスボタンを作り新しく
def suji_fauction(su):を作ってそこに最初と同じくボタンcommand=lambda:suji(su.get())でnをどうにかしてからtest_fanctionに持って行って取ったtxtからランダムn個抜き出すという事でしたが、どうにかするがどうにもならなかったです 見苦しい長文失礼しました
2019/03/03(日) 12:51:44.12ID:pC3Iiu0Z
入力されるデータが 1ならx = int(input())いけるんですが
1 1 1とかの時はx = input().split()で毎回使うときにint(x)するしかないのですか
2019/03/03(日) 13:12:36.69ID:R+BaZbTo
>>481-482
「ここにnを指定してるボックスからnを取得する命令を書け」の行に
インデントに注意して
n = su.get()
って書いて桶
2019/03/03(日) 13:13:49.16ID:R+BaZbTo
>>483
 >>420がイイ(・∀・)こといってるぞ
2019/03/03(日) 13:52:46.99ID:TIqzUsNF
>>420がどうでもイイ(・∀・)  >>422
2019/03/03(日) 13:53:53.23ID:CoMPR6UA
>>484
ありがとうございますできました
頭良いとこんなにあっさり簡単な書き方でやるんですね、、
2019/03/03(日) 14:01:22.48ID:R+BaZbTo
>>487
できてなにより

Tkinterの .get()についてのとことかもうちょいよくよんだほうがいいとおもうぞ
2019/03/03(日) 15:05:14.48ID:Mep2BbSH
>>488
defの使い方も怪しいので.get()と合わせて読んでみます
勉強させて頂きました
2019/03/03(日) 15:20:36.94ID:R+BaZbTo
>>489
はーい (・ω・)ノ
2019/03/03(日) 19:50:54.96ID:VNvwXmTw
ひろゆきもpythonやってるらしい。
2019/03/03(日) 19:51:23.37ID:TIqzUsNF
あいつにできるのかよw
2019/03/03(日) 20:12:32.61ID:dhbLYAZm
perlを相当使ってたみたいだからpythonくらい余裕でしょう
2019/03/03(日) 20:30:57.29ID:VNvwXmTw
>>492
三日で習得して、awsの履修証明賞もらったから相当覚えいいと思う。
2019/03/03(日) 20:42:59.22ID:gg9Mx1QB
>>492
恥ずかしくない?
496デフォルトの名無しさん
垢版 |
2019/03/04(月) 05:10:47.25ID:DAN4+o0x
せいぜいがんがれや
497デフォルトの名無しさん
垢版 |
2019/03/04(月) 15:35:02.66ID:OGwzbJO+
ハゲめ
2019/03/04(月) 17:34:27.74ID:BFAQ4JyJ
ひろゆきプログラミングについて語る
https://www.youtube.com/watch?v=sYWz_bIBVNw
2019/03/04(月) 18:12:43.10ID:56/Jbqfw
>>498
グロ
死ね
2019/03/04(月) 22:59:17.85ID:0UjSVc4r
ひろゆきにプログラミングできるのかよw
2019/03/04(月) 23:38:23.95ID:9d3FcJ2N
プログラミングでのし上がった奴だぞ
502デフォルトの名無しさん
垢版 |
2019/03/05(火) 03:28:01.72ID:VDry4yCP
スレチ
イタチ
2019/03/05(火) 04:21:05.92ID:6CrjVVG4
老害はとっとと犠牲にして差し上げて
504デフォルトの名無しさん
垢版 |
2019/03/05(火) 05:20:53.55ID:QbJvjFwd
>>497
北神雄太
505デフォルトの名無しさん
垢版 |
2019/03/05(火) 07:33:05.52ID:zhtHOsGL
質問です。
やりたいこと:画面上で動いたものの検知をしたい
ImageGrab.grab().save("frame_pre.png")
frame_pre = cv2.imread("frame_pre.png")
frame_pre = cv2.cvtColor(frame_pre, cv2.COLOR_RGB2GRAY)
while True:
ImageGrab.grab().save("frame_next.png")
frame_next = cv2.imread("frame_next.png")
frame_next = cv2.cvtColor(frame_next, cv2.COLOR_RGB2GRAY)
img_diff = cv2.absdiff(frame_next, frame_pre)
frame_pre = frame_next
という感じにしています。
ですがめちゃくちゃ遅いです。
ImageGrab.grab().save("frame_next.png")で何回も上書き保存しているからだと思いますが
他に方法はありますか?
2019/03/05(火) 07:35:00.11ID:Ok/9AxrB
よくhogeとか名前つけてる人がいますけどhogeって伝統的なものなんですか?
2019/03/05(火) 08:07:30.38ID:0SMIqw+w
>>506 そうだよ。 日本では hoge 英語だと、foo , bar が使われる。
https://dacelo.space/net/entry-662.html
2019/03/05(火) 09:13:58.12ID:DIrFqE8l
hoge fuga piyo
foo bar baz
2019/03/05(火) 09:52:58.71ID:BXQcWGGg
ホゲホゲ
2019/03/05(火) 10:04:27.98ID:BMXqmTyM
forループのときの「i」とか「j」はなんなんだよ
2019/03/05(火) 10:34:23.57ID:DIrFqE8l
文句は数学に言え
2019/03/05(火) 10:36:52.25ID:DIrFqE8l
それともI(愛)の前にHがある
じゃあI(愛)の次に来るJってなんだ?
ということか?
2019/03/05(火) 11:02:11.75ID:mnGOhC/5
慈愛かなんかじゃねぇの。
自慰とか
2019/03/05(火) 11:15:27.58ID:/6VFWsqW
>>505
案1. ファイルに書き出さないでBytes.ioを使う
案2. ファイルの書き出す先をRAMディスクにする
515デフォルトの名無しさん
垢版 |
2019/03/05(火) 11:57:14.36ID:HwCl8Q1J
>>505
ファイルじゃなくてメモリ上でやるのはもちろんだし

多少精度は落ちるが
画面をリサイズしてから比較する
予備的に処理入れて
引っかかったものだけ全体比較検査する
516デフォルトの名無しさん
垢版 |
2019/03/05(火) 11:59:44.40ID:HwCl8Q1J
>>512
愛JKだな
2019/03/05(火) 12:01:27.76ID:BXQcWGGg
そこに、LなMが
2019/03/05(火) 16:13:55.69ID:/w4kwDux
oとpするイテレーション
2019/03/05(火) 18:08:43.40ID:yUBkGE+g
文字からunicodeを取得したいのですが、うまく行きません。お助け下さい

文字列にdecode属性は無いと言われるのですが、何が問題なのでしょうか
https://i.imgur.com/XiX7for.png

参考にしたページは以下です
>>> 'いろは'.decode('utf-8')
u'\u3044\u308d\u306f'
https://qiita.com/megmogmog1965/items/e2f633ac445831568975
520デフォルトの名無しさん
垢版 |
2019/03/05(火) 18:21:59.46ID:Fbwgj3J5
pythonエンジニア認定試験とかいうのを受けるんやけどどうやって勉強しよう
模擬試験1個しかないし過去問に似たような問題とか落ちてないよなあ
2019/03/05(火) 18:31:55.02ID:7lWO2Eg6
>>519
組み込み関数のord()を使うのが正解
for x in "いろは" : print(hex(ord(x)))
で0x3044,0x308d,0x306fが取得できる
単にord(x)だと10進数のやつになる
2019/03/05(火) 18:32:57.79ID:fIhIM0AX
>>520
プログラミング言語の資格なんてクソの役にも立たないから、気楽に受ければいいよ
2019/03/05(火) 18:37:17.26ID:yUBkGE+g
>>521
ありがとうございます!できました!
524デフォルトの名無しさん
垢版 |
2019/03/05(火) 18:43:39.13ID:yG+1nA7g
>>514
>>515
ありがとうございます。メモリ上でというのが理想ですが
やり方がわかりません。もっと勉強してきます。
2019/03/05(火) 18:48:35.51ID:jEZ1EKzD
>>519 ‘いろは’ はstr だからだよ。
s = ‘いろは’
b = s.encode()
とバイト列などにすれば、
b.decode()は出来るよ。 ただ目的とは違うだろうけど。
UTF-8 はデフォルトだがら指定しなくて良い。
526デフォルトの名無しさん
垢版 |
2019/03/05(火) 19:39:23.62ID:xsrwNvaN
>>505
一度保存せずともnp.asarray()でgrabしたのをnumpy配列に変換できるからあとはOpenCVで処理できる
2019/03/05(火) 20:18:03.67ID:apIwEZzG
m = 1

x = 0.8

print(m,x,m-x)

↑こちらを実行すると 引き算が0.199・・となるんですけど
1 0.8 0.19999999999999996

変数に入れた通りの解答 0.2にするにはどうすればよいのでしょうか?
2019/03/05(火) 20:41:40.15ID:7lWO2Eg6
>>527
https://docs.python.org/ja/3/library/decimal.html
2019/03/05(火) 20:49:10.69ID:/6VFWsqW
>>524
ソースコード見る限りImageGrab.grab()がimageを返しそうだから
frame_pre = ImageGrab.grab()

frame_next = ImageGrab.grab()
として
saveの行とimreadの行を削除してみたらどう?
2019/03/05(火) 20:58:16.68ID:CbSwC66k
>>527 f文字列を使ったら?

print(x,y, f'{x-y:.1f}' )
# 小数点以下1桁表示
2019/03/05(火) 21:03:22.55ID:yUBkGE+g
"%s" % "foo"
この%ってprintfみたいな感じと思うのですが、
これはなんというのでしょうか?
2019/03/05(火) 21:11:42.23ID:/6VFWsqW
>>529

>>526の言う通りnp.asarrayでキャストしないとエラー出た
つまり

frame_pre = np.asarray(ImageGrab.grab())

とする
2019/03/05(火) 22:16:33.26ID:fIhIM0AX
>>531
廃棄物や老害とでも呼べばいいんじゃないかな
Python3で非推奨になった時代遅れの演算子だから今すぐに忘れなさい
2019/03/05(火) 22:40:50.70ID:apIwEZzG
>>528 奥が深いんですね 考慮しなきゃいけない事色々あって嵌りそう

>>530 当面f文字列で対応してみます

ありがとうございます!
2019/03/05(火) 22:43:50.05ID:yUBkGE+g
>>533
非推奨なんですね、ありがとうございます
536デフォルトの名無しさん
垢版 |
2019/03/05(火) 22:50:11.98ID:7Yqzn8cc
>>535
代わりにformat()使おうね
537デフォルトの名無しさん
垢版 |
2019/03/05(火) 23:09:19.30ID:gSGf6yDl
a = [d * 2 for d in 'abcde']
print(a)

abcdeを5こずつ表示とかってできますか?
2019/03/05(火) 23:23:03.46ID:eDzk8k/k
abcdeを5こずつ表示って
abcde abcde abcde abcde abcde
abcde abcde abcde abcde abcde
.....
と表示したいってことか?
539デフォルトの名無しさん
垢版 |
2019/03/06(水) 00:06:23.49ID:3F/qov+q
>>538
はいです
540デフォルトの名無しさん
垢版 |
2019/03/06(水) 00:10:06.28ID:XQpJaTFA
インタプリンタでこれ実行したらFalseなんですけど何をもってFalseと判断してるのか分かりません
(1,3,5) < (1,2,7)
2019/03/06(水) 00:10:39.87ID:R/1sU7PR
分岐のコメントってifの上か下、どちらが良いでしょうか

# 処理内容はxxx
if flg
# 処理内容はxxx
処理内容…
2019/03/06(水) 00:55:19.44ID:oR6mPeK7
>>540
そうですか
543デフォルトの名無しさん
垢版 |
2019/03/06(水) 00:56:10.88ID:3F/qov+q
>>540
falseになる理由を教えてください
2019/03/06(水) 00:59:18.54ID:PXi0ytZJ
>>543
前から順番に比較していって同じなら次を比較し、異なるならそこで結果を返す

この場合は3と2を比較して3 < 2 は False となる
545デフォルトの名無しさん
垢版 |
2019/03/06(水) 01:37:14.91ID:Wfp2djOX
>>540
(a,b,c) < (d,e,f) は a<d or b<e or c<f と同じ
2019/03/06(水) 02:12:47.95ID:ctS44w1M
お前ら嘘ばっか教えるんじゃないよ
(1,3,5) < (1,2,7)

135 < 127の比較、当然 135がデカいからFalse
>>540 絶対、信じろ
2019/03/06(水) 02:23:21.55ID:Uli2bEJM
>>537-539
Ruby なら文字列に、掛け算(*)演算子も定義されているから、これだけ

puts "abc" * 3
#=> abcabcabc
2019/03/06(水) 05:37:29.57ID:MPL4boGu
リスト内を小さい順に並び替えて行く処理を書いてみた。

https://ideone.com/iK3JYA

上記ソースをリスト内包表現で実現できそうで色々試したりしましたがうまく行きませんでした。
もしリスト内包表現で表現できるならどう書けばよいのかご提示宜しくお願いします。
2019/03/06(水) 05:37:46.06ID:A0Y4tMZt
>>545

>>> (1,3,5) < (1,2,7)
False
>>> 1<1 or 3<2 or 5<7
True

>>546

>>> (1,3,5) < (1,2,7,9)
False
>>> 135 < 1279
True
550デフォルトの名無しさん
垢版 |
2019/03/06(水) 07:42:57.04ID:3F/qov+q
>>544
>>545
>>549
ありがとうございます。
理解できました
2019/03/06(水) 08:25:20.58ID:bBth0ZZS
>>540 正式ドキュメントのチュートリアル 5.8に詳しく書いてある。
要素を最初から辞書的に1つずつ比較。片方の要素がなくなれば終わり。
適切な比較順序がない場合は、インタープリターは TypeError 例外を発生させます。

(1, 2, 3) < (1, 2, 4)
[1, 2, 3] < [1, 2, 4]
'ABC' < 'C' < 'Pascal' < 'Python'
(1, 2, 3, 4) < (1, 2, 4)
(1, 2) < (1, 2, -1)
(1, 2, 3) == (1.0, 2.0, 3.0)
(1, 2, ('aa', 'ab')) < (1, 2, ('abc', 'a'), 4)

(1,2,3)<(1,'2',4) は、エラーになる。
2019/03/06(水) 08:51:37.17ID:f/NWPYTA
>>547
死ね
2019/03/06(水) 11:29:05.92ID:R/1sU7PR
withってどういう時に使うのが良いでしょうか
明示的に「これを中心にしたブロックです」と言いたいということでしょうか
変数に入れるのではダメですか?
554デフォルトの名無しさん
垢版 |
2019/03/06(水) 12:44:10.04ID:qZuvgmSh
>>553
例えばファイルの読み書きの時
withを使うとブロックを抜けた時に自動でcloseされる
途中でエラーが出てもちゃんとcloseしてくれる

自前のクラスでも__enter__()と__exit__()を実装しておくとwithに入る時と出る時に呼び出されるので、前処理と後処理を忘れずにしたい時に使える
2019/03/06(水) 12:47:48.19ID:R/1sU7PR
>>554
ありがとうございます
これは便利ですね
556デフォルトの名無しさん
垢版 |
2019/03/06(水) 12:58:50.97ID:pP8e2GTT
>>> [print(f'u{ord(_):04x}') for _ in 'いろは']
u3044
u308d
u306f
[None, None, None]

>>> [print(f'{_:02x}') for _ in 'いろは'.encode('utf-8')]
e3
81
84
e3
82
8d
e3
81
af
[None, None, None, None, None, None, None, None, None]
2019/03/06(水) 16:16:53.92ID:w73Hgmg1
>>554
C#のusingと理解すればよき?
2019/03/06(水) 17:10:04.23ID:+4ROOaYr
>>556 _ って何を表してるんだろうと思ったら、_ 1文字でも変数名として使えるんだね。
こう言う使い方は良いね。
2019/03/06(水) 18:21:37.77ID:kGjUBYU2
>>537-539
import sys
d='abcde'
c=0
while 1:
  sys.stdout.write(d)
  c+=1
  if c % 5 == 0:
    sys.stdout.write('\n')
  else:
    sys.stdout.write(' ')
2019/03/06(水) 18:57:59.23ID:2Etc0l5z
>>559 何でそんなしち面倒臭いことするの? そもそもstdoutなんて必要ないだろ。 それに無限ループは絶対にダメ。
そんなことするくらいなら、それこそ

print(' abcde '*5, '\n ')
で済む話。 複数行にしたければお好きなだけループで回せば良い。
2019/03/06(水) 19:18:18.39ID:kGjUBYU2
>>560
printつかうと余計な改行はいるだろ
562デフォルトの名無しさん
垢版 |
2019/03/06(水) 19:22:31.40ID:nP+qIuYQ
print('abcde', end='')
とか
sys.stdout.write('abcde')
とか
面倒なのは許せ
2019/03/06(水) 19:24:34.96ID:2Etc0l5z
>>561 1つのprint で書けば済む話。
2019/03/06(水) 19:30:59.83ID:2Etc0l5z
>>562 ヘェ〜、勉強になる。

>>> print(1,end=''),print(2)
12
(None, None)

このNone はなんで出るの? なんなの?
2019/03/06(水) 19:36:11.71ID:b/S1njE3
>>564
「関数」というのは本来「なんらかの計算をして値を返すもの」
だからどんな関数も必ず何らかの値を返す 単に複数の処理をひとつにまとめただけで値を返す必要のないものでもな
printは画面に文字列を表示するだけのものなので本来は値を返す必要はないんだが
だからってわざわざ関数とは別の仕組みを作るのは面倒臭い
だから「None(値なし)を返す関数」という形式で実装されているわけだ
2019/03/06(水) 19:40:21.23ID:b/S1njE3
ちなみに一応「値を返す関数」と「値を返さない手続き」を別の枠組みとして扱っているプログラミング言語も存在する
VBAのFunctionとSubがそうだ
2019/03/06(水) 20:04:28.41ID:2Etc0l5z
勉強になるな。
下手な入門書より2chの方がためになることも多い。 まだ入門書も適当に読み飛ばしてる段階だけど。
2ch の記事は入門者のモチベーションを高めてくれる。
2019/03/06(水) 21:04:59.01ID:XsTs8xzo
ふーん
2019/03/06(水) 21:45:22.45ID:muSUG44X
>>371
Pydroid3
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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