くだすれPython(超初心者用) その35 [無断転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。
エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで
前スレ
くだすれPython(超初心者用) その34
http://echo.2ch.net/test/read.cgi/tech/1495971255/
VIPQ2_EXTDAT: default:vvvvvv:1000:512:----: EXT was configured FTP の、文字列・バイナリの違いは、
文字列なら、改行コードをOS に合わせて変換するだけ
UNIX系: LF
Windows: CR + LF >>852
そうは言うけど、どうやって判断するの?
「テキストエディタで開いて文字化けすればバイナリファイル」と
断言して良いのだろうか >>856
お前にとってテキストとして意味がないファイルは全てバイナリファイルや
簡単な事やろ? 基本、データはすべてバイナリと考えたら良い。
まず、そのデータ・ファイルを読み込む際に、バイト配列で読み込む
次に、そのバイト配列を、自分の好きなエンコード、例えば、UTF-8 などで読み込む
その時に、そのエンコードで読み込めない(変換できない)場合に、
変換エラーにするか、「?」の文字にするかを選択する
例えば、TeraPad なら、中国の地名の「深せん」の「せん」が、「?」になる。
そのエディタで対応していない文字
たぶん、各社の絵文字などにも、対応していない ASCIIの範囲がテキストならユニコードはテキストか否か。 >>859
テキストじゃなきゃなんだってゆうきだよwお前はバカかw ASCIIの制御コードに続けて各国の規格が定義するコードをいくつか並べることで
文字を拡張する方式はよくあるが。 このように安易に「奥が深い症候群」に陥いるバカは非常に多い
このスレの皆さんはくれぐれも ID:/wh5qHzF0 のようなバカにはならないように気をつけましょうw データのみを見てテキストとバイナリを判別するのは非常に難しい。 >>856
そもそもおまいの言う文字化けって何よω すいませんバイナリの質問したものですけど例えば
適当に日本人が公開しているしているタグに日本語が使われているmp3ファイルをバイナリでオープンすると
日本語の部分が\x00な表記でひょうじされてるんですよ、直接日本語がうめこまれているわけではなくて。 >>868
そのmp3のタグは文字コードUTF-16で
バイナリエディタで覗いたときの文字コードがUTF-8とかになっててあってないんじゃ >>868
まさかとは思うけど、君は日本語がデジタルデータの中にどんな風に格納されていて
それをPythonのbytesオブジェクトとして表示するとどう見えるのか知らないのでは?
以下でやっていることがわかるかい?
>>> s = 'あ'.encode('utf-8')
>>> s
b'\xe3\x81\x82'
>>> list(s)
[227, 129, 130]
>>> s.decode('utf-8')
'あ' UTF-8: 英語は1バイトで、日本語は3バイト。
1〜6バイトまで、様々な文字がある。
文字数がバイト数から、即座に判別できない
UTF-16: 2バイト。ただし、サロゲートペアは4バイト。
バイト数 / 2 で、文字数がわかるが、サロゲートペアは2文字扱い。
容量も食わないので、OS が内部表現として採用している
UTF-32: すべてが4バイト。
バイト数 / 4 で、文字数がわかるが、容量を食う。
英語は1バイトだから、1文字で3バイトも無駄になる >>870
つい最近関心持った初心者だから、全く知らなかった。感動した。 超初心者です!!
pythonのパイは
おっぱいのパイですか? 素数無限ループプログラムを作りたいんですがどこが違うでしょう?
x = 2
while True:
for v in range(2,x)
if x% v == 0:
print(x,"素数じゃないです")
print(x,"素数です")
x += 1 x = 2
while True:
○○○○for v in range(2,x)
○○○○○○○○if x% v == 0:
○○○○○○○○○○○○print(x,"素数じゃないです")
○○○○○○○○print(x,"素数です")
x += 1 xが無限に大きくなりそう。vの半分に到達したら止めるとかじゃないの?
あと○が大きくてソースコードめっちゃでっかく見えて草 いろいろよくないが
素数じゃないですのうしろでbreakしてないのが一番よくない >>888
breakしてもうまく動きませんでした x = 2
while True:
for v in range(2,x):
if x % v == 0:
print(x,"素数じゃないです")
break
else:
print(x,"素数です")
break
x += 1
出来ました
break忘れでしたありがとうこざいました >890
2で割り切れるかどうかだけで素数判定をすることになっているのでは?
elseのインデント位置をforに対応する位置にして、elseのあとのbreakを除くと良いと思う
rosettacode を見ると、いろいろな言語での素数生成プログラムがあるよ。
https://rosettacode.org/wiki/Category:Prime_Numbers csvファイルを読み込みたいのですが、spyderで%matplotlib inline を打ち込むとエラーが出ます。
調べたら、%matplotlib inline はJupiterでしか使えないとあったのですが、
spyderでcsvファイルを読み込むにはどうしたらいいですか? >>894
pandas のread_csvが簡単 CV3で画像操作がしたくpythonをはじめたばかりなのですが、spyderでCV3がうまく動きません。どの辺が悪いのでしょうか
※環境 Windows10 + Anaconda5(python3.6) python3.5環境で使用
//
condaでopenCV3をインストールしようとしたらopenCV3がpython3.5にしか対応していないと怒られたので
conda create -n my35 python=3.5 anaconda
activate my35
conda install -c mempo opencv3
conda install spyder
というふうにしてインストール
my35環境のspyderを起動してコンソールで
import cv2
cv2.__version__
'3.1.0'
img = cv2.imread('?C:\\test\\test.jpg')
としても読み込まれず変数エクスプローラーで
名前:img 型:NoneType サイズ:1 値:NoneType object of buitins module
と、なり中身がないので当然
cv2.imshow('result', img)
error: ..\..\..\modules\highgui\src\window.cpp:281: error: (-215) size.width>0 && size.height>0 in function cv::imshow
となります
//////
ちなみに
from PIL import Image
img2=Image.open('C:\\test\\test.jpg')
w,h=img2.size
print(w,h)
とすると 1920 1150 とこちらはちゃんと動きます >>397
レスを各段階で17行目に変なゴミが入ってましたので訂正です
誤 img = cv2.imread('?C:\\test\\test.jpg')
正 img = cv2.imread('C:\\test\\test.jpg') 画像ファイルのパスが間違っている場合,エラーは返しませんが
print img とコマンドを実行すると None と表示されます
画像を扱う
http://labs.eecs.tottori-u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_gui/py_image_display/py_image_display.html
たぶん、パスがダメなんだろう。
これでやってみれば?
img = cv2.imread('messi5.jpg',0) >>897
"c:/test/test.jpg"にしたらどう? >>899-900
解決いたしました。
私はいつもフルパス名をファイルのプロパティのセキュリティ・タブにある
「オプジェクト名:○○○○○○」からは拾ってくるのですが
○○○○○○の前にゼロ幅文字の(UNICODE)202Aがまぎれていることがわかりました。
PILでは自動的に除外され処理されるようですが、CV3ではそのまま異常パスとしてエラーになっていたようです。
>>898の?がまさにShiftJISで姿を現した202Aだったんです
また躓きましたら質問させていただきます >>901
あれれれれれ
今やったらPILでもゼロ幅文字の202A付きだとエラーになりました
ウソを書いてしまってごめんなさーい コピペして動かない時は、まず、手打ちで確認すれば良い
コピペすると、文字列の前後に、見えない文字が入っている場合があるのか? >>901
ああ、VisualStudioでたまにエラーになることがあるけど、それだったのかな。
確かにUnicode制御文字の表示をすると、lefみたいなのが出てきますね。 冪演算(演算の結果を入力として、繰り返し演算を適用する)
f(f(f(f(x))))
冪等(何回演算を適用しても、同じ結果になる)
f(f(x)) = f(x) from random import randint
from tkinter import *
# 変数・定数の定義
COLS, ROWS = [30, 20] # ステージのサイズを定義
CW = 20 # セルの描画サイズ
data = [] # ステージデータ
for y in range(0, ROWS): # ステージをランダムに初期化 data.append([(randint(0, 9) == 0) for x in range(0, COLS)])
data.append([(randint(0, 9) == 0) for x in range(0, COLS)])
の意味がよく分かりません
データ型がdataの関数?append()の中に (randint(0, 9) == 0) を入れる意味がわからないです
試しにここだけ抜いてもエラーが出るので必要なのは分かるんですが……
これはネットに落ちていたライフゲームのプログラムです
最初に、ステージをランダムに初期化し、その後、ライフゲームのルールに沿って、300ミリ秒ごとにシミュレーションを行うプログラムの一部です 某サイトで連載中のコード?解説されてますがな。
print(data)
print(len(data), len(data[0]))
として出力して、再度解説を読みましょう matplotlibについてなのですが
ある単語について、横軸に日付、縦軸に発言者として、
発言者ごとにどの日に単語を発言したのかというのを
描写しようと思っているのですが
matplotlibを全くと言っていいほど使ったことがなく
どのようにしたら良いのかわかりません。
教えていただけますでしょうか? >>912
ありがとうございます
dataの中身を表示とdataの中のリスト数、その中の要素の数を表示するんですよね
そのなかでfalse とtrueがランダムに出ているところで (randint(0, 9) == 0) が役立ってるんだろうと思うんですが、
([(randint(0, 9) == 0) for x in range(0, COLS)])
, も入っていないのにどうやってrandintの数が使われているのかさっぱりです
調べても どれも,が入っている例ばかりで……
つまり、文法的な意味がわからないということです
説明ベタですみません >>913
そのデータはcsvなりなんなりで既にできてて
読み込みも済んでるのか? >>914
1.
from random import randint
print(randint(0, 9))
何が出力されるでしょうか。
2.
from random import randint
print(randint(0, 9) == 0)
何が出力されるでしょうか。
3.
print([True for x in range(0, 30)])
何が出力されるでしょうか。
4.
from random import randint
print([(randint(0, 9) == 0) for x in range(0, 30)])
何が出力されるでしょうか。 import numpy as np
import pandas as pd
df = pd.Series(np.zeros(366), index=pd.date_range('13/12/2017', periods=366))
df['2018-1-1'] = 1
df.plot()
plt.show()
エラーになります助けてorz >>911
a.以下のコードは・・・
from random import randint
COLS, ROWS = [30, 20]
CW = 20data = []
for y in range(0, ROWS):
----data.append([(randint(0, 9) == 0) for x in range(0, COLS)])
----print(data)
b.このコードとほぼおなじことです。
from random import randint
COLS, ROWS = [30, 20]
data = []
for y in range(0, ROWS):
----for x in range(0, COLS):
--------data.append(randint(0, 9) == 0)
----print(data)
インデントは-に置き換えてあります。 内包表記と呼ばれる書き方です。
最も外側の () はappendメソッドのための()なので気にしない。
次の[]はリストデータ型で処理するという意味。
[]の中を見るとfor節があります。
これを見つけたら内包表記が使われていると覚えましょう。
以下Pythonドキュメントの該当部分のURL
https://docs.python.jp/3/tutorial/datastructures.html#list-comprehensions
https://docs.python.jp/3/tutorial/datastructures.html#nested-list-comprehensions
ドキュメント要約するとbの書き方は、人にとってもPCにとっても面倒だから内包表記作ったよ。 import numpy as np
import pandas as pd
df = pd.Series(np.full(366, np.nan), index=pd.date_range('13/12/2017', periods=366))
df['2018-1-1'] = 1
df.dropna().plot()
plt.show()
解決しました本当に有難うございました win32comについて教えてください。
現在PythonスクリプトでAdobe InDesignの自動化プログラムの開発をしています。
import win32com.client
indd = win32com.client.dynamic.Dispatch("InDesign.Application.CS5_J")
doc = indd.Documents.Add()
で動作するのは確認しています。
やりたいことは、上記の「doc」の種類(COM上のクラス?)を特定したいのです。
イメージとしては、
doc._ole_type_(←実際にはないメソッド)
>> "Document"(←結果にCOMクラス名)
こんな感じに戻り値を求めたいのです。
どなたか、詳しい方、よろしくお願いいたします。 >>924
ホントにありがとう
が、print(doc)では目的は目的は果たせませんでした(print objectはファイル名が返りました)が、
貼っていただいたドキュメントからCLSIDからCOMオブジェクトのクラスを調べる目途がたちました。
(makepyやってませんでした、すみません)
Rubyのwin32oleだと簡単に調べられたので簡単な方法があると思っていたのですが、win32comは大分様子が違いますね。
さー、rubyから移植+Opencv連携開発がんばるぞー >Rubyのwin32oleだと簡単に調べられた
タイプライブラリなくてもか? >>927
>タイプライブラリなくてもか?
http://jongware.mit.edu/idcs5js/index_Assignment%20Suite.html
http://indesign.cs5.xyz/dom/domtree.html
このあたりを見ながらと、
https://www.artonx.org/data/asr/
これをインストールして
require 'win32ole'
indd = WIN32OLE.new("InDesign.Application.CS5_J")
doc = indd.documents.add
p doc.ole_type.name
--> "Document"
(実際はアプリケーションの選択オブジェクトを調べて分岐させます)
で、調べながら作ってました。
RubyはActiveScriptingやOpencvライブラリの対応が良く分からなくて、
忙しい中、調査に時間かけるくらいなら、既に実績のあるPythonに移行しようかとおもってます。 print(doc.__repr__())
print(doc.__str__()) 初心者の素朴な疑問なんだけど全てのライブラリは標準ライブラリの組合せで出来てるの? >>931
標準ライブラリの組み合わせで全てのプログラムは理論上組めますか? >932
クロードシャノンによれば0と1のbitがあれば組めるよ python2からpython3のコードをシームレスに呼び出す
あるいはその逆って出来んの? ではライブラリを使わずに全てのプログラムを作ることが出来るってことですね >>932
理論上で良いなら標準ライブラリはosとsysがあればあらゆるプログラムが書けるよ >>934
呼び出すモジュールは作れるというか
あると思うけど
シ−ムレスっていうのは文法から言ってだめなんじゃね?
ヒアドキュメントはシームレスとは言わないだろ? うむむ
地雷踏んだっぽいわ
Anaconda で conda 使いまくってたら
from PIL import Image が DLL 見つからないエラーはくようになった
conda uninstall pillow
conda install pillow
とかやってももう治らないω
もちろん pip は一度も使ってない 起動中のpythonのsys.path上にpillowはあるのか? conda install --channel https://conda.anaconda.org/conda-forge pillow
で動くようになりました
同様に以前動いてたはずの CV3 も動かなくなってたので
conda install --channel https://conda.anaconda.org/conda-forge opencv
したらこっちも動くようになりました
なんか関係ないのも数えきれないくらい沢山入れ替わったっぽいけど
身も心もまっさらになった気分です 初歩的な質問ですいません
http://codepad.org/KGtLHDhb
Tkinterを使いプラスボタンが押されたら+1されるプログラムを
練習に作っているのですが
ラベルの値が最初の0のまま変更されません
コンソールの方では動いているのですが・・・
ラベルの更新の仕方を教えてください、おねがいします ラベル更新だけじゃなくて
色んなツッコミ所がありすぎて面倒なので
コメントするのあきらめる >>942
たくさんの男がお前の上を通り過ぎていったけど、今は処女になったということだな。 >>944
ひどいプログラムなのは許してください・・・
>>945
ありがとうございます
参考にさせていただきます!
とても助かりました pythonプログラムを実行する時、
python *.py
と
ipython *.py
で違いはあるんですか? ある数列から、指定割合の位置の数値を取り出したい
たとえば
x=10 ; y=100 ; z=8
のとき、range(x,y)の8%の数値が欲しい
どうするのが高速でしょうか >>949
x + round((y - x)*z/100) はー素晴らしい
自分、数学苦手なもので、全然思いつきませんでした
多謝 あるグループウェアの特定のページが欲しくてChrome+seleniumでログイン。
そのあとrequests.getでページの中身をスクレイピングしようとしたら「未ログイン」のページが落ちてきた!
セッション情報が共通化されていないと知ってショックでした。。 insertで登録して、findで登録されてるか調べる
順序はそのまま、YES or NO
https://ideone.com/udcKZC
どうすれば良いでしょうかお願いします。 >953
if a in i[1]:
を
if i[1] in a:
にする。
a は、リストでなく、セットにした方が計算量的に有利。
a = set()
として、
a.append(i[1])
を、
a.add(i[1])
にする。 レス数が950を超えています。1000を超えると書き込みができなくなります。