【まず1嫁】くだすれPython(超初心者用) その56
■ このスレッドは過去ログ倉庫に格納されています
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがある(この板にあるとは限らない)ので、そっち池。
「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。
このスレッドは「お勉強」スレのほうには書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。
★エラーを解決したい場合★は、
表示されたエラーの全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
実行環境(Pythonのバージョン・OSとIDEの種類およびバージョン)をシッカリ書くこと。
Pythonの★ソースコードをそのまま5ちゃんに貼るとインデントが崩れてチヌ★
【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】掲示板の仕様なので、
プログラム文は↓等の、いわゆるコードうp用サイトに貼ってこいください。
ttps://techiedelight.com/compiler/ Run Code機能あり。
ttp://ideone.com/ デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/ まずまずシンプル。
ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
◇Python公式◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi
〇前スレ〇 【まず1嫁】くだすれPython(超初心者用) その55
https://mevius.5ch.net/test/read.cgi/tech/1633070807/
次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ### >>208
ありがとうございます
[画像]タイトル
[画像]タイトル
のようなリストを作りたくて、ページ拝見させていただきましたが少しイメージと違うかもしれません
かなり強引ですが、moveの絶対位置レイアウトで、ラベル2つをペアにする方法で実装してみました
https://pastebin.com/xSdLz5x7
pyqt、無理やりなら色々なことできそうですね ttp://codepad.org/ZCf9omJq
クラス変数の初期化で「name 'NUM' is not defined」ってエラーが出るんだけど、何が原因なんだろうか?
Python 3.10.2 64bit なんだけど、構文間違ってないよね? http://codepad.org/PRA31FBR
codepadだと問題なく動作するから環境なのかな
windows10+vscode+python3.10.2 64bit でだけ起きる固有の現象…? import sys
print(sys.version)
codepadはテンプレから外そっか >>209
PyQT知らんけど、一般的なGUIアプリ開発なら、
まずは、"[画像]タイトル"のクラスを作って部品化することを考えるもんじゃないの? >>213
ありがとうございます、その方向で作ってみます
PyQtはクラス継承で色々いじれるようなので楽しみです >>215
なるほどありがとう
この書き方がダメなのはわかったけど
クラス名.クラス変数 って書いても通らないし
__init__ でセットするとインスタンス生成のたびに実行されちゃうし困ったな
クラスごとに1回しか実行されないコンストラクタってないんだろうか こうしちゃうww
class test:
global NUM
NUM=64
POW=[pow(NUM,a) for a in range(0,5)] >>217
それクラス内変数じゃなくなっちゃってる…
一応できたけどこういう方法しかないのかな
インスタンスを生成するまで初期化されないのが気持ち悪いけど仕方ないか
https://ideone.com/kCp5Yq a = test()
a.output()
b = test()
b.output()
こうしたときにインスタンス変数だとpowをaつくるときとbつくるときの二回実行しちゃう
powぐらいだったらいいけど、重い処理だったら・・・
ってことじゃないかな
class内にstatic変数おけたらいいんだけどないのかな クラス定義しているモジュールの変数にすれば間に合う気もするけど
classmethod/staticmethodにするかメタプログラミングするかしか >>218
内包表記やジェネレータ式がクラス直下ではクラス変数を参照できないというだけなので
list(map(pow, itertools.repeat(NUM)…とかfor文+appendとか…で良いんじゃない?
2なら関係無く動くけど、nonlocal文とか出来た割にこんな罠があるとは test.POW=[pow(test.NUM,a) for a in range(0,5)]
ってのをクラス定義の下にインデントなしで書けばいいんじゃないの
なんか問題ある? >>219
動的に何万と作っては捨て続けるので
いちいちインスタンスごとに持ちたくないんだ >>223
継承クラスを作ったときに初期化を忘れそう vscodeでflake8を使っていますが、メソッドの後ろに()を書かなくても警告してくれません
これを警告してもらう方法ってありませんか? メソッドだけでなく関数でも、例えば
print
と書いただけで()をつけないまま改行しても警告してくれません 関数オブジェクトが置いてあるのはおかしなことではない
コールバック関数に関数食わせるたびにケイコクサレタラ溜まったもんじゃない myprint = print
myprint('woooo!!!!!!') 関数オブジェクト食うのは高階関数か。
とにかくコールしなくても使い道はある。 flake8、すごいね
お前のコード汚すぎる!ってたくさん言われた
自分の環境ではprint(とかなってたら警告されます aa = print
のように代入するのはあり得るけど
print
だけってありえるの?
pythonだと実行時のエラーすら出ない
ほかの言語だとこういうのあり得ないからIDEに警告表示出るよな 文字列を直置きしてdocstringにしちゃうような言語だしなぁ
pydroidだとstatement seems to have no effectの警告が出る 202です。
>>205さん
そうですか…。出来ないのは残念ですが、教えていただきありがとうございます。 >>226
ちゃんとファイルを保存してる?
Pylance何かと違って、保存前には動作しないよ >>236
はい、保存してます
警告もでないし実行してもエラーも出ずスルーされるだけです
pythonはこういうもんなんでしょうか? RustとHaskellは、コンパイルを通った時点でバグが無いことを保証されると主張してますね。
Pythonに限らず、その他の言語は、まあそういうもんでしょう。 >>237
代わりにpylintを使えばエラーを出せるよ
ただ、ちょっと細かすぎて例外設定で除外しないと煩わしいことになるけど >>240
そういう返しが来るってことは print ってだけの使いかたもあるってことなのか 上でも言われてっけどtkinterのeventとか
x.bind('<1>', print)
みたいな例はいくらでもある 233はなんの副作用もないステートメントの話をしてるだろ
それ副作用あるじゃん こんな文字列を直置きしてdocstringにしちゃうような言語をやってると、引数に渡されてスタックに積まれる関数オブジェクトと特に作用のない関数オブジェクトの違いが理解できなくなるぞw >>242
それは a=print と同じ使いかたでしょ >>233
> ほかの言語だとこういうのあり得ないからIDEに警告表示出るよな
C言語でも同じだよ、文法的には問題ない
ただ意味がないから大抵の処理系で>>234が書いてるような警告は出るけどエラーではない 関数へのながーい引数を変数に入れて渡すことってできませんか?
args = text="テキスト", img="img.png", color="#FFFFFF"
makeItem(args)
みたいな感じです >>247
自己解決しました
args = {"text": "テキスト", "img": "img.png", "color": "#FFFFFF"}
makeItem(**args) >>248
すごい細かいけど、辞書を渡す際はkwargsを仮引数にするのが暗黙のルールだったりする PythonでリストH=[a[2][3], a[5][7]]
を与えた後
H[0]を呼び出すとa[2][3]が返ってきますが、このx座標、y座標である2と3を返す関数はどう作られますか? b = a[2][3]
c = a[5][7]
H = [b, c]
という評価を一行で書いてるだけなので
Hの時点だともうその情報はない >>251
ありがとうございます。
ではx座標とy座標を呼び出すにはどうしたら良いでしょうか? よくわからないんだけどH[0]を呼び出すとa[2][3]が返ってくるなら
tmp = H[0]
x = tmp[0]
y = tmp[1]
になるんじゃないの? Pythonのサンプルコードでは
from hoge import piyo
import hoge
のような記述をよく見ます
これは行儀が悪いように見えますが、Pythonでは問題のないことなのでしょうか >>250
座標もセットにしてリスト化する
H=[(a[2][3],(2,3)),(a[5][7],(5,7))] >>249
勉強中なので細かいこと大歓迎です、ありがとう すみません >>257 は読み間違いなので無視してください メンバー変数「__name」を持つ「Human」クラスがあったとして、
これを継承した「HyperHuman」クラスは、
継承元の「__name」を参照できないんですか?
クラスの外から参照しないメンバ変数を__付きにしまくったら継承先で参照できなくなってしまった >>253
すみません、
うまく行きませんでした
>>255
ありがとうございました、思考によって問題を回避出来ますね。私に欠けていたのは問題に食らいつく精神力でした。 >>254
俺もこれ気持ち悪いわ
誰かスッキリさせてくれんか >>254
import xxx only zzz
みたいにしてほしかったよね >>262
xxx.zzz以外のxxx.*参照できない状態を保持するのめんどそう
import xxx
zzz = xxx.zzz
と書けるしfrom import自体いらんなら分かる >>259
そのままの名前ではできない
継承先から別の名前で山椒できる
self._Human__name
https://ideone.com/9xMJkE >>264
できるけど
わざわざ__してるのを呼び出しちゃうのかーいって気はするなw >>264,265
そのタイポの仕方がちょっと笑える
「参照の育て方」はツボったよw >>264
ありがとうございます
変数名自体が変わってアクセス防いでるのかあ
同じ継承先からは参照したいので、_一個にしておきます if os.path.exists(p):
をpathlibで書き換える場合、
if p != "" and Path(p).exists():
で完全に同じになりますか?
空文字以外に注意しなければいけないものありますか? >>271
空文字判定しないと、空文字のとき Path(p).exists()がTrueになる
空文字はpathlibで "." として扱われるみたい 富士通「年収3500万円」の衝撃 ソニー、NECも戦々恐々の「グローバル採用競争」
「富士通年収3500万!」日本のIT企業の年収も、高額化してきました
ゼロから起業するよりも事業承継(小さな会社の買収)が圧倒的に有利である3つの理由
「エース人材だって起業OK」、NECは挑戦者が集う場をつくる
NECなど「出向起業」 大企業人材、起業しやすく
IHIが副業解禁、人事制度で他の重工大手を先行する狙い
カルビー/国内社員3900人を対象に副業解禁 どのシステムでも何も渡さなければ現在のディレクトリとして処理するだろ c#のsystem.io.file.exists()やdirectory.exists()、winapiのfindfirstfile()(ディレクトリの存在確認もできる)
どれも空文字は失敗するよ スクレイピングする際にlxmlでhtml内に任意のcssセレクタが含まれてればtrue、含まれていないときはfalseを返すことってできますか? >>277
パスはpathlibへの引数でexists()の引数じゃないんよ Ruby では結論としては、空文字列と、. で同じ結果になる
require "pathname"
p path = Pathname.new( "" ) #=> #<Pathname:>
p path.to_path #=> ""
p path_ab = path.join( "a/b" ) #=> #<Pathname:a/b>
p path_ab.to_path #=> "a/b"
# --------
p path_2 = Pathname.new( "." ) #=> #<Pathname:.>
p path_2.to_path #=> "."
p path_2_ab = path_2.join( "a/b" ) #=> #<Pathname:a/b>
p path_2_ab.to_path #=> "a/b" >>250
私も初心者なのでアドバイスなどおこがましいのですが...
class作るのが簡単かと...
class a(object):
value=[[0,1,2,3,4,5],[0,2,4,6,8,10],[0,3,9,12,15]]
def __init__(self,x,y):
self.x=x
self.y=y
def ans(self,x,y):
return(a.value[x][y])
def xy_ans(self):
return((self.x,self.y))
H=[a[2][3], a[5][7]]
hoge=H[0].xy_ans() まちがいました。
最後から2行目は
H=[a(2,3), a(5,7)]です。(5,7)でエラー出ますけど... >>273
情報ありがとうございます。
テストコード長い・・・
空文字以外は気にしなくていいと思い込むことにしよう GUI(tkinter)からyt_dlpで動画ダウンロードするものを作っていたのですが
Visual Studio Codeから実行した場合正常に処理できました
直接実行するとエラーになりました(拡張子pyw)
拡張子をpyに変えると直接実行しても正常に処理できました
一般的に拡張子pywで正常に処理できるかを実行せずに判断する方法ありますか?
あるいは、拡張子pywでも正常に処理する方法ありますか?
今回のPGMはsubprocess.runを使わずに
with YoutubeDL(ydl_opts) as ydl:
____result = ydl.extract_info(youtube_url, download=True)
のような形式で呼び出しています たまに以下のようなミスをしてしまうのですが、これを防ぐor容易に発見する
にはどうしたらいいでしょうか。
foo=default_value
if a_condition:
boo=new_value # 本当はfooを更新したかったがbooとミスタイプした
# -> あれ、fooの値が変更されてない、みたいな >>288
if a_condition:
old_foo=foo
boo=new_value
if old_foo == foo:
raise ValueError("error!") pylanceさいつよ # type: ignore pylanceってパイランスって言うんですか? 昔「だっちゅーの」っていう女の子二人組が...
素朴な疑問ですが、補完機能があるようなものを使うとして、上記の場合にbooが
間違いであることはどうやって分かるんでしょうか。もし同じスコープ内にbooという
変数が既にあった場合、booとタイプするのを間違いとは断定できないのでは...
もしbooがなかったら、「プログラムに影響を及ぼさない変数をいじってんじゃねーよ」
というツッコミは可能だと思いますが。 そりゃ重箱の隅を突き始めたらすり抜けるケースなんていくらでもあるよ
もともとコードとして合法なんだもん >>291 だってold_booとか書いたら一緒だからね
もうコンパイラ言語を使えば type hints書かないの?(書き捨てのぞく) エディタが人間のやりたいことを理解できる時代になったら検出できるんじゃない? 怪しい部分にはassert文挟むとか、291みたいにエラー吐かせるのが基本じゃないか 根本的に、1文字ミスって別の変数にアクセスできちゃう書き方というか、その命名規則や設計思想は良くないね
動けば何でもいーじゃんとか言って後々にツケが回るやつだ >>287
print()とかのコンソールを前提とした戻りを
拡張子pyのときに限定しないと行き場がなくてエラーが出るんじゃない? no_consoleモードだと、エラーメッセージがそのままでは拾えないような >>301
別のプログラムで、pywからImageMagickt等10種以上をsubprocess.runで呼び出して、
no_consoleモード実行してるんですがエラーになったことないです。
pythonのprint()もエラーでたことないです。 >>302
エラーがうまく拾えなくて困っています。 >>304
内部的にurllibを使ってると、with as 構文ではうまく動かなかったこともあるので、
ydl = YoutubeDL(ydl_opts)
result = ydl.extract_info(youtube_url, download=True)
ydl.close()
あたりではどうかな? >>306
やってみました
結果は変わらず。
ydl.close()はエラーになったのでコメントアウトしました ■ このスレッドは過去ログ倉庫に格納されています