くだすれ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/ ログイン必須になりやがった(゚Д゚#)
−−−−天麩羅ここまで−−−−
2デフォルトの名無しさん
垢版 |
2019/03/18(月) 18:27:30.56ID:SDOLD3fb
>>984
pygame
pyopengl
glut
3デフォルトの名無しさん
垢版 |
2019/03/18(月) 19:58:50.54ID:FHDCRg6t
exe化で出来る限り「静か」なバイナリ作れる方法が無いかな

py2exeは3.7に対応してないかライブラリの方が対応してなくて、試したけど作れなかった
pyinstallerはexe実行時にtempにフォルダ作って、終了時にフォルダだけ残るのが気になる
exeのある場所とか任意の場所にフォルダ作ってフォルダだけ残るのは別に構わないんだが、システム側にゴミを残したくない
4デフォルトの名無しさん
垢版 |
2019/03/18(月) 20:20:54.45ID:jiPExRTx
>>3
pyinstallerしおえたらいらないフォルダを消すバッチ作れ
5デフォルトの名無しさん
垢版 |
2019/03/18(月) 21:37:51.04ID:C9BGuQ42
<__main__.sample object at 0x00DF1D30>
selfをprintしたらこれが出てきたのですが、00DFみたいなのはメモリの場所なんですか?
6デフォルトの名無しさん
垢版 |
2019/03/18(月) 21:48:01.96ID:C9BGuQ42
結局selfはどういう用途に使うんですか

class myclass:
def myfunc(self,name):
self.name=name

↑これのself.nameの部分の意味と、使い方がわかりません
7デフォルトの名無しさん
垢版 |
2019/03/18(月) 22:00:55.16ID:tRH350wW
>>1
乙パイソン
2019/03/18(月) 22:06:59.61ID:jiPExRTx
>>6
おまえはいいかげんインデントをちゃんとしろ
前スレへ(・∀・)カエレ!!!
2019/03/18(月) 22:10:00.76ID:jiPExRTx
>>5
       ,-┐
 ,ィ─、ri´^-─- 、 .┌f^f^f^f^f^f^f^f^f^┐
く  / , ,'   ヽ ヽ| ~ ~ ~ ~ ~ ~ ~ ~ ~│
 `<' / ,'レイ+tVvヽ!ヽト 知ってるが  │
  !/ ,' i |' {] , [}|ヽリ  お前の態度が |
  `!_{ iハト、__iフ,ノリ,n   気に入らない |
   // (^~ ̄ ̄∃_ア____n_____|
 _r''‐〈  `´ア/トr──!,.--'
<_>─}、  `」レ
'ヽ、   ,.ヘーァtイ
   Y、.,___/  |.|
    |  i `ー'i´
2019/03/18(月) 22:18:09.43ID:FHDCRg6t
>>4
「exe化」をしたらフォルダが作られるのではなく
「exeを実行」したら毎回フォルダが作られるから困ってます
2019/03/18(月) 22:22:44.48ID:jiPExRTx
>>10
%temp%フォルダ内に?
それとも
exeがおいてあるフォルダに?
2019/03/18(月) 23:12:34.21ID:IuFF1Fl8
最近勉強始めたんだけどWEBに干渉するようなプログラムってまず何を書けばいいんだ?
2019/03/18(月) 23:14:08.18ID:jiPExRTx
>>12
まずなにがしたいんだ?
ブラウザを自動化したいのか
鯖をアタックしたいのか
まともに鯖をいじる作業を自動化したいのか
2019/03/19(火) 00:38:15.55ID:2dsGqa+T
Pythonが2018年も人気ナンバーワン言語に
https://www.softantenna.com/wp/software/ieee-spectrum-top-programming-languages-2018/
15デフォルトの名無しさん
垢版 |
2019/03/19(火) 00:41:33.52ID:qkjR1zK4
>>6

https://i.imgur.com/t8osvsu.jpg
1610
垢版 |
2019/03/19(火) 00:45:49.37ID:XVrNrTVD
>>11
前者
17デフォルトの名無しさん
垢版 |
2019/03/19(火) 05:36:06.26ID:sliXT30Z
>>15
ですからなんの用途に使うんですか selfというのは場所を表すのですか?
printしてみるとメモリの場所らしきメッセージが出ます
2019/03/19(火) 05:48:25.05ID:45LJYysD
>>17
myfunc は オブジェクトオリエンティド でいうところのメソッド
self.name は オブジェクトオリエンティド でいうところのプロパティ
self.X と書けば X はプロパティを示し、self はクラスのインスタンスを示す
以上に現れるキーワード「オブジェクトオリエンティド」「メソッド」「プロパティ」「クラス」「インスタンス」に心当たりがなければ、まずそれから調べてみてください.
19デフォルトの名無しさん
垢版 |
2019/03/19(火) 05:49:15.22ID:Z5Hgz40o
Pythonと言うよりオブジェクト志向では親クラスのメソッドを呼ぶ時super.xx()みたいにするから、
それ使った時に子クラス(現在のクラス)の同名のメソッドだと明示するためにthis.xx()とかself.xx()とかするね。


あとは >>15 みたいにフィールド(クラス変数)と同名のメソッド引数と分けるためにも使われる。
2019/03/19(火) 07:38:23.72ID:vriWYZh/
>>16
Freezeとかなんとかいうヤツ使ってexe作るのどうよ
21デフォルトの名無しさん
垢版 |
2019/03/19(火) 07:41:01.76ID:Gcgazy3G
>>6
YouTubeでProgramingWoopenのPython入門講座第16~21回の動画を見ろ。
22デフォルトの名無しさん
垢版 |
2019/03/19(火) 08:57:41.33ID:Z5Hgz40o
つーかPythonは動的言語だからself.name = で代入する事で宣言無しでフィールド生成されるんだった。
静的言語ばっかりだとうっかり忘れがち。。。
2019/03/19(火) 09:23:51.33ID:7p2/yAlP
Jupyter notebookで大きなループを一つのセルで回すのって無謀でしょうか?
大きなループを回したい時、便利な環境って何がありますでしょうか?
24デフォルトの名無しさん
垢版 |
2019/03/19(火) 10:12:32.34ID:cL/iV8oU
>>6
スコープとかnamespace は理解してる?
25デフォルトの名無しさん
垢版 |
2019/03/19(火) 11:11:48.70ID:A58YbFZJ
>>17

https://i.imgur.com/YrNeTWU.jpg
https://i.imgur.com/3cPymnb.jpg
2019/03/19(火) 11:15:51.69ID:g1OP6P5B
>>20
cx_freezeも試してみたけど3.7対応していない
27デフォルトの名無しさん
垢版 |
2019/03/19(火) 11:23:55.63ID:wwQ5Yjji
【中国は民族浄化、日本は】 10万円買ったら1万円没収、10月、自民にとっての邪魔者が浄化される
https://rosie.5ch.net/test/read.cgi/liveplus/1552961720/l50
28デフォルトの名無しさん
垢版 |
2019/03/19(火) 11:28:42.76ID:sliXT30Z
>>24
スコープは変数の有効範囲で
名前空間はクラスやモジュール(python.pyみたいなファイル)のことですよね
>>21
見てみました
selfを関数の引数に指定することでクラス内の関数をインスタンスの持ち物に出来るということですね
別にselfでなくともいいみたいですが、なぜそうなるのか意味がわかりません
そういう決まりなんだと言われればそれまでですが
2019/03/19(火) 12:40:41.62ID:I3ez8Qch
……ここまで分からんとすると、文学的な問題じゃあなかろうか
他者が自分自身を自称するときの一人称がselfだ
30デフォルトの名無しさん
垢版 |
2019/03/19(火) 12:51:35.83ID:Z5Hgz40o
>>28

class myclass:
def myfunc(my,str):
my.name = str

my.name = で初めてnameフィールドが作成される。
my無しだとただのローカル変数になり、myfuncを抜けたら消滅する。
(もちろん、フィールドnameは存在しないので、a = myclassしたあとa.nameとしたらエラーになる)
2019/03/19(火) 13:20:43.07ID:SqXQzXb0
pythonってインスタンス作成時にプロパティは作成されないの?
プロパティにアクセスした時に初めてメモリが確保されるの?
32デフォルトの名無しさん
垢版 |
2019/03/19(火) 13:34:21.37ID:Z5Hgz40o
そう言う事。

そして、もう少し調べたら__init__定義したら、メソッド呼出ではself省略できるっぽい。
(それだけでなく、nameの扱い自体もクラスフィールドとインスタンスフィールドという動作の違いも確認できた)

プロパティはフィールドとメソッドを関連ずけて、フィールドっぽい扱いで安全に運用するものなので別物。
私もPython初心者なのに、何であんたより詳しくなってるんだ。。。

class Myclass:
def __init__(my):
pass
def myfunc(my,str):
my.name = str

a = Myclass()
a.myfunc("taro")
b = Myclass()
b.myfunc("jiro")
print(a.name)
print(b.name)
2019/03/19(火) 13:59:12.91ID:SqXQzXb0
>>32
マジか、ありがとう
vbaみたいだぁ・・・
(vbaはもうちょい変で、インスタンス作成時ではなくプロパティにアクセスした時に初めてメモリが確保される)
34デフォルトの名無しさん
垢版 |
2019/03/19(火) 14:04:53.09ID:A58YbFZJ
>>32

https://i.imgur.com/DA6Szdu.jpg
35デフォルトの名無しさん
垢版 |
2019/03/19(火) 14:10:15.96ID:A58YbFZJ
Self 省略してない件

https://i.imgur.com/3LI5sKi.jpg
36デフォルトの名無しさん
垢版 |
2019/03/19(火) 14:26:25.80ID:A58YbFZJ
>>32

_init_ 定義は 何の関係もないな


https://i.imgur.com/dXfQVzo.jpg
37デフォルトの名無しさん
垢版 |
2019/03/19(火) 14:30:00.14ID:A58YbFZJ
myを self に
結果は同じ

https://i.imgur.com/tZxLnMM.jpg
38デフォルトの名無しさん
垢版 |
2019/03/19(火) 14:31:38.83ID:A58YbFZJ
Self 省略したら、このざま

https://i.imgur.com/8jijwQV.jpg
39デフォルトの名無しさん
垢版 |
2019/03/19(火) 14:34:55.30ID:A58YbFZJ
_init_ 復活させても駄目なものは駄目

「__init__定義したら、メソッド呼出ではself省略できるっぽい。」

は大嘘


https://i.imgur.com/Ss7xM4i.jpg
40デフォルトの名無しさん
垢版 |
2019/03/19(火) 14:38:29.26ID:A58YbFZJ
My で揃えても無駄

https://i.imgur.com/r43Dibx.jpg
41デフォルトの名無しさん
垢版 |
2019/03/19(火) 14:42:10.59ID:A58YbFZJ
当然、self でも無駄

「__init__定義したら、メソッド呼出ではself省略できるっぽい。」

は大嘘。
__init__定義しようが、メソッドでself 省略したらエラーですわ。

https://i.imgur.com/EAj5SUq.jpg
42デフォルトの名無しさん
垢版 |
2019/03/19(火) 14:53:47.13ID:Z5Hgz40o
>>41
「呼出では」って書いてるだろ。
定義の方は書かないとダメ。
43デフォルトの名無しさん
垢版 |
2019/03/19(火) 15:15:18.87ID:A58YbFZJ
呼び出しでself 書いたらエラーですが

「__init__定義したら、メソッド呼出ではself省略できるっぽい。」

は大嘘。
むしろ、省略しなければならない。

https://i.imgur.com/VnURXPt.jpg
2019/03/19(火) 15:40:09.68ID:QeSFtlHj
「しなければならない」のに省「略」とはこれいかに
45デフォルトの名無しさん
垢版 |
2019/03/19(火) 15:42:44.11ID:Z5Hgz40o
初心者いじめ楽しい?

>>32 の通り、私も初心者なんですが。
逆に__init__でa.myfunc(a,"taro")がエラーになる理由を教えて欲しいくらいだ。
(別に知らなくても書く上で困らないが)
2019/03/19(火) 16:01:05.13ID:vriWYZh/
>>26

それは失礼した

pyinstallerでonefileおぷしょんつかわないでexe等を生成→配るときは何か別のインストーラ使う
でやるしかないのかー
2019/03/19(火) 16:01:42.71ID:vriWYZh/
>>23
問題は途中でどんだけメモリ食うかだけなんじゃ
48デフォルトの名無しさん
垢版 |
2019/03/19(火) 16:05:16.66ID:26aHKGbn
>>45

君の場合、Python初心者とかの問題じゃなくて、日本語初心者なんだよね…

変な日本語使わなくていいから、コードだけで語ってくれ
49デフォルトの名無しさん
垢版 |
2019/03/19(火) 16:17:56.81ID:Z5Hgz40o
検証不足なだけなのを日本語初心者扱い。。。
50デフォルトの名無しさん
垢版 |
2019/03/19(火) 16:27:12.81ID:XMTv5SE6
>>49
検証なら他所でやってくれ
迷惑でしかない
51デフォルトの名無しさん
垢版 |
2019/03/19(火) 16:34:33.33ID:Z5Hgz40o
それは悪かったけど、訂正を求めるなら他にやりようあったよね。
__init__付けるとa.myfunc(a,"taro")はエラーになるから、省略じゃ無いって指摘すれば「ごめん」で済んだのに。

エラーが出るエラーが出るって病的に繰り返すだけってのもどうかと思うよ?

スレの無駄だからロムるね。
じゃあの。
52デフォルトの名無しさん
垢版 |
2019/03/19(火) 16:48:51.60ID:+2Cq/+iw
覗いてみたら一問一答どころか初心者虐めしてて闇感じた
学校教師かよw
53デフォルトの名無しさん
垢版 |
2019/03/19(火) 16:54:08.63ID:xdTah2Z6
>>32
>私もPython初心者なのに、何であんたより詳しくなってるんだ。。。




鼻膨らませてこんなこと書くから
2019/03/19(火) 17:59:14.56ID:7p2/yAlP
>>47
メモリはそんなに食わないと思いますが、

現在:セル100個くらいに書いている
やりたいこと:現在のセル100個をセル1個に入れて、forで回す

やりたいことが増えてネストが深くなるたびに、毎回この作業が必要になるのかなと
2019/03/19(火) 18:08:45.31ID:vriWYZh/
>>54
まず
Python全般の考え方として
深すぎるネストがあるソースはうんこスパゲティである
「python ネスト 減らす」でggr

いろんなことをやるときは
1作業グループ(自然言語で言う章づけと段落づけに似ている)毎に1つのクラスにまとめれこのへん↓嫁
tps://myenigma.hatenablog.com/entry/2017/10/23/091932
56デフォルトの名無しさん
垢版 |
2019/03/19(火) 18:11:13.54ID:sliXT30Z
pythonって12345みたいなループ表示はできないんですか?
別にリストを作らないとだめなんですか?
57デフォルトの名無しさん
垢版 |
2019/03/19(火) 18:17:41.24ID:sliXT30Z
ごめんぬさい解決です
2019/03/19(火) 18:20:12.22ID:vriWYZh/
>>55
推敲途中で書き込まれてしまった
最後から2行目の語順がカオスになってるが
まあうまいこと察してチャン
59デフォルトの名無しさん
垢版 |
2019/03/19(火) 18:29:04.69ID:sliXT30Z
sample.pyみたいなファイルがモジュールと考えていいのですか?
2019/03/19(火) 18:59:11.58ID:AStHbDSu
>>17
>printしてみるとメモリの場所らしきメッセージが出ます
そうだよ

https://ideone.com/k9fBq9
https://docs.python.org/ja/3.6/library/functions.html#id
2019/03/19(火) 19:01:42.61ID:AStHbDSu
>>59
> sample.pyみたいなファイルがモジュールと考えていいのですか?
そうだよ

"モジュールは Python の定義や文が入ったファイルです。ファイル名はモジュール名に接尾語 .py がついたものになります。"
https://docs.python.org/ja/3.6/tutorial/modules.html
62デフォルトの名無しさん
垢版 |
2019/03/19(火) 19:13:43.69ID:sliXT30Z
メンバ変数に
self.nameみたいにつけるのは、単なるルールってことですか?
メンバ変数作るときのルール?
2019/03/19(火) 19:28:33.28ID:AStHbDSu
>>62
関数からはインスタンスオブジェクト(メソッド、変数)がスコープ外だから、そのままだとアクセスできない
Pythonではクラス内で定義される関数の第一引数にインスタンス自身(self)を渡すことによりアクセスできるようにしている
↓みれ
https://docs.python.org/ja/3.6/tutorial/classes.html#classes
64デフォルトの名無しさん
垢版 |
2019/03/19(火) 19:28:54.41ID:oLwbVC8A
>>62
付けなきゃローカル変数になってメソッド抜けると消える
65デフォルトの名無しさん
垢版 |
2019/03/19(火) 19:40:40.10ID:sliXT30Z
>>63
>>64
ありがとうごじあます
リンク先よみます
66デフォルトの名無しさん
垢版 |
2019/03/19(火) 20:15:28.53ID:sliXT30Z
>>63
インスタンス自身がself引数に渡されるといいますが、
instance変数の部分がインスタンス自身と考えていいんでしょうか
確認方法がわかりませんでした
http://codepad.org/qut7yC7c
67デフォルトの名無しさん
垢版 |
2019/03/19(火) 20:15:40.20ID:sliXT30Z
class Test():
def __init__(self,var):
self.var=var
def func(self):
print(self.var)
instance = Test("aaa")
instance.func()
2019/03/19(火) 20:24:24.48ID:AStHbDSu
>>66
>>60
2019/03/19(火) 20:31:38.14ID:AStHbDSu
>>54
キューでもスタックでもいいから何か適した探索アルゴリズムあるかもしれない
2019/03/19(火) 21:49:37.60ID:A/UmZGKk
指定桁の整数部分で切り捨てるにはどうすればいいですか?
roundの四捨五入じゃなくて、切り捨てです。
n = 456.789
round(n, -1)
>>460
1の位を切り捨てて、450にしたいです。
2019/03/19(火) 22:13:26.97ID:A/UmZGKk
re.subの正規表現で置き換えしたらできたんですが、
切り捨てのようななモジュールはないでしょうか?
72デフォルトの名無しさん
垢版 |
2019/03/19(火) 22:16:01.91ID:oLwbVC8A
>>70
import math
math.floor(n/10)*10
2019/03/19(火) 22:44:30.22ID:KlvkKTYB
Ruby ではクラス直下では、self(this)は、クラスを指す。
一方、initialize 内では、new で呼ばれた各インスタンスを指す

class Cat
p self #=> Cat クラス

def initialize( name, weight )
@name = name
@weight = weight
p self #=> 各インスタンス
end
end

bob = Cat.new( "bob", 5 )
alice = Cat.new( "alice", 4 )

出力
Cat
#<Cat: @name="bob", @weight=5>
#<Cat: @name="alice", @weight=4>

オブジェクト指向をわかっていない人には、Python は無理

まず、Rubyでオブジェクト指向・関数型を学んでから、
Python, JavaScript, Kotlin などをやらないと無理
2019/03/19(火) 22:53:59.42ID:A/UmZGKk
>>72
おぉー、ありがとう
floorが検索に出てきても少数切捨ての話だけで整数の話はなかったのに、
10で割って掛ける。すごい全然思いつかなかった
2019/03/19(火) 23:36:11.27ID:gx/b6f7p
>>73
死ね
2019/03/20(水) 00:13:24.71ID:6ln9W50J
>73
rubyは言語の発想としては悪くないんだけど、今やもう未来がなさすぎる
最近はもうオブジェクト指向を無理にやらんでも良いって流れにもなってきてるしな
7773
垢版 |
2019/03/20(水) 00:49:00.11ID:RdYQnT9u
Pythonの文法を学ぶというのと、
オブジェクト指向・関数型を学ぶというのは、まったく次元が違う話

アルゴリズムなどもそう。
Pythonの文法とは無関係だから、Rubyで学ぶ

だから初心者は、Rubyから始めろって言われるわけ

Ruby以外の言語では、JavaScriptのprototype など、
その言語特有のトリックに惑わされるために、まともに学べない

Pythonでは、アンダーバー(_)で始まる変数名などの、トリックを使っているし、ややこしい

Rubyはオワコンと言われているけど、人気がすごい!
図書館でも、すべての本が貸出中
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。