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

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

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

★Pythonのソースコードはそのまま5ちゃんにコピペするとインデントが崩れるので
  ↓等のてきとうなソースコード用うpろだに貼ってきてください。
  スクショをImgur等にう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(超初心者用) その45【Ruby禁止】
https://mevius.5ch.net/test/read.cgi/tech/1571188632/
701デフォルトの名無しさん
垢版 |
2020/02/16(日) 12:26:02.52ID:uPTaqoVN
雑魚はせめてリーダブルコードでも読んでからコメントして
2020/02/16(日) 12:37:40.11ID:KXHJAKTO
>>701
それな
2020/02/16(日) 13:00:47.06ID:17VZ7Cpd
「最善の名前とは読み手が誤解を招かないこと」って書いてないか?
704688
垢版 |
2020/02/16(日) 13:04:49.24ID:S0ZkinLG
ローカル変数名ですけど

例えば名古屋から広島の距離を計算するとして

def kyori(nagoya,hirosima)
___length = nagoya-hirosima
___return length


#東京からの距離
tokyo = 0
nagoya = 350
kyoto = 457
hirosima = 768

length = kyori()

っていう感じですけど
意味があって分かり易いだと
一文字だと長さはまだlで分かり易いと思うんですが
defが増えていくったときに
それぞれのdef内でもまだ個性的な名前を付けた方がいいのですか???

length_kyoto_hirosimaとか???
2020/02/16(日) 13:13:22.41ID:xJ91WGrf
>>704
やたら気にするけどどうしたの
仕事なら職場やプロジェクトのコーディングルールに従えばいいし
個人の趣味なら自分がわかりやすければそれでいいのよ
2020/02/16(日) 13:19:18.43ID:vdOGaRiC
>>704
まあ気持ちはわからないでもないが、慣れてくるとそのへんは問題にならなくなるから現時点でそんなに気にしなくていい
はっきり言って、同じものを多数の関数に引き回していること自体がヘタクソ
それを回避する方法は「こうすればいい」と教科書的に言えるものではなく設計センスの問題で、君にも自然にわかってくる
2020/02/16(日) 13:24:20.27ID:17VZ7Cpd
>>704
そのdefのはっそうは、正直よろしくないとおもう。

使いまわせないだろw

def kyori(from, to):
にすれば、使いまわせるだろw

でもって、
引数のあとの「:」を忘れるな

(PEPにも書かれてるらしいが)
1ミクロンでも他人に見せる予定があるコードならば、
「kyori」はやめて、和英辞書を引いて、distanceをチョイス。
さらにいえば、
距離を計算する函数なのだから
「def calc_distance」みたいな名前にしよう。
2020/02/16(日) 13:26:21.56ID:17VZ7Cpd
>>707修正
よろしくない: from, to
モアベター: from_point, to_point あるいは from_city, to_city とかとか
2020/02/16(日) 14:30:21.73ID:iNVxJNOu
関数定義や関数のことを`def`って呼ぶのちょっとモヤるんだけど一般的なのかな?

>defが増えていくったときに
>それぞれのdef内でも
>そのdefのはっそうは、正直よろしくないとおもう。
2020/02/16(日) 14:33:43.62ID:E60C1LrQ
namedtuppleのクラス継承って3.5.3じゃ無理なのですか?
無理ならバージョン何からできます?
2020/02/16(日) 14:46:40.85ID:Rlzwkt+8
>>709
pythonスレならまあわかるでしょ
ってレベルかと
2020/02/16(日) 15:03:54.06ID:17VZ7Cpd
>>709
なるほど
函数定義って言えばいいのか
なるほどなっとく

口語でdefの〜みたいに教えられて
正式名称しらなんだ感。
たぶん704もそうなんじゃないかと、エスパーしてみる。
2020/02/16(日) 15:08:15.16ID:17VZ7Cpd
>>710
綴りちがっとる
×tupple
〇tuple

from typing import NamedTupleがイケるのが3.6.1からなので、
たぶんそのへんからナンジャネーノ(適当)
714688
垢版 |
2020/02/16(日) 16:38:20.27ID:S0ZkinLG
>>705
趣味でやってるんですが
ほぼほぼ作ったのが後々改造できなくて
投げ捨てるはめになってるので
何とかしたくてって感じです

>>706
趣味なので自然と身につかないのです・・・

>>707
具体例ありがとうございます
気を付けます
2020/02/16(日) 16:53:49.03ID:17VZ7Cpd
>>714
> ほぼほぼ作ったのが後々改造できなくて
> 投げ捨てるはめになってる
www
わかるwwwww始めたばっかりの頃のあるあるwwwwwわかるwwwww


オライリーの
リーダブルコード
  ISBN-10: 4873115655
  ISBN-13: 978-4873115658
(あるいは
ビューティフルコード
  ISBN-10: 4873113636
  ISBN-13: 978-4873113630 )

買って読んでみたらー
中古でも安くなってないだけのことはあるでよー
2020/02/16(日) 17:07:16.29ID:05WBirzM
オブジェクトがコピーなのか現物なのか、調べるにはどうすればよいですか。または全て現物で渡すには?

1. クラスの初期化時に引数として渡してselfに格納
2.クラスのgetterメソッド返り値としてselfの値を返却する
3.手順2で得られた値を演算したものをクラスのsetterメソッド引数として渡してselfに再格納

1〜3まで全て現物でいてほしいのですが、どこかでコピーになってしまうようで同期しません。
2020/02/16(日) 17:11:30.05ID:05WBirzM
716、自分でも分かりにくいので追記です、

e = 1
a = Class1(e)
b = Class2(e)

tmp = a.getE()
tmp += 1
a.setE(tmp)

b.print()

このprintの結果が、2となって欲しいのです。
2020/02/16(日) 17:18:43.25ID:17VZ7Cpd
>>716-717
書き込む前に>>1

>オブジェクトがコピーなのか現物なのか、調べるには
id(オブジェクト)
↑これがオリジナルとコピーでは異なるので確認汁
2020/02/16(日) 17:44:48.94ID:05WBirzM
>>718
ありがとうございます。
原因わかりました。
716で書いてるeが実際はイミュータブルだったので、書き換える際にreplace呼んでid変わってたみたいです。
eを自作クラスに変えたら動きました。ありがとう
720デフォルトの名無しさん
垢版 |
2020/02/16(日) 19:45:43.91ID:w90VPIvZ
リーダブルコードでググったら英語版はタダで見れるのか
苦Cみたいなもんか?
721688
垢版 |
2020/02/16(日) 19:51:59.66ID:S0ZkinLG
>>715
調べてみます
ありがとうございます
722デフォルトの名無しさん
垢版 |
2020/02/16(日) 20:00:33.27ID:S0ZkinLG
このクラスの########から########の間を
書き換えて別の子クラスを作る方法を教えてもらえませんか?
リターンはなくて条件によってどんどんpを書き換えていく感じの内容です

class coner:
__def __init__(self):
____self.angle = 0.0
____self.width = 0.0
#以下self.が沢山

__def tijimi(self):
#####################################
____if 0 <= self.angle < math.pi/3:
______#計算式色々
______p = l

____if self.angle == 0 :
______#計算式色々
______p=l
____#以下ifでangleを調べてpを上書きしていくif分沢山
#####################################################

____if self.width == 50:
______#計算式色々
______p=l
____if self.width == 80:
______#計算式色々
______p=l
2020/02/16(日) 20:56:22.89ID:05WBirzM
class tijimi(coner)作ってsuperのinit呼んだ後にif文羅列じゃ駄目なの?
2020/02/16(日) 21:14:42.57ID:iNVxJNOu
>>722
>書き換えて別の子クラスを作る方法
継承してオーバーライドすること言ってるのかな?

それと
条件によってpをどんどん書き換えていくような仕様は
一般的にはものすごく悪い設計
バグりやすいしテストもしにくいので避けたほうがいい
2020/02/16(日) 21:47:49.06ID:17VZ7Cpd
>>720
>英語版はタダで見れる
なん・・・だと・・・・

まあいいや
日本語版書籍には訳者によるおまけがついてるらしいから・・・
726722
垢版 |
2020/02/16(日) 22:05:37.52ID:S0ZkinLG
>>724
たぶん、継承オーバーライドの事だと思います
よくわかってなくてすいません
pを書き換えていくのを直します
ありがとうございます

>>723
ありがとうございます
やってみます
2020/02/16(日) 22:59:10.36ID:5EL9p8ON
Ruby なら、B はA から派生したクラスで、
派生クラスで、親クラスの同名のメソッドを上書きする(override)。
@ はインスタンス変数

class A
def f( ) @x = 1 end
end

class B < A
def f( ) @x = 2 end
end

p A.new.f #=> 1
p B.new.f #=> 2
2020/02/17(月) 00:33:34.29ID:VGvKWI+b
リーダブルコードもコードコンプリートも読んだ上で700書いてるけどねえ
PEP8とかもそうだけど、知恵とルールを混同してしまう人が結構いる
2020/02/17(月) 02:53:30.28ID:DyKTwZyk
お前にはその両方が足りていない
730デフォルトの名無しさん
垢版 |
2020/02/17(月) 05:56:39.51ID:9Byn+CCQ
アンカも打てないのかよ
いちいち自分で辿らせるとかどんだけ構って欲しいんだ
2020/02/17(月) 07:12:48.06ID:a4xzah5x
>>727
endとか90年代かよダッサ無駄な記述乙
732デフォルトの名無しさん
垢版 |
2020/02/17(月) 07:47:39.40ID:wxeqwMT5
裏表紙のない本
ドアのないトイレ
キャップのないペットボトル
733デフォルトの名無しさん
垢版 |
2020/02/17(月) 11:57:31.26ID:xV6ZEvHF
Macなんですが元々入ってるPython2系をpython2で呼び出して
Python3系をpythonコマンドで呼び出す方法ってありませんか?
alias python="python3"
を設定してもpython2が使えなくなる代替案を探してる最中です
734デフォルトの名無しさん
垢版 |
2020/02/17(月) 12:37:38.00ID:m/x7HUx7
>>729
読んであれならヤバイ級だよなあ
735デフォルトの名無しさん
垢版 |
2020/02/17(月) 12:38:09.76ID:m/x7HUx7
エイリアスにフルパス入れちまえよ
736デフォルトの名無しさん
垢版 |
2020/02/17(月) 12:53:44.11ID:xV6ZEvHF
>>735
エイリアスで置き換えすることばかり考えてました、ありがとうございます
m(_ _)m
2020/02/17(月) 13:05:59.25ID:sUzH4s3p
>>731
トイレを使って水を流さない犯人を見つけた
2020/02/17(月) 13:31:47.59ID:y136Nw0W
>>733
pipだったり他のプログラムが使ってるpythonの依存ぶっ壊れるようなやり方すぎる。
dockeで隔離するか、pyenv, anaconda 使うなりする方が問題起きたときに復帰しやすいと思われる。
2020/02/17(月) 15:10:44.14ID:wzCOK5rA
>>733
ln -s /usr/bin/python /usr/local/bin/python2
ln -s /usr/local/bin/python3 /usr/local/bin/python
2020/02/17(月) 15:56:50.96ID:y136Nw0W
完全に環境ぶっ壊しにかかってんな。。カスだな。
741デフォルトの名無しさん
垢版 |
2020/02/17(月) 17:29:32.07ID:91EB+qlc
>>737
Rubyはスレチだから
2020/02/17(月) 19:14:02.33ID:A9t7x7q2
デフォルトの設定を変えたら、それを使っている無数のアプリがバグルw

OS の仕組みを学べ!
743デフォルトの名無しさん
垢版 |
2020/02/17(月) 20:02:52.96ID:4yysNtzR
呼ぶときはPython2ならpythonで、Python3はpyで呼べるようになってるだろ
方針としてpythonで呼ばれるのはPython2のままにするっていうのがあるし
2020/02/17(月) 20:03:49.54ID:4njBz49B
$ pip3 --version
bash: /home/xxx/.local/bin/pip3: そのようなファイルやディレクトリはありません
$ which pip3
/usr/bin/pip3

以下のページ通りにやったら直った

パッケージ更新インストール後にコマンドが実行できない場合の対処
https://qiita.com/vmmhypervisor/items/e846338b204061040957
2020/02/17(月) 21:27:41.44ID:EJ6dkZYZ
Python記事まとめ(毎日自動更新)
https://qiita.com/kamata1729/items/eaf1d7b945b3a61a4fdd
Qiita週間ストック数ランキング【自動更新】
https://qiita.com/kai_kou/items/180a91fd88dbbbd746f6
746デフォルトの名無しさん
垢版 |
2020/02/18(火) 00:00:11.54ID:o6M8r8f5
import numpy as np
a = np.array([1,2,3])
print(a.shape)

こうやると、
(3,)
と表示されますけど
この3の後ろにあるカンマは
どゆ意味なんでしょう?
不必要としか思えないのですが?
2020/02/18(火) 00:10:14.62ID:ObTpNy6/
tuple
同じ型が返されることに意味がある
(3,)と(3)で型を比べてみればいい
748デフォルトの名無しさん
垢版 |
2020/02/18(火) 00:17:31.22ID:o6M8r8f5
>>747
ありがとうございます。
型を比べると(3)はint、(3,)はtupleですね。
np.arrayのshapeをtuple型の同じ型にする、
ということですね?
749デフォルトの名無しさん
垢版 |
2020/02/18(火) 13:43:57.54ID:ZbgU3Gim
全然違うω
2020/02/18(火) 13:54:29.04ID:2AC9Ct1n
>np.arrayのshapeをtuple型の同じ型にする、
>ということですね?
日本語がおかしい、もしくは理解の仕方がおかしい。
「np.array の shape を print で確認したら、tuple 型で (3,) だった。」
くらいは書いてほしい。
751デフォルトの名無しさん
垢版 |
2020/02/18(火) 17:44:44.88ID:NpZig/vi
>>748
何が言いたいのかよくわからない
何と何が同じなの?
2020/02/18(火) 20:55:10.51ID:EFQS+VhN
新しいノートパソコン買ったけど使ってるやつpipして入れていくの面倒だな
2020/02/18(火) 22:11:49.35ID:kXXzWqPh
>>752
現行このスレの上の方か、前スレで
pipで既に入ってるものを全部txtに吐かせて
それを新しいPCにコピーして
新しいPCのコマンドプロンプトからpipに食べさせる方法レスした記憶
2020/02/18(火) 22:25:08.60ID:Sq+szhyd
>>752
コマンドをバッチファイルに記録しておくのおすすめ
何を入れたのかの備忘録にもなるし、クリーンインストール後にも一気に復帰可能
2020/02/18(火) 22:27:06.73ID:I7Q3zK/c
あーそういやエクセルにpip一覧作ってコピペって入れてたな
あれバッチにすればよかったのか!
2020/02/19(水) 00:22:18.64ID:67Zh1tMt
>>753で書いてた過去のレスの、要約したったど

てきとうな階層でコマンドプロンプト起動して
pip freeze > requirements.txt

できたtxtを次のPCの
これまたてきとうな階層に入れ、
そこからコマンドプロンプト起動して
pip install -r requirements.txt
757デフォルトの名無しさん
垢版 |
2020/02/19(水) 11:51:55.61ID:cGULNOoW
そしてcondaに感染
2020/02/19(水) 18:42:16.77ID:DTFko2h2
このコードについて質問です
https://github.com/TestStudio/usbmuxd/blob/master/python-client/usbmux.py

class MuxError(Exception):
   pass

raise MuxError("socket connection broken")

みたいな書き方がされていますが、なぜ何もしない(passだけする)クラスを作って使用しているのでしょうか?
2020/02/19(水) 18:45:07.19ID:RE1Trb9N
raiseだからじゃない
2020/02/19(水) 19:01:50.35ID:Um90NQYB
Ruby なら、StandardError を継承して、カスタム例外クラスを作るだけ!

class MyError < StandardError
def initialize( msg="引数なし" )
super
end
end

raise MyError #=> 引数なし (MyError)

raise MyError, "引数あり" #=> 引数あり (MyError)
2020/02/19(水) 19:32:54.08ID:TvNfUAFk
Exceptionを継承してるのだから何もしてないわけではない
既存の例外クラスをそのまま使わず新たな例外クラスを作ればexcept節で場合分けしやすくなる
2020/02/19(水) 23:14:11.07ID:DTFko2h2
>>761
ありがとうございます
2020/02/19(水) 23:17:38.46ID:DTFko2h2
質問が大雑把すぎて答えてもらえない気がするんですが…
>>758に関してダメ元で聞きたいです。
>>758のコードをPython3.7で実行するとこんな感じのエラーが出るのですが何をどうしたら直せますか…?
いくつもエラーが出ているんですが、1つだけでも良いので…教えてもらえると嬉しいです…。
どのエラーも直し方がわからないです。。

Traceback (most recent call last):
File "C:\Users\username\Desktop\test.py", line 238, in <module>
mux = USBMux()
File "C:\Users\username\Desktop\test.py", line 222, in __init__
self.listener.listen()
File "C:\Users\username\Desktop\test.py", line 191, in listen
ret = self._exchange(self.proto.TYPE_LISTEN)
File "C:\Users\username\Desktop\test.py", line 184, in _exchange
self.proto.sendpacket(req, mytag, payload)
File "C:\Users\username\Desktop\test.py", line 101, in sendpacket
data = struct.pack("IIII", length, self.VERSION, req, tag) + payload
TypeError: can't concat str to bytes
2020/02/19(水) 23:53:08.56ID:GM7mImOk
>>763
いくつもエラーが出てるんじゃなくて
エラー内容と呼び出し履歴が表示されてるだけ

101行目ので
「TypeError: can't concat str to bytes」ってエラーが発生してる
python2用のコード
2020/02/20(木) 00:05:49.70ID:rl2y9G0y
よく見たら11年以上前のコードやん
個人的にどういう経緯で辿り着いたのか気になる
2020/02/20(木) 00:35:27.77ID:x93hW6cn
>>764
ありがとうございます…!!
101行目のエラーさえ潰せれば解決なんですね…!!

>>765
iOSデバイスとPC上のPythonをUSB/lightningケーブルで接続して通信をしようと思ったのですが
それらしき情報がコレしか見つからなかったので辿り着きました
767デフォルトの名無しさん
垢版 |
2020/02/20(木) 12:40:33.14ID:sbHTvmgo
不潔ゾーンからお帰りください
2020/02/21(金) 16:02:46.88ID:x3GQj6xQ
インスタンス変数についての質問です
他言語(c/c++/c#)から入った人間の例に漏れずself/clsって何なの…となりました
で色々見ているのですが1番大きな疑問はインスタンス変数です
サンプル見ると大体コンストラクタでself.x=とかやってますがこのxはどこで定義されているのですか?
仮にこれが定義としてもコンストラクタや関数内部で定義したものがスコープ外でつかえるのは妙です
それに関数で新しく定義出来てしまうならインスタンシエイト時にそのオブジェクトがどのようなメンバを持つのかの情報が欠落していることになります
この辺りの解説を探しても見つけられませんでした
ご教授頂ければ幸いです
769デフォルトの名無しさん
垢版 |
2020/02/21(金) 16:35:03.06ID:AkYRUnXu
コンストラクタでself.x=とやればそこで定義される
2020/02/21(金) 16:35:43.13ID:RiyafmFC
>>768
>インスタンシエイト時にそのオブジェクトがどのようなメンバを持つのかの情報が欠落していることになります
オブジェクトがどういうメンバを持つかは静的じゃなく動的
インスタンス化後にインスタンス変数やメソッドを追加できる
クラスはディクショナリみたいなものだと思っておけばいいよ
https://ideone.com/aAGA0y

>仮にこれが定義としてもコンストラクタや関数内部で定義したものがスコープ外でつかえるのは妙です
メソッドの第1引数にレシーバのオブジェクトが渡されるので
それを`self`という名前の引数で受けてメソッド内では渡されたレシーバを使って
`self.x`とかでインスタンス変数を参照してるのでスコープ外ではない
ちなみにselfは慣習として使われてる変数名であってhogeとかに変えても問題なく動く
771デフォルトの名無しさん
垢版 |
2020/02/21(金) 16:35:53.10ID:AkYRUnXu
あとCの経験があるならPyObjectについて調べたら理解が進むはず
772デフォルトの名無しさん
垢版 |
2020/02/21(金) 17:12:06.44ID:QP8p1GF2
仮想通貨のbotを作りたいんだけど、
AWSのCloud9で、
pythonのプログラムかいて動かす場合、
ブラウザー閉じたり、PCの電源切ったりしても、
プログラムはずっと動くの?
2020/02/21(金) 17:31:14.15ID:2TMdipPT
>>768
Ruby では、デフォルトでインスタンス変数は、private だから、
アクセサー(attr_accessor)で宣言しないと、クラス外部からアクセスできない

class A
attr_accessor :x
def initialize
@x = 1
end
end

p A.new.x #=> 1
2020/02/21(金) 17:33:36.85ID:2TMdipPT
仮想通貨は、Solidity だろ
2020/02/21(金) 20:23:10.91ID:/Xk0nwt/
>>772
そのように組めばそのように動く
776デフォルトの名無しさん
垢版 |
2020/02/21(金) 20:31:58.13ID:QP8p1GF2
>>775
そうですかぁ
停電とかPCの故障で停止して、
大損したらまずいと思ってたから、
AWSでずっと動かしてみる、
クラウドなら停止しないで安心ですね。
2020/02/21(金) 21:03:51.99ID:/Xk0nwt/
>クラウドなら停止しないで安心
ヒソ( ´д)ヒソ(´д`)ヒソ(д` )ヒソ
2020/02/21(金) 21:52:48.61ID:g+Ne8Q54
>>776
そのレベルなら停電の心配するより自分のプログラムのバグで損失出す可能性の方がはるかに高いだろう。
779772
垢版 |
2020/02/21(金) 23:27:12.20ID:QP8p1GF2
Cloud9にPyCarmで書いてたプログラムを移して、
AWSで動かしてみました、
ブラウザー閉じても、無事に自動で動いてるみたい、
もう、20円くらい稼げた、
これで、寝ているだけで朝起きたらお金が増えてるかな、
AWSは750時間分無料で使えるみたいなので、
しばらくこのまま動かしてみます。
2020/02/22(土) 00:10:39.94ID:pQxmP5Jc
朝起きたらバンされてるから
2020/02/22(土) 02:14:03.09ID:R+gSedzt
◎バグで損失
〇アルゴリズムがクソで損失
△利用料の請求でしぬ
2020/02/22(土) 08:40:23.32ID:6wlvfoPI
>>770
参考になりました
https://stackoverflow.com/questions/12569018/why-is-adding-attributes-to-an-already-instantiated-object-allowed
検索して見つけたんですがここでもクラスはディクショナリの糖衣構文なんて書いてますね
いやしかしそうすると同じ型のオブジェクトなのにその後の操作によって違うメンバを持ってたりするわけですか
えぇ……型適当すぎませんかpython……

selfに関しては自分自身を参照型なりポインタなりで関数内に渡していじくってると考えればいいんですかね
なぜthisにしない……そして自分自身が変化しないインスタンスメソッドでselfなんで書かねばならんのだ……
2020/02/22(土) 09:16:04.11ID:/f58S0oT
>>782
言語が異なれば用語や概念は異なるのだから、自分の母国語に無理に当てはめて考えようとすると行き詰まるぞ。それぞれの言語で意図やポリシーがあってその言語の仕様が作られているのだから、違う考えに基づくものだとして違いを受け入れ、理解しようとしてみなよ。
784772
垢版 |
2020/02/22(土) 09:50:55.45ID:ltYpm+bh
動かしたまま寝て朝見たら、
無事に動き続けてました、
45円くらい利益出たから、
半日もしないのに資金の1.2%程増えた、
ほんとに、寝ているだけで朝起きたらお金が増えてるw
クラウド便利ですね、ありがとうございます。
785デフォルトの名無しさん
垢版 |
2020/02/22(土) 10:10:20.27ID:hsz3eTB9
>>782
嫌なら使わなくていいよ
世界で2番目に使われてる言語は諦めて田舎で畑でも耕してな
2020/02/22(土) 12:14:02.69ID:4QVNajON
>>782
selfに関してはC++やっている奴なら、非明示でC++のメンバ関数にもPythonのself
のようなもの(this ポンタ)が渡されると知っているんじゃないのか?
http://www7b.biglobe.ne.jp/~robe/cpphtml/html03/cpp03057.html
>メンバ関数には this ポンタが隠し引数として渡されるので、普通の関数と同じようには扱えないのです
2020/02/22(土) 13:22:04.84ID:WVugcdbO
>>782
Python開発した当時にthisを使ってたのはC++くらいだしね。
SmalltalkやObjective-CはselfだしJavaやJavaScriptはまだ出てなかった。
2020/02/22(土) 13:45:22.33ID:qQaAG+8d
レシーバーは、Ruby ではself、jQuery ではthis で、
どちらも引数で渡さないでも使えるように、実装で頑張った

Rubyのインスタンス変数には、@ を付ける。
@x = 1

Ruby のself は、文脈依存。
モジュール内で、クラスの外では、Module

module M
p self.class #=> Module
class C
p self.class #=> Class
end
end

M::C.new
2020/02/22(土) 13:46:07.97ID:BwPLw7gM
なぜthisにしない……って
そりゃCやC++で開発するんだから被るthisは回避するじゃん
C++で使ってないselfになるのは順当

Cで作る→C++に移行 との可能性はわずかながらあり
2020/02/22(土) 15:28:23.09ID:8UzPa+1r
プログラム未経験のまったくのど素人です

以下のコードを実行しても何も起こりません
なぜか逆スラッシュが\になってしまい、それが原因でしょうか?

長いので二つにわけます

def hangman(word):
wrong = 0
stages = ["",
"_______ ",
"| ",
"| | ",
"| 0 ",
"| / | | ",
"| / | ",
"| "
]
rletters = list(word)
board = ["_"] * len(word)
win = False
print("ハングマンへようこそ !")
791790
垢版 |
2020/02/22(土) 15:30:30.55ID:8UzPa+1r
while wrong < len(stages) -1:
print("\n")
msg = "1文字を予測してね"
char = input(msg)
if char in rletters:
cind = rletters.index(char)
board[cind] = char
rletters[cind] = "$"
else:
wrong += 1
print(" ".join(board))
e = wrong + 1
print("\n".join(stages[0:e]))
if "_" not in board:
print("あなたの勝ち !")
print(" ".join(board))
win = true
       break

如何でしょう?
792デフォルトの名無しさん
垢版 |
2020/02/22(土) 15:40:17.92ID:2qBDSHyD
一方うbyはklassを使った
2020/02/22(土) 15:57:31.91ID:/f58S0oT
>>790
まず>>1を読んでその通りにする。話はそれからだ。
2020/02/22(土) 16:10:09.30ID:mY130Jrs
hangman関数を定義したけど呼び出してないからでは?
2020/02/22(土) 16:18:17.21ID:nfgptzfk
>>782
>えぇ……型適当すぎませんかpython……
Pythonに限らずJSやRubyなんかのOOをサポートしてる動的言語はだいたい同じ
クラスやオブジェクトのベースはディクショナリ

>そして自分自身が変化しないインスタンスメソッドでselfなんで書かねばならんのだ……
Cやシェルスクリプトと同じでレガシーな言語だからイケてない部分もたくさんある
そういうものだと思って受け止めるしかない
開発者が使いやすいように積極的に機能追加していくような言語ではないからね

Stackoverflowとか見てもわかるけど
Pythonコミュニティは割と言語機能に対するコンプレックス強いから
イケてないところ指摘すると逆ギレされやすいから気をつけて
2020/02/22(土) 16:38:39.72ID:qQaAG+8d
>>910-911
>win = true
win = True

それと、break の前に、何かの文字が入っているとか?
797796
垢版 |
2020/02/22(土) 16:51:45.07ID:qQaAG+8d
>>910-911
ちゃんと動く

Python は、スペースでインデントしないといけないのか。
タブでは動かない
2020/02/22(土) 17:20:59.96ID:WVugcdbO
>タブでは動かない

んなことない。
799796
垢版 |
2020/02/22(土) 17:36:28.82ID:qQaAG+8d
スペースとタブが混在したからかな?

漏れは、動かなかったけど
2020/02/22(土) 18:24:55.47ID:R+gSedzt
近頃の3系は混在ダメ
2020/02/22(土) 18:39:04.76ID:WVugcdbO
混在は別に問題ないぞ?linterで警告されるかもしれんが。
インデントに一貫性がない場合はエラーになる。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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