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

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

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

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

前スレ
くだすれPython(超初心者用) その41【Ruby禁止】
http://mevius.5ch.net/test/read.cgi/tech/1549282930/


◆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/ ログイン必須になりやがった(゚Д゚#)
−−−−天麩羅ここまで−−−−
603デフォルトの名無しさん
垢版 |
2019/04/04(木) 16:42:46.14ID:evLvGSW5
>>597
わからぬい
2019/04/04(木) 17:15:21.70ID:ddTv14P9
質問なのですが、tkinterでコンボボックスをつくり、そのボックスにある選択肢をapple, beef, chickenとし、appleを選べば1、beefを選べば2、chickenを選べば3と表示するプログラムを書きたいのですが、どういったイベントを規定するコードを書けばいいか教えてもらえますか?
605デフォルトの名無しさん
垢版 |
2019/04/04(木) 17:51:36.17ID:AS0nQCUM
>>592
なんでもappend出来るがそれだと[1,2,3,[4,5]]になる
もし[1,2,3,4,5]にしたいならa.extend([4,5])
606デフォルトの名無しさん
垢版 |
2019/04/04(木) 19:32:05.03ID:evLvGSW5
idleって一画面に統合できないのですか?
2019/04/04(木) 19:54:03.78ID:WWWXQk49
>>606
idleはお遊び用のおまけ
不満を感じたらお前はもうVSCodeへ移行する時期だ
2019/04/04(木) 19:56:26.10ID:c7BBV/yp
pycharmだろ
2019/04/04(木) 20:13:41.38ID:4Of4T8i/
Jupyterだろ
2019/04/04(木) 21:17:59.94ID:bM0dXWpT
pyscripterだろ
2019/04/04(木) 21:52:32.61ID:1Q0DXPVq
pyscripterが一番好み
2019/04/05(金) 05:18:10.52ID:A+FAf1kt
実は俺も!
2019/04/05(金) 07:00:28.59ID:7aJ6EfcK
pycharmはコミュニティ版があるのがいいね
あれだけ高機能なIDEがただで使えるのはええわ
2019/04/05(金) 08:15:49.82ID:NlhXm2eb
言うほど高機能か?
Web開発ができなかったりとか機能削られまくってるしプラグインも使えない
所詮は客寄せの評価版だぞ
professional買うならともかく、community使うくらいなら断然vscodeのほうが上や
2019/04/05(金) 09:16:54.33ID:8ooHbZPM
anacondaの方がいいやろ
2019/04/05(金) 09:23:09.84ID:ZiUfxS77
は?
2019/04/05(金) 09:26:35.35ID:3zzzpIKb
Anacondaは互換環境にすぎないからな
2019/04/05(金) 10:02:15.88ID:oSs39RQY
ちなAnacondaはVSCode推奨
2019/04/05(金) 13:29:53.79ID:Cy9dd+PS
987654って数値があった時、特定の位の数値のみを取り出したいんだけど
文字に変換しないよい方法ってありませんか?
2019/04/05(金) 13:29:54.68ID:/JgPqvyr
globalでいっぱい宣言する時に長過ぎるから2行にするとエラーが出るんだけどどう直せばいいですか?

global a, b, c,
x, y, z

c,←コイツがsyntaxエラー
global a, b, c
global x, y, z
にするとダサい気がするから、globalを一つにまとめたい
2019/04/05(金) 13:42:25.86ID:oSs39RQY
>>619
右からn桁目を取り出したいなら
mod(floor(x/(10^(n-1))), 10)
2019/04/05(金) 13:46:28.27ID:Cy9dd+PS
>>621
ありがとうございます。
使わせていただきます。
2019/04/05(金) 14:08:23.58ID:/q9oyI1L
>>620
global a, b, c,¥
x, y, z
2019/04/05(金) 14:09:14.01ID:/q9oyI1L
↑文字化けしてるけど¥はバックスラッシュね
2019/04/05(金) 14:53:10.55ID:/JgPqvyr
>>624
ありがとう!
バックスラッシュの改行ってそんな使い方もできるのか
2019/04/05(金) 15:20:02.87ID:gjpR2cvs
>>621 なんか時間がかかりそうだな。
こっちの方がマシだろ。

a=9876543210
n=5
print(a//10**n%10)
# 5
2019/04/05(金) 15:24:50.63ID:oSs39RQY
>>626
あくまで数式を書いたまでだよ
どうPythonで実装するかは好きにしたらいい
2019/04/05(金) 16:53:57.54ID:2flhsj5Q
>>627

それを書くのがお前の仕事だろ
2019/04/05(金) 16:58:30.50ID:fBA+S4b3
>>621 それじゃフロートになってしまうだろ。 数字1桁を取り出したことにならない。
2019/04/05(金) 17:06:55.98ID:fBA+S4b3
>>621 そもそも ^ はPythonでは論理積だぞ。 べき乗なら ** 。 mod やfloor だって標準関数じゃないし。何言語を想定してるんだよ。 Python も動かせない奴が回答するなよ。
631デフォルトの名無しさん
垢版 |
2019/04/05(金) 17:40:25.90ID:G2NqkZ6v
てか、>>619程度の算数がわからんようではプログラミングなんてとても無理じゃないか?w
2019/04/05(金) 18:26:28.97ID:qQEc9QbG
>>631
そこはまあ超初心者用スレだから仕方ないんでない?
2019/04/05(金) 18:30:16.81ID:fBA+S4b3
>>622 お礼を言う方も言う方だよ。 どんな場所にいたか知らないが、このくらいは自分で確認すれば動かない事くらい解っただろうに。
世の中には詐欺師が沢山いるんだから、自分で確認したこと以外は信用するなよ。 特にプログラマーだったら。

出先の電車の中だってこんなのWebで確認できるんだから、そのくらいはいつもテスト出来るようにしてないと上達しないぞ。
2019/04/05(金) 18:53:56.17ID:GL7Lveyj
>>621

動かないんだが

https://i.imgur.com/iN599Jk.jpg
2019/04/05(金) 19:03:10.71ID:Cy9dd+PS
皆さん、アドバイスありがとうございます。

>>626こちらを使わせていただきます。
2019/04/05(金) 19:35:45.55ID:iDnb4MC+
intを文字列に変換する処理はCのレベルで走るだろうから
素直に文字列にしてインデックスでとったほうがいいんでない?
2019/04/05(金) 19:38:25.53ID:hemeotiD
Windows8.1にインストールしましたが
管理者権限じゃないとなぜかエディタが起動してくれません・・・
2019/04/05(金) 19:43:30.76ID:Cy9dd+PS
>>636
そうなんですか。文字に変換したほうが早いんですね。
2019/04/05(金) 19:51:53.85ID:TdKnQq4/
>>637
インストールはちゃんと管理者権限でやったんか
allusersあてにインストールできてるんか
記憶があいまいなら、一旦アンインストールして再インストール
2019/04/05(金) 19:53:58.14ID:fBA+S4b3
>>>>638 お前はアホか。 人の言う事を信じる前に何で自分で確認しないんだよ。
詐欺師を信用するな。
2019/04/05(金) 19:59:08.00ID:fBA+S4b3
>>638 プログラムで最も危険なことは、こう書けば動くだろうと言う先入観でプログラムを書き進めていくこと。

まずは疑問に思う事は一つ一つ自分で確認していくようにしないと何も作れないぞ。 大火事になる。

ところで何歳でどんな経験があって今Python をやろうとしてるんだ?
適性と言うのもあるから、やってることが正しいかどうか人の意見を聞いてみるのもいいかもよ。
2019/04/05(金) 20:00:49.55ID:Cy9dd+PS
ありがとうございます。
確認してみます。
2019/04/05(金) 20:03:48.88ID:zbJZTl/M
>>625
C言語由来の作法じゃないのかコレ
2019/04/05(金) 20:16:25.49ID:MEdBpv++
>>638
速くはないよ。
ただ、その差異が問題にならない箇所で、コードの意図を自然に明記に記述するためにあえて遅い方を選択することもある。
ケースバイケースだよ。
2019/04/05(金) 20:58:37.59ID:UI2qU3qP
>>643
C言語使ったことないから知らなかったよ
2019/04/06(土) 00:53:08.44ID:FcZeCs1O
>>634 >>621 の沢山の間違い。

1. mod , floor は、numpy をimport しなければならない。
import numpy as np
np.mod みたいに。

2. ^ は、**
3. n-1 は、n だろ。 Python ( 他の言語でも0から始まる) 流なら 0から始めるべき。
4. 全て修正しても結果が浮動小数点になり、 5.0 とか、9.0 になり、全く解答になっていない。
2019/04/06(土) 01:16:15.72ID:yyDZS6P1
>>621は正しいアルゴリズムを示した
>>626はそのPythonでの正しい実装を示した
質問者の疑問は解消した
他の連中は難癖付けて喚き散らしながら糞を垂れた
2019/04/06(土) 03:10:37.87ID:1moq2C1C
新しい糞をありがとう
649デフォルトの名無しさん
垢版 |
2019/04/06(土) 05:46:08.51ID:1pyrGwe+
変数とプロパティは同じと思っていいんですか
プロパティ=メンバ変数?
あ?
2019/04/06(土) 09:26:56.16ID:9IkbKopt
>>649
>プロパティ=メンバ変数?
そう

>変数とプロパティは同じと思っていいんですか
違う
クラス外の変数はただの変数
クラスの内部にあるのがメンバ変数

>あ?
な?
2019/04/06(土) 09:44:38.93ID:zBsOQwj6
@propertyってメソッドだよな
2019/04/06(土) 11:16:32.35ID:ABRVPIaD
あくまで数式を書いたまでだよ
どうPythonで実装するかは好きにしたらいい(震え声)
2019/04/06(土) 11:25:37.81ID:FcZeCs1O
>>652 アルゴリズムとしても間違ってるだろ。 プログラム板で、整数と浮動小数の区別もつけないアルゴリズムなんて全く存在価値はない。

問題はある桁を取り出せなんだから、整数1桁そのものでなければならない。 そもそもPython 板で動かない数式を示しても何の意味もない。
2019/04/06(土) 11:40:39.98ID:FcZeCs1O
print(str(100/10)+'1')
#10.01
655デフォルトの名無しさん
垢版 |
2019/04/06(土) 12:04:08.83ID:3J+kczjM
>>653
log10()を使って実装出来ませんかね
656デフォルトの名無しさん
垢版 |
2019/04/06(土) 12:10:21.22ID:1pyrGwe+
>>650
tonkatsu
2019/04/06(土) 12:58:46.94ID:hBfZV6UD
>>655 色んな方法でできるだろうけど、質問者は文字列操作をしないでやりたいと言う事はある程度スピードを意識してるんだろうから、関数なんて使ったら遅くなる。
文字列操作でも桁数が大きくなればそれほど遅くないと思うけどな。
2019/04/06(土) 13:42:02.27ID:2yA38LSH
>>626
これ(n-1)じゃなくてnそのまま使ってるせいで5桁目出そうとして6桁目出してないか?
2019/04/06(土) 13:56:01.15ID:hBfZV6UD
>>658 右端を0桁目としてるんだよ。 数字の通り。
大抵の言語では0からカウントするから妥当。 Python なら当たり前。
1桁目と言うのは10の位。 0桁目が1の位。
660デフォルトの名無しさん
垢版 |
2019/04/06(土) 14:04:35.86ID:LTLRiaot
スピードを意識するのにPythonなのか…
2019/04/06(土) 14:10:09.19ID:zww3IW8D
>>658
試してからレスしたら?
2019/04/06(土) 14:15:03.42ID:2yA38LSH
>>659
冗談だよね・・・?
2019/04/06(土) 15:39:31.28ID:t4iABxtY
>>662
右端を0桁目という言い方は日本語では誤解を生むから使いたくないがPythonらしい引数なら右端か左端を取り出す指定は0じゃないかね

hoge='abc'でhoge.__getitem__(0)がaなんだから

この辺りは定義の問題だから瑣末な問題かと思うよ
2019/04/06(土) 15:45:37.23ID:t4iABxtY
まぁでも自分の課題で勝手に右端を0桁目とかたわけた定義してきたら怒るな
間違いなくw
2019/04/06(土) 16:18:17.11ID:pqIY+ulC
自然言語が不自由な連中
2019/04/06(土) 16:18:51.83ID:7tGee9uO
>>664 そうか? >>626 でわざわざ誤解を招かないように、0〜9までの桁を作り回答まで出してて誰が誤解するんだろ? それが理解できなければ知らん。

ま、誤解した人もいた事実は認めるが。

日常言語とブログラム言語の世界は若干違いがある事は理解しながら話さないと折り合わないよ。 あやふやな日常言語で問題解決しようとしても、バグだらけになるのが落ち。
667デフォルトの名無しさん
垢版 |
2019/04/06(土) 16:23:38.52ID:1pyrGwe+
pythonで画像表示ッテできますか?
vs code使ってるんですが、コンソールでは表示できませんよね
2019/04/06(土) 16:39:24.00ID:t4iABxtY
>>667
画像ファイルの表示ならPillow, OpenCV, scikit-imageのどれかを使う
データの画像化とかならmatplotlib
動的に動かすとかならPyGame

VSCodeは単なるエディタでしかないので、別ウインドウが立ち上がる
669デフォルトの名無しさん
垢版 |
2019/04/06(土) 16:57:12.53ID:1pyrGwe+
↑なるほど vscodeに拡張でもないかとおもってましたが、別のソフトと関連付けるってことですかね
670デフォルトの名無しさん
垢版 |
2019/04/06(土) 17:21:49.20ID:1pyrGwe+
import numpy as np
import cv2

#画像の読み込み
img = imread('gimp_kun.png', cv2.IMREAD_GRAYSCALE)

opencvインストールしてこれを書いても別ウインドウ開かなかったんですが、何がだめなんでしょうか?
vscode使用です
実行すると自動的に起動するのかなとおもったんですが
2019/04/06(土) 17:34:48.67ID:qxcHWWFz
cv2.imshowとかで表示しないとだめ
672デフォルトの名無しさん
垢版 |
2019/04/06(土) 17:54:24.45ID:Mn11yHOy
>>619
「位の数」で桁の位置を指定すればいいんじゃないの
2019/04/06(土) 18:40:24.67ID:V8TVt+EN
>>669
グラフの表示や .ipynb のインポート/エクスポートだってできるぞ
今月のSoftware Design買って読むといい
674デフォルトの名無しさん
垢版 |
2019/04/06(土) 18:49:14.71ID:O+y/8osN
beautifulsoupスクレイピングで詰まったので質問です。
現在、フォーム内の複数のinputタグ(name=で区別されている)のvalueを取得するコードを書いているのですが
どのようにしてvalue値を取得すればいいのか分かりません
今抽出できているのはformのみで
<input name="hoge1" value="value1"/>
<input name="hoge2" value="value2"/>みたいな感じになっています。
これのvalue1のみを抽出したいです。
どなたかお助け下さい
2019/04/06(土) 19:01:38.28ID:H9qvhtnQ
>>669
別のソフトではない
Pythonのライブラリ
2019/04/06(土) 19:11:02.54ID:nnViyGGt
>>674
nameを条件に検索する場合はfindまたはfind_allのattrs引数を使え
2019/04/06(土) 19:29:26.69ID:HvitwzZ2
>>619です。
皆さん、ありがとうございます。
Pythonを熟知した方でも見解が分かれるほど難しい問題なのですね。
速度を自分で計測したら文字に変換した方が早いという意外な結果になってしまいました。
678デフォルトの名無しさん
垢版 |
2019/04/06(土) 19:31:14.07ID:1pyrGwe+
>>671
一瞬しか表示されないですが、なんとなくできました
679デフォルトの名無しさん
垢版 |
2019/04/06(土) 19:38:20.55ID:O+y/8osN
>>676
ありがとうございます。
findでclass_を指定する方法とかは見つかるんですがnameを指定する方法が見つからなくて困っている状況です。
hoge=soup.find('name="hoge1"')みたいに書いてname="hoge1"という文字列で判定させる感じなのでしょうか・・・
本当に分からないです、URLでもいいので教えてくれませんか
本当にごめんなさい
2019/04/06(土) 19:41:58.94ID:LtpcIU8C
>>674
input = soup.select("input[name = 'hoge1']")
value = input.attrs['value']

pythonは実はよく分からないのでこれで動くか自信がないけど、
要するに input タグで name = hoge1 という属性を持つ要素を特定し、その要素から value の値を取得。
681デフォルトの名無しさん
垢版 |
2019/04/06(土) 19:44:59.04ID:O+y/8osN
一応ここは見ましたがさっぱりでした
https://tdoc.info/beautifulsoup/
682デフォルトの名無しさん
垢版 |
2019/04/06(土) 19:54:50.79ID:O+y/8osN
>>680
1行目のコードで
[<input name="hoge1" value="value1"/>]
の抽出には成功しました。ありがとうございます。
2行目は
AttributeError: 'list' object has no attribute 'attrs'
でエラーでした。
リスト型がattrs使えない(?)ってことでしょうか
2019/04/06(土) 20:01:46.80ID:LtpcIU8C
>>682
select が返すのはリスト型なんだね。
for 文を使えばいいのかな。例示のhtmlコードだとリストの中身が一つだけになる。
684デフォルトの名無しさん
垢版 |
2019/04/06(土) 20:04:17.62ID:O+y/8osN
>>680
何度も質問すみません・・・
1行目の文なのですが、"input"のみでinputタグの指定を意味していて
その中にある[name='hoge1']で更に範囲を狭めているってことなんでしょうか
これは他の場合(例えば、type="hidden")でも同じような書き方が出来るってことですか?

さっきから連投でごめんなさい
685デフォルトの名無しさん
垢版 |
2019/04/06(土) 20:07:53.52ID:O+y/8osN
よっしゃあああああああああああああああああああああああああ
できましたs
さっきのコードでリストの何番目なのか([0])を指定してやっただけでいけました
本当にありがとうございます!!
2019/04/06(土) 20:08:25.24ID:gcTy2CwV
>>684
676だけど
人の話は正確に聞き取れよ
find(attrs={"name":"hoge1"})
のようにやれ
2019/04/06(土) 21:06:55.75ID:LXJztxYo
そんな早口で言われても
2019/04/06(土) 23:24:49.90ID:siKN8mZx
どういたしまして
2019/04/07(日) 00:17:29.91ID:mKsxK2JJ
Ruby, Nokogiri, Selenium WebDriver では、

doc = Nokogiri::HTML( driver.page_source )

element = doc.at_css 'input[name="hoge1"]'
puts element.get_attribute "value" # 属性
#=> value1

CSS Selector では、input[name="hoge1"]。
name 属性が"hoge1" である、input 要素

doc.at_css は、最初に見つかった、1つの要素で、
doc.css なら、配列が返ってくるように使い分けるため、要注意!

jQuery では、1つの要素の場合でも、常に配列が返るので、間違える事がない!

最初に、jQuery などで、CSS Selector を学ぶ必要がある。
それよりも複雑な指定は、XPath を使う
2019/04/07(日) 00:35:10.07ID:h90p5IeD
>>689
>>1
2019/04/07(日) 01:57:00.36ID:n+v7EzQs
while True:
....A()
....B()
....C()
....D()

自作関数ABCDがあります。
whileで無限ループしてるのですが
関数C内部で条件を満たした時のみ関数Bに戻りたいのですが
簡単に解決する方法ってありませんか?
2019/04/07(日) 02:07:18.80ID:n+v7EzQs
変数を用意して各関数が動作する条件をIF与える方法も考えたのですが、
一度作った関数を別の並び順で何度も再利用したいのでそれでは不都合が生じます。
2019/04/07(日) 04:53:49.79ID:b5J7R/uS
>>691
> 関数C内部で条件を満たした時のみ関数Bに戻りたい

「関数Cから関数Bに戻る」っていうのが分からない
例示のコードだと(条件云々以前にそもそも)そういうコール関係にはなっていないよね?

逆に、条件がどうあれ「関数Cから関数Bに戻る」って基本の動作をするように書いてみるところから始めてみては?
2019/04/07(日) 05:53:47.28ID:n+v7EzQs
>>693
関数ABCDは順番に繰り返され、無限ループします。
例えば関数ABCDの関数はランダムで1から100の乱数を生成します。
関数Cでた生成された乱数が90以上だった場合のみ
BにもどってBCD→Aと再び無限ループしたいのです。
そして、またCで生成された乱数が90以上だった場合はBに戻ってという感じでループしたいのです。
2019/04/07(日) 06:05:32.48ID:7vKlXtYN
何が言いたいのかよく分からんけど
普通にBCをループ文で囲って条件を満たしてる間はフラグ立て続けてDに進めないようにすればいいんじゃないの
696デフォルトの名無しさん
垢版 |
2019/04/07(日) 06:18:57.36ID:sScivHGl
C()が真偽値を返すとして
こういうこと?
while True:
....A()
....B()
....while C()
........B()
....D()
2019/04/07(日) 06:45:01.57ID:n+v7EzQs
ありがとうございます。
そんな感じのことがやりたかったのです。

これを発展させてABCDそれぞれの関数が条件を満たした時に
指定の関数からスタートする場合は簡単にはできないですかね。
2019/04/07(日) 06:57:09.06ID:+EGgTEY5
指定の関数ってなに
2019/04/07(日) 07:04:27.59ID:n+v7EzQs
関数ABCD順で無限ループしてるなかで

Aに飛んでA→B→C→Dループ
Bに飛んでB→C→D→Aループ
Cに飛んでC→D→A→Bループ

という感じです
2019/04/07(日) 07:28:08.82ID:n+v7EzQs
import.random
def A():
....a=random.randint(1,100)
....return A
def B():
....B=random.randint(1,100)
....return B
def C():
....c=random.randint(1,100)
....return C
def.D():
....d=random.randint(1,100)
....return D

while True:
....A()
....B()
....C()
....D()

関数ABCDをループするコードがある時に
Aが90を超えたらAに戻って再びループ
Bが90を超えたらAに戻って再びループ
Cが90を超えたらBに戻って再びループ
Dが90を超えたらCに戻って再びループ
これを無限に繰り返したいということです
2019/04/07(日) 08:12:43.08ID:aPMrZc41
説明へたくそがあらゆるスレに大量に沸いてるけど何かのキャンペーンなのか?
2019/04/07(日) 08:32:40.00ID:JkriCKoc
乱数の生成とそれ以外の部分を分ければいい
それが嫌なら各関数から次に実行する関数を返すようにすればいい
2019/04/07(日) 08:36:59.02ID:mKsxK2JJ
基本的に、次に実行する関数がコロコロ変わる場合には、決まった構造を取れないから、
次に実行する関数を、一旦、キューにでも入れた方が良いかも

OS のプロセススケジューラーは、まさにそう。
赤黒木で、次に実行するプロセスの順番を管理している
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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