くだすれPython(超初心者用) その37

■ このスレッドは過去ログ倉庫に格納されています
2018/03/17(土) 16:32:25.91ID:S1lkLDnv
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

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

前スレ
くだすれPython(超初心者用) その36
http://mevius.2ch.net/test/read.cgi/tech/1514805522/
2018/04/20(金) 13:49:06.94ID:bSpMfw5T
>>460
こういうこと?
# ===test.py===
def main():
 x = "H"
 y = "h"
 for num in range(5):
  func(x,str(num))
  func(y,str(num))

def func(x,str):
 print (x + "ello" + str)

def func2(y,str):
 print (x + "ello" + str)

if __name__ == '__main__':
 main()
2018/04/20(金) 13:56:09.67ID:bSpMfw5T
>>461
それについては456で教えて貰って解決した>>458

>>462
訂正
def func2(y,str):
 print (x + "ello" + str)

def func2(y,str):
 print (y + "ello" + str)
2018/04/20(金) 14:06:06.09ID:aZdt3WBn
呼ぶ側がfunc2になってないから動かないと思うけど、だいたいそういうこと
2018/04/20(金) 15:27:31.37ID:DDZisBas
>>457
そもそもpythonのdefは実行文だから
2018/04/20(金) 17:50:44.02ID:1rBd94+J
spyder使ってるんだけど、defの中の変数が実行後の変数エクスプローラに表示されなくなるんだけど、表示させる方法ない?
もちろん実行時はその変数に値が格納されてるんだけど、defを出た瞬間に破棄されちゃうのかな。
いちいちprintしてデバッグするのめんどくさい
467デフォルトの名無しさん
垢版 |
2018/04/20(金) 17:54:59.99ID:WJk0jxxj
global
468デフォルトの名無しさん
垢版 |
2018/04/20(金) 19:16:25.14ID:9TOBYLLi
デバッガで何しようとしとんのやこのアホはw
2018/04/20(金) 21:19:08.77ID:bNn+sorS
デバッガはブレークポイント仕掛けたり1行ずつステップ実行しながら変数をウォッチするものだと思うので
実行中にリアルタイムで表示変えるのは超高速なエミュレータでもないと…;
2018/04/20(金) 22:57:24.69ID:Xu3EKzy5
>>467
globalにすれば出来るのは知ってるけど、いちいち関数化したのを戻すのが面倒だから他に方法がないのかと思って。

>>469
リアルタイムでみたいわけじゃなく、プログラム実行後にメモリに残った変数を確認したいって意味ね。

おかげ気づいたけど、defを抜ける直前にブレークポイント置いてそこで確認すりゃあいのかな。けど関数の分割多いと辛いな。
2018/04/20(金) 23:08:48.76ID:k7m69UuR
ログ吐くようにしとけよ
2018/04/20(金) 23:18:23.85ID:k7m69UuR
printめんどくさいとか言ってるがある程度のサイズのあるプログラムはログ残したほうが結局は作業がはかどる。
473遊園地
垢版 |
2018/04/20(金) 23:47:55.05ID:xu4ZA7YN
ログはprintでは無いと言う事を肝に免じて置いて下さい。
474デフォルトの名無しさん
垢版 |
2018/04/21(土) 00:18:21.37ID:NjF1F28w
>>473
ログをprintで書くことで悦に入っています。
2018/04/21(土) 00:46:49.28ID:SeoWSMd7
>>472
printがめんどくさいと言う人ならログ出すように変更するのもめんどくさいになるだろう。
めんどくさいのいやだいやだで、(コードに手を入れないで)
ツール(デバッガ)で楽々出来るようにしたいにニダと言う感じだろう
実運用ではこのログはイラネなんだろうが。
2018/04/21(土) 01:00:05.67ID:YdpuWmPR
肝に免じてどうする
肝は銘ずる(刻みつける)ものだ
2018/04/21(土) 01:10:45.10ID:SeoWSMd7
>>476
遊園地のいるところは
肝に銘じてが
話し言葉で
>肝にめんじて
になるところなんだよ。
鉛(標準語では訛)がでたんだろ
2018/04/21(土) 01:40:30.99ID:jRiYYFVC
p2exeって日本語は扱えないのですか?
2018/04/21(土) 03:00:26.77ID:HWyKzA01
>>478
py2exeではなく?
2018/04/21(土) 03:26:11.52ID:jRiYYFVC
>>479
間違えました、py2exeです。日本語文字をprintしようとすると
UnicodeDecodeError: 'cp932' codec can't decode byte 0xef in position 0: illegal multibyte sequence
って出るんですよね。コードをutf-8にしたり、文字列の先頭にuを付けてみましたが、きちんとexeが生成されません
481デフォルトの名無しさん
垢版 |
2018/04/21(土) 07:09:29.13ID:nN/toUY2
肝免わろすwww
482遊園地
垢版 |
2018/04/21(土) 07:29:31.66ID:fW+0Fovn
>>477
あああーーーー

  それは、アカンww


明治時代の初期までなら、隣の県に行けば
言葉が通じないのもザラだったしなwww
2018/04/21(土) 08:46:12.30ID:HWyKzA01
>>480
んでもってPythonは2系をつかってるのか?
あるいはWindowsのユーザー名が日本語なのか。

素直に3系つかうことと
py2exeするときはあきらめて日本語を含まないユーザー名を作って
そこからやる
2018/04/21(土) 15:11:14.68ID:Jlfar8cI
py2exeは3.6に対応してないから、バイナリ作るならpyinstallerの方がいいと思う
セットアップファイル作る必要もなくて楽だし
485デフォルトの名無しさん
垢版 |
2018/04/21(土) 15:16:38.37ID:K9lD61bw
bytesをfloat配列にする高速な方法無いでしょうか?
4バイトで1floatではなく、1バイトで0.0〜1.0の範囲の1floatの
同じ長さの配列が欲しいのですが
2018/04/21(土) 16:19:45.05ID:Jlfar8cI
pyinstallerで詰まったのは、pandasを使うスクリプトでエラーが出ることぐらい
pandasを 0.20.0 に落とせば通る様になると思う
487デフォルトの名無しさん
垢版 |
2018/04/21(土) 16:38:34.70ID:Zke6MJB8
>>485
精度落ちて良いならいくらでもある
2018/04/21(土) 16:42:03.35ID:K9lD61bw
>>487
精度は構いませんので是非
489デフォルトの名無しさん
垢版 |
2018/04/21(土) 16:58:38.10ID:V+d3uri5
正の数だけ?
490デフォルトの名無しさん
垢版 |
2018/04/21(土) 17:04:24.09ID:yl7d1HXp
精度気にしないなら
0x00 = 0.0
0x01 = 0.004
0x02 = 0.008
...
0xFA = 1.0
0xFB〜0xFF は使わない
とか勝手に決めれば良いだけ
2018/04/21(土) 17:09:59.96ID:K9lD61bw
>>489
0.0〜1.0の正の数だけです
2018/04/21(土) 17:22:36.40ID:6J3G0l4e
>>490
それ普通に255.0で割る方が速いだろw
493デフォルトの名無しさん
垢版 |
2018/04/21(土) 17:26:25.82ID:yl7d1HXp
そうか?
>>490 も 250 で割るだけだから速度は一緒だぞ
2018/04/21(土) 17:30:44.93ID:6J3G0l4e
>>493
250.0で割るのだと元のバイト列にある251〜255を1.0に丸める処理が必要になるだろ。
考えてから発言する習慣付けなよ。
495デフォルトの名無しさん
垢版 |
2018/04/21(土) 17:34:55.64ID:yl7d1HXp
どうせ使わないんだからいいだろ
2018/04/21(土) 17:45:08.29ID:nWGazij5
おいおい256.0だろ…
おまえは1を0.1にするのに9で割ると言うのかい?
2018/04/21(土) 18:23:41.65ID:bgp2zzOH
>>485
256 しかないんだから float f[256] の配列作って変換すればいいんじゃね?
2018/04/21(土) 18:33:33.34ID:ZHkY3Ka/
頭いいな
2018/04/21(土) 18:37:22.51ID:CHrbK6wg
>>483 >>484
素直にパイインストーラーを使うことにします。ありがとうございました!
500遊園地
垢版 |
2018/04/21(土) 19:45:18.90ID:fW+0Fovn
windows辞めて、Ubuntuにしたらデフォルトでpython2,python3入ってるよ。

 なんつってwwww  これぞwww 悪魔の囁きwwwww
2018/04/21(土) 19:47:16.89ID:fJguH7wu
いやシステムのPythonは使わないのか基本だぞ
2018/04/21(土) 19:51:23.74ID:Af+18o1F
それな
むしろデフォで入っていることが余計なトラブルの元になってる
2018/04/21(土) 19:53:02.17ID:SpcYsUEG
Pythonに依存した他のパッケージを動作させるためだけのものだよね
ユーザーが使ってはいけない
504デフォルトの名無しさん
垢版 |
2018/04/21(土) 20:04:52.49ID:nN/toUY2
>>501
何に騙されてそんなガセネタ信じとるんやwwwww
2018/04/21(土) 20:09:07.60ID:+jzprnKY
UbuntuとかMacとかはpyenv入れてからAnaconda入れてとか結構面倒くさい
506遊園地
垢版 |
2018/04/21(土) 20:54:58.27ID:fW+0Fovn
Ubuntu系のlinux mintにAnaconda入れてる。
起動確認の初回しか、動かしてない。
507遊園地
垢版 |
2018/04/21(土) 21:45:02.32ID:fW+0Fovn
オブジェクトをヒープ上にメモリ確保する場面は
どんな時ですか?
2018/04/21(土) 22:00:51.41ID:ZHkY3Ka/
逆にヒープ以外にどこにメモリを確保するんだ?
それが答えじゃね?
509デフォルトの名無しさん
垢版 |
2018/04/21(土) 22:05:01.51ID:zxSpDS2l
>>504
開発環境とシステム分けておくの大事だぞ
510遊園地
垢版 |
2018/04/21(土) 22:16:07.69ID:fW+0Fovn
実行できない。

  へるぷ

def grade(score, breakpoints=[60, 70, 80, 90], grades='FDCBA'):
□i = bisect(breakpoints, score)
□return grades[i]

[grade(score) for score in [33, 99, 77, 70, 89, 90, 100]]
2018/04/21(土) 23:13:25.47ID:ZHkY3Ka/
実行できないってどういうことよ
エラーメッセージがあるならそれも載せろよ

まあわざと載せてないのかもしれないけど
2018/04/21(土) 23:56:54.79ID:XrHLCoEo
>>510
>>509が言っているだろ。開発環境とシステム分けてないから実行できないんだよ
513遊園地
垢版 |
2018/04/22(日) 07:24:22.58ID:S/aJuoMN
NameError: name 'bisect' is not defined

関数内にglobal と書いてもダメだった。
514遊園地
垢版 |
2018/04/22(日) 07:35:06.34ID:S/aJuoMN
import bisect

で、TypeError: 'module' object is not callable

$ sudo pip3 install bisect で

Could not find a version that satisfies the requirement bisect (from versions: )
No matching distribution found for bisect


要件bisectを満たすバージョンを見つけることができませんでした(バージョンから:)
二等分線に一致する分布が見つかりませんでした
2018/04/22(日) 07:59:57.89ID:6LlZ0HWt
「みんなのPython」に書いてある

Anaconda は、Windows など予め、Python が入っていないOS が対象です。
Linux など、最初からPython が入っている場合は、プロに聞いて下さい。
この本では教えませんw

つまり、Pythonがバッティングするから。
Python3 というコマンドが、Python 3.4, 3.5 のどれを指すのか、
OSとAnacondaで、異なるバージョンの場合に厄介だから

$ which python3
/usr/bin/python3
$ which python3.5
/usr/bin/python3.5

$ file /usr/bin/python3
/usr/bin/python3: symbolic link to python3.5

つまり、Windows10・WSL・Ubuntu16.04 では、python3 → python3.5

異なるバージョンを使いたければ、仮想環境のvirtualenv(venv)を使って、
環境変数PATH を上書きしないといけない

activate ってすると、PATHが上書きされて、
システムとは異なるバージョンと結び付けられる

それか、Docker を使うとか
516遊園地
垢版 |
2018/04/22(日) 08:55:24.40ID:S/aJuoMN
Anaconda使ってないよw

Geanyから起動してる。

linux mint18 mate
python 3.6.3
517遊園地
垢版 |
2018/04/22(日) 08:56:08.08ID:S/aJuoMN
システムバージョンの
python 3.5.2でも試したけど、一緒のエラー内容だった。
518遊園地
垢版 |
2018/04/22(日) 09:06:16.89ID:S/aJuoMN
公式から、ライブラリ落として
入れないと駄目とか?

分からない。
519遊園地
垢版 |
2018/04/22(日) 09:28:09.74ID:S/aJuoMN
本当に分からなかったので教えて貰いました。

https://teratail.com/questions/122985

import bisect
では、なく。

from bisect import bisect
と、記載しなければ成らなかった模様です。
520遊園地
垢版 |
2018/04/22(日) 09:30:23.48ID:S/aJuoMN
皆さん、いろいろと
ありがとう、ございました。
521デフォルトの名無しさん
垢版 |
2018/04/22(日) 10:07:45.92ID:clJAmZnE
help(help)について
help関数の定義を見たくてhelp(help)を実行したところ、
以下のような出力がありました。

Help on _Helper in module _sitebuiltins object:

class _Helper(builtins.object)
| Define the builtin 'help'.
|
| This is a wrapper around pydoc.help that provides a helpful message
| when 'help' is typed at the Python interactive prompt.
|
| Calling help() at the Python prompt starts an interactive help session.
| Calling help(thing) prints help for the python object 'thing'.
|
| Methods defined here:
|
以下略

見たいのは_Helper in module _sitebuiltinsではなくhelp function、
以下のような説明です。

help(object): help on object or class of object, except
help('name'): help on object/module named 'name'
help(): run utility, which starts with utility help

どうしてそれが出ないのか、ご教授いただけるとありがたいです。
Python3.6、pycharmを使用しています。
2018/04/22(日) 10:29:12.32ID:Nfi3M0G/
>>519
質問をすることでしか得られない、回答やアドバイスがある。
15分調べてもわからないことは、質問しよう!

何このサイト
入門者でも質問OKなのかな?
このスレだと15分調べて質問したらggksとか言われそうなんだが
523遊園地
垢版 |
2018/04/22(日) 10:35:53.40ID:S/aJuoMN
>>522
このレベルから受け付けてる。
https://teratail.com/questions/10173
2018/04/22(日) 11:17:20.23ID:Nfi3M0G/
>>523
色々な意味で驚いた
間口が広いはずの、2/5chの存在意義が・・・
ただ、入門者だと実際ここで躓く事もあるし
ディレクトリ構造って実際理解するの結構大変
分かってるとツリーになってると言えるし、そもそも何が大変なのか説明する方が難しいレベルだし・・・
そういえば、最近のOSってアドレスにあるパスが一部しか書いてなかったりするけどみんな困らないのかな?
昔のOS使ってるとパス辿ればいいと分かるけど、パスの概念を勉強する機会が減りそう
525デフォルトの名無しさん
垢版 |
2018/04/22(日) 11:28:31.70ID:WmJ9TmOv
>>524
同意を求めるのじゃなくて質問すれば答えてくれんじゃね?そうゆうの?
526デフォルトの名無しさん
垢版 |
2018/04/22(日) 11:45:11.71ID:3qJWMYht
python導入の仕方がわからない。。。
2018/04/22(日) 12:05:00.81ID:8GLco50w
>>526
teratailで質問するとここと違いやさしく丁寧に教えてくれるよ
2018/04/22(日) 12:18:40.18ID:bQIDMX1u
>>526
グーグルでpython インストール で検索。
以上。
529遊園地
垢版 |
2018/04/22(日) 13:19:51.68ID:S/aJuoMN
>>526
ネタだと思うけど、公式から自分が使用してるOSを選ぶ。
https://www.python.org/downloads/

32bit PCだと 64bit版は動かせない。

x86 32bit
x86-64 64bit
2018/04/22(日) 13:21:25.71ID:6LlZ0HWt
ここは、Python の初心者用のスレだろ。
言語だけの初心者

PC・OS・情報処理の初心者用ではない。
Python以外の事は、知っているべき
531遊園地
垢版 |
2018/04/22(日) 13:21:58.00ID:S/aJuoMN
win機で特に理由が無いなら、
Windows x86-64 executable installer

Ubuntuならコッチみてくれ。
https://www.python.jp/install/ubuntu/index.html
532遊園地
垢版 |
2018/04/22(日) 13:23:09.27ID:S/aJuoMN
>>530
最初に、どれ動かして良いのか分からなかったからww

 全部ダウンロードして、試した俺が居るぞww
2018/04/22(日) 14:04:12.27ID:Nfi3M0G/
>>530
でもなぁー
毎日PCの電源を入れている人ならともかく
例えば高校数学にコンピュータあるけどあれするだけでもプログラミングソフトのセットアップって
重要で意外と難易度が高い
かといって、WindowsOS向け、Pythonセットアップスレとか作っても多分はやらない
ただ、少し慣れてきてUbuntuとかtensorflow-gpuとか入れろと言われるとトラブってる人も多いし
その記事だけでアフィが成り立つレベルだよ
534デフォルトの名無しさん
垢版 |
2018/04/22(日) 16:22:41.42ID:3qJWMYht
526です。pythonのコード書くのはコマンドプロントだけ?
535デフォルトの名無しさん
垢版 |
2018/04/22(日) 16:26:30.71ID:3qJWMYht
pythonのエディタはWindowsのコマンドプロントだけ?
536デフォルトの名無しさん
垢版 |
2018/04/22(日) 16:57:42.88ID:/RR+q6wr
>>533
学校も含めて他人のPCにインスコするときは
VM用意してその中で遊ぶのがマナー
537デフォルトの名無しさん
垢版 |
2018/04/22(日) 17:08:09.84ID:PsQCMKRd
>>530
言語だけの初心者=PC・OS・情報処理の初心者やけど
よっておまえもなw
538遊園地
垢版 |
2018/04/22(日) 17:52:06.12ID:S/aJuoMN
>>536
それは無いよ。

USBブートで遊ぶべき。
2018/04/22(日) 19:12:05.56ID:Nfi3M0G/
>>536
VMってシステムに深く入り込むから大変なことになる
というかLANが使えなくなって半日嵌った
2018/04/22(日) 19:37:52.67ID:HOpx3haN
他にもいっぱいあるよ
2018/04/22(日) 19:48:31.90ID:H/AU6k7y
>>539
???
VMware PlayerとかVirtualPCなんかだと普通のアプリケーションと変わらんぞ
ゲスト側のネットワーク設定はちょっとコツが要るけど
542デフォルトの名無しさん
垢版 |
2018/04/22(日) 21:53:07.67ID:2Fk6o3gK
アップデートしたら、仮想SW死んだことがある
環境的に物理的なトラブルと切り分けが調べられなくて泣きそうになった
2018/04/22(日) 21:57:51.54ID:2Fk6o3gK
hyper-vだったけどね
544デフォルトの名無しさん
垢版 |
2018/04/22(日) 22:24:34.38ID:SkZxcoIM
wxpythonでボタンをクリックしたら別のpyに書いたウィンドウを表示させているのですが、開いたpyウィンドウを閉じるともとのボタンをクリックしても再実行されません。
importは一度だけというのはわかっているのですが・・・

どのような記述をすれば閉じても何度でも再実行できるようになるのでしょうか。

教えて下さい。
545遊園地
垢版 |
2018/04/22(日) 23:01:16.94ID:S/aJuoMN
>>544
https://ideone.com/

に全部 ソース貼れw

 それを見てから応える
2018/04/22(日) 23:03:22.02ID:6LlZ0HWt
wxpython を説明している、サイトを見て、勉強する
2018/04/22(日) 23:35:12.62ID:GW1847bJ
>>544
5chのPythonスレのレベルを超えた質問
teratailで尋ねたほうが良いよ

>>546
このスレで出来る回答はそんなもんだよな
548デフォルトの名無しさん
垢版 |
2018/04/23(月) 08:33:18.26ID:1C6OTR8X
https://ideone.com/OtTmrTです!
549遊園地
垢版 |
2018/04/23(月) 10:37:49.00ID:/QV9I6Db
>>548
実行ボタン処理が定義されて無いから?

詳しい人、どうぞww
2018/04/23(月) 11:17:30.25ID:DP/vD1RL
pythpn初心者だけどオブジェクト指向分からな過ぎて死にそうです
何かおすすめの本ありますか?
2018/04/23(月) 11:18:44.42ID:zsG77YNH
死んだ方がいいよ
552遊園地
垢版 |
2018/04/23(月) 11:30:33.57ID:/QV9I6Db
厳し過ぎやろ

 俺が引いてんじゃねぇか!ww


[遊園地は]使い分けると深みに嵌まるから、この形式だけ抑えて後は垂れ流しだな。

https://ideone.com/VuRClI
2018/04/23(月) 13:03:27.78ID:HUlTGC1I
>>548
とりあえず、ボタン押してフレーム出すのはこう。


import wx
class ChildFrame( wx.Frame ):
def __init__( self, parent ):
super().__init__(parent, wx.ID_ANY)
sizer = wx.BoxSizer(wx.VERTICAL)
lb = wx.StaticText(self, wx.ID_ANY, "Hello!")
sizer.Add(lb)
self.SetSizer(sizer)
sizer.Fit(self)
class MainFrame( wx.Frame):
def __init__(self):
super().__init__(None, wx.ID_ANY )
sizer = wx.BoxSizer(wx.VERTICAL)
btn = wx.Button(self, wx.ID_ANY, "Push Me!")
sizer.Add(btn)
self.SetSizer(sizer)
sizer.Fit(self)
btn.Bind(wx.EVT_BUTTON, self.on_button)

def on_button( self, evt ):
child_window = ChildFrame(self)
child_window.Show()
if __name__ == "__main__":
app = wx.App()
frame = MainFrame()
frame.Show()
app.MainLoop()
2018/04/23(月) 13:31:39.89ID:jMm7sVs3
>>550
まずこの本で、オブジェクト指向を学ぶ。
スッキリわかる Java入門 第2版、2014

その後、この2冊をこの順に読む。
たのしいRuby 第5版、2016
みんなのPython 第4版、2017

この順番でやらないと、理解できないはず。
特に、オブジェクト指向の本は「スッキリ」しか存在しない
555デフォルトの名無しさん
垢版 |
2018/04/23(月) 14:31:38.43ID:Lf5qXYif
>>553さん

ありがとうございます!
ただボタンを押した後のフレームを出す処理を他のファイルに書いています。

そういうやり方は一般的ではないのでしょうか?


def on_button( self, evt ):
import aaa

のようにaaa.pyを呼び出して処理させたいのですが、一回表示させて閉じると再表示させることができません。
2018/04/23(月) 14:47:47.40ID:HUlTGC1I
>>555
ファンクションの中でimportして、しかもそれだけでウィンドウを出すってのはすごく変。
四の五のいわずにやめた方がいい。

大体そんなやり方してたら親ウィンドウすら渡せない。
2018/04/23(月) 14:51:26.42ID:HUlTGC1I
>>555
子ウィンドウのコードを別のファイルにしたいなら、ChildWindowの定義部分を別ファイルにしてimportすればいい。
2018/04/23(月) 15:10:44.56ID:Sx+lupQ0
>>555
偉大なるこのスレの遊園地様が必死に質問しているteratailで聞いたほうがいいよ
処理を書いている他のファイルも提示して動くようにしてくださいと依頼すれば良い
2018/04/23(月) 15:15:35.49ID:sVI7fOBi
importは読み込んで実行というより
定義や宣言を読み込むため(だけ)に使うのが普通よね
2018/04/23(月) 15:19:13.02ID:Sx+lupQ0
>>557
>ChildWindowの定義部分を別ファイルにしてimportすればいい
ChildWindowの定義部分がある別ファイルのaaa.pyをimportしているのが
on_buttonのimport aaaなんだろ
2018/04/23(月) 15:32:45.72ID:sVI7fOBi
import aaa

 def on_button(…):
  child_window = aaa.ChildFrame(…)
  child_window.xxx = yyy
  …

こんな感じかね
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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