くだすれPython(超初心者用) その41【Ruby禁止】
■ このスレッドは過去ログ倉庫に格納されています
★当スレにRubyのソースコード類を書くことを禁ず
☆Ruby等、Pythonではないプログラミング言語での回答類を書くことも禁ず
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。
エラーを解決したいときはエラー表示や環境(バージョン/IDEまたはcommand line/OS)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで
前スレ
くだすれPython(超初心者用) その40
http://mevius.5ch.net/test/read.cgi/tech/1542874174/
◆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/ ログイン必須になりやがった(゚Д゚#)
−−−−天麩羅ここまで−−−− >>83
>何の分野に進むかによる
プログラマ以外がpythonを使うことはない
JPモルガンやゴールドマン…投資銀行がトレーダーに「Python」を教える理由
https://japan.zdnet.com/article/35132512/ 問題
l = [ [ 1,3,2,7,4 ], [ 4,7,2,4,9 ], [ 8,0,6,1,9 ] ]
なお、このリストは各要素ごとに一行ずつのデータとし、全部で3行のデータとする。
各行ごとに5つづつのデータで構成される。
hint 1) 保存される CSV ファイルは下記のようになる。
1,3,2,7,4
4,7,2,4,9
8,0,6,1,9
次に、"test.csv"を読み取り、CSVファイルから数値情報を抽出しなさい。
さらに各行ごとの合計を出力しなさい。(注: 保存前のリストによる合計ではない。)
hint 2) 17 26 24 の3つの数値が得られる。
hint 3) 保存されたデータは文字列になっているので、足し算をするために数値化する必要がある。 >>90の答え
#解答欄
l = [ [ 1,3,2,7,4 ], [ 4,7,2,4,9 ], [ 8,0,6,1,9 ] ]
# l を CSV ファイルに保存する
with open("test.csv", "w") as f:
for x in l:
f.write(",".join([str(a) for a in x]) + "\n")
# CSV ファイルからデータを取り込み、各行の合計を表示する
with open("test.csv", "r") as f:
for x in f:
each = x.strip().split(",")
sum = 0
for y in each:
sum += int(y)
print(sum) f.write(",".join([str(a) for a in x]) + "\n")
each = x.strip().split(",")
このあたりがわかりません。 これで充分
','.join(str(a) for a in x) ワシのプログラミング授業歴
1浪→今の私大工学部電気系に入る→
1年目で1留→プログラミング前期はなんとか単位を取るも、プログラミング後期を
再再履修し、Cの応用プログラムが理解できずに死亡していた
泣きっ面に棚から牡丹餅で、プログラミング講師「今年からプログラミング後期はPythonやります」
と天の救いがあった。留年とかした甲斐があったというものだ。
でpythonはCみたいなどうしようもない難解とは違い、
「やればやっただけ上達する」ような感触を受けた。
今回は落ちたかもしれないが、次は必ず仕留める。 >>93
それに書き換えてみましたが、
実行結果が184
となり
下の答えとは違ってきました。
17
26
24 >>93
+"\n"をそのあとに付けたらつまくいきました。
[]は無駄なようですね。ありがとうございます。 >>92
書き込みを全般的に見てて思うけど、小さい単位に分割して実験する事を覚えた方が良いかな
カッコの中だけ実行する、演算子の片方のみ実行するとかね
例えば
f.write(",".join([str(a) for a in x]) + "\n")
が分からない場合には
print (",".join([str(a) for a in x]) + "\n")
を試して、次に
print (",".join([str(a) for a in x]))
を、試して、さらに
print([str(a) for a in x])
を追加して実験してみる
聞く回数も減るし理解も早いと思う 独学プログラマー読んでるけどtwitterで翻訳者がつぶやいててうざい
たかが翻訳しただけなのにまるでじぶんが書いたみたいに反応してる
勘違いしてるよね
翻訳がすごいから売れたんじゃないの
勘違い翻訳者うざすぎー なっちゃんって偉大な翻訳家がいてな・・・
翻訳にも上手い下手はあるんだよ
少なからず売上も左右するだろう プログラムを入力するときはロックを組み立てていくが、
エラーを解析するときはブロックを崩していくというイメージか。 Multiprocessingを使った処理をしたいと思ってごくごく簡単な例文をコピペして動かしてみたのですが,期待される出力がコンソール上に出ません.
一方,すこし複雑な(いくつかのプロセスを平行させても1秒ぐらいかかるような処理)例文を動かすと,出力は出ませんがCPUの稼働率的にはすべてのコアが均等に働いているようでした.
Multiprocessing自体はうまく働いているものの,なんらかの理由で個々のプロセスがコンソールに出力するのが制限されているような挙動ですが,これを出力させるにはどうすればよいでしょうか?
環境はPython3.6.1で,標準のIDLEを使っています.CPUは4コアの6700Kです.
よろしくおねがいします. multiprocessingで並行処理させてる関数内からprintしたときは
直後にsys.stdout.flush()しないと反映されない ありがとうございます.
それ自体では解決しませんでしたが,関連事項でググったらIDLEが悪いということが分かりました. 初歩的な質問なんですが
画像の顔部分の切り出しをしていて分からない部分があります
以下簡単な例に置き換えたものになります
import numpy as np
test = np.array([1, 2, 3, 4, 5])
print(test[1:1 + 3])
>>>[2, 3, 4]
と表示されます
これはどういう考え方をすれば良いのでしょうか
print(test[1:1])
では何も表示されませんが+3する事で表示されているのが良くわかりません >>105
test[m:n]はm〜n-1番目までを切り出す >>105 [1,2,3,4,5] の要素は [0]~[4]
print(test[1:1 + 3]) は print(test[1:4]) は [1] ==2 から [4-1]==4 まで
>>>[2, 3, 4] もし先頭だけをprintしたいのなら
print(test[0]) または、print(test[0:1]) スライスの開始値は含めるけど終了値は含めないという指定は、最初違和感あったな >>110
俺もいまだに違和感ある
a=['お','ま','ん','こ']でa[0,2]だと['お','ま','ん']にして欲しいよな。
確か、数直線で考えるらしい.....
0 1 2 3 4
+ー+ー+ー+ー+
お ま ん こ
で、[0:4]だと「お〜こ」になるとのことだった。でもa[4]はエラー.... ゼロベース配列という事で、i以上j未満はポインタ演算を考えると自然
(j-i)個の切り出し、終端ポインタ-先頭ポインタは何要素といった具合 IoTやるのがPythonなのって理由ある?
Cじゃダメなのv ポインタとか使う言語だと、そもそもendじゃなくて個数指定になってるじゃん。 >>105 です
回答頂いた方ありがとうございます
test[1:1 + 3]は[1:(1 + 3)]でtest[1:4]として扱われるという事でしょうか
演算子が入ってるのを初めて見たので計算した上で扱うとは思いませんでした >>115
「1番目から始めて3文字取り出す」という事を明示するために敢えて1+3と書いたんだろう >>113
AIカーが来てる! 自動運転でラジコンカーを走らせよう!
https://weekly.ascii.jp/elem/000/000/422/422742/
おもちゃの自動車がAI で動く時代。
これもRaspberry Pi とpython で学習して自動運転してる。
AI と言ったらpython >>115
test[1:-1]
test[:-1]
test[1:]
違いを説明汁 >>115
>test[1:1 + 3]は[1:(1 + 3)]でtest[1:4]として扱われるという事でしょうか
俺も超初心者だからお前が疑問に思っていることがなんとなくわかる
1 + 3の+は演算子。で、[x:y:z]の:は何なんだと? ひょっとして :も演算子?
でもって、[1:1 + 3]の時、:と+どっちが優先順位高いんだ?わかんね。
で、レス見ると、どうも+の方が優先順位高いと。つまり、優先順位を明示した[1:(1 + 3)]になると。 :は演算子じゃなくて区切りだろ
そんなもん実験すればわかる そうなのか? 俺は勝手に俺命名してスライス演算子とか言っているが
で、スライス演算子は算術演算子の+より優先順位が低いと 代入が単独で文なのって何か故あってのことなの?わりと珍しいよね? >>126
3.8から代入式も使えるようになるらしい シンタックスシュガー
糖 衣 構 文って奴か
シンタックスシュガー
糖 衣 構 文を使うと超初心者にはわかりやすくなるけど
シンタックスシュガー
糖 衣 構 文の裏側で実際どのような挙動をしているのかわかりにくくなるのが欠点だよな
シンタックスシュガー
糖 衣 構 文はかしこく使っていきたいと思った >>121
pandasとかnumpyの[:;:]使うともっと混乱する >>126
いや、昔の言語はそれが普通
C言語辺りから代入文が値を持つような言語が増えた pipってPythonのidleからうごかせないからいらいらしてたんだけども
teratailっていうサイトでpipはコマンドプロンプトでうごかすような仕様ですって説明あったからあたまのなかがすっきりした Python はとっつきやすいが、奥が深いな。 一通りの文法をある程度使いこなせるようになるまでどのくらいの時間がかかるんだろう。
2〜3か月と書いてるサイトが多い様だが
例えば、
Python チュートリアル (原文の電子書籍版は120ページだった)
https://docs.python.jp/3/tutorial/
の全て
Python 標準ライブラリ
https://docs.python.jp/3/library/index.html#library-index
の1〜16
を読み込むだけだとどのくらいの時間?
Python 言語リファレンス
https://docs.python.jp/3/library/index.html#library-index
は必要に応じて参照。 と思ったが、言語リファレンスを見るとset だけでもかなり奥が深いな。
チュートリアルではほんのさわりしか触れていない。 このチュートリアルだけでは本当の入り口入門だな。
でもこのレベルをまず理解しないと挫折してしまうだろうな。
言語リファレンスに書かれたすべてについて書かれたチュートリアルは有るのだろうか? 膨大なページになるだろうが。
オライリーの Pythonチュートリアル 第3版 も入門用みたいだな。 (260ページ)
無料で読めるデータ分析に役立つ Python の電子書籍まとめ
https://qiita.com/ynakayama/items/8ed2854bcc3c3633345b
Dive Into Python 3 日本語版
http://diveintopython3-ja.rdy.jp/index.html
これは少し踏み込んでいるね。 プログラミング経験者向けのPythonの入門書 495ページ
>>24 の Python3 入門 は 241ページ
https://qiita.com/KatsunoriNakamura/items/b465b0cf05b1b7fd4975 >>121 >>123 https://docs.python.jp/3/tutorial/introduction.html#strings
ここでは test[1] はインデックス
test[1:4] はスライスと書いてるね。 :はデリミッタ(区切り符号)の中の一種
下記の文法書では、 : がある場合をスライスとしている。
class slice(start, stop[, step])
要は range(start, stop[, step]) と同じ
だから、test=[1,2,3,4,5] の時
test[1:6:2] は [2, 4] と2つおきのステップもとれる
test[0:6:2] は [1, 3, 5]
https://docs.python.org/ja/3/reference/expressions.html?highlight=%E3%82%B9%E3%83%A9%E3%82%A4%E3%82%B9
文法書 こちらだと、3.7.2も選べるね。
6.3.3. スライス表記 (slicing)
スライス表記はシーケンスオブジェクト (文字列、タプルまたはリスト) におけるある範囲の要素を選択します。
スライス表記は式として用いたり、代入や del 文の対象として用いたりできます。
スライス表記の構文は以下のようになります
proper_slice ::= [lower_bound] ":" [upper_bound] [ ":" [stride] ]
lower_bound ::= expression
upper_bound ::= expression
stride ::= expression
とあるから数値には式も許されている。 [] は省略可を示す
<略>
適切なスライスは、スライスオブジェクト (標準型の階層 参照) に変換され、その start, stop および step 属性は、それぞれ指定した下境界、上境界、およびとび幅 (stride) になります。
式がない場所は None で置き換えられます。 ifが閉じないのが違和感ありすぎるんだよな
endをpass扱いで使えればいいのに
tab非推奨とか、mainがインデントできないとか >>113
1からcに勉強しなくても基本的なスクリプト分かればパッケージで何かできるようになるから教育の手間が省けるし使い物になるまでの時間が短い。ポインタみたいな話は逐一調べれば何とかなるし >>113
逆
米国では特に理由がない限りはスクリプト言語といえばPythonなの
もちろん機器を大規模に展開する段階ではCで書き直すこともありうるけど、その前のPoC段階では手っ取り早く動かすことを重視してスクリプト言語を選択することが多い
そして世の中のほとんどのIoT(笑)プロジェクトはPoC止まりである >>136
2〜3ヶ月では無理だろ
オライリーの「Fluent Python」読んだら程々で止めといた方がよいと分かる
特にデコレータとかスライスオブジェクトとか完全な理解までは時間も手間も掛かる
それにライブラリ有ってなんぼの言語だからその辺を当たるのも手間が掛かる >>137
そんだけ説明するなら
Cpy = OreObj[:]でコピーの話してくれれば良いんだが
これもsliceがやってくれているのか? >>145 シーケンスオブジェクトに対して有効なんだから、文法エラーが起きなければ、OreObjはシーケンスオブジェクトで有り!スライス表記が有効なんだろ。 >>145 print(type(OreObj))
とやってみれば良いよ。
というかわからずに作ってる方もどうかと思うが。 Python3エンジニア認定基礎試験を受験しようと思ってるんだけど認定教材がオライリーのpython3 チュートリアル第3版だよね?
ドキュメントがあるんだけど
https://docs.python.org/ja/3/tutorial/index.html
本よりURL先の方が新しいからこっちで勉強すべきなんか本買った方がいいのやら >>148 自分もまだ、どれをもとに勉強しようか悩んでるんだけど、試験を受けるんだったら、オライリーので勉強した方が良いんじゃないのかな。
出題範囲がそれからと決まってるみたいだし。
そのpython.org のチュートリアルは本当に基本的なことしか書いてないみたいだし。 それを見る場合は他の標準ライブラリーにも目を通す必要があるけど、そちらについてのチュートリアルはないからね。 >>148
そのURLで良いんじゃないのか。
金出してオライリー買って勉強したって通らない奴は通らないだろうし。
で、URLでやっても通る奴は通るだろ >>> "あ\\\"あ"
'あ\\"あ'
>>> print("あ\\\"あ")
あ\"あ
\の数が変わるのはなぜですか? >>148 pdf があった方が良いと思うよ。 検索や見出しの頭出しなどが楽だから。
英文のpdf はあるけど、日本語はない。
https://docs.python.org/3/download.html
コピペ、書き込みはできる。
オライリーのにはpdfがあるから便利ではある。
ただし、コピペできないから注意。 amazon のレビューも参考にしてみたら。
【python入門者向け】おすすめPDF教材3選
https://web-camp.io/magazine/archives/16214
自分は、この中の2番目の大学の先生が書いてるやつで始めた。 コピペは勿論書き込みとかできる。 >>153 \ は、エスケープ文字と言って、次の1文字をそのまま使うことを指示する。
だから、\そのものを使うことはできない。しかし
\\ で\ をそのまま使う指示をすれば、\ 1文字として扱われる。
同じく \” \’ は、” ‘ そのものを扱うこもができる。
文字列の中にこう言う特殊文字を入れたい時に使う。
或いは、文字の中で改行したい場合には、\n を使う。
予め決められた文字をエスケープシーケンスと言う
print(‘abc\ndef’)
abc
def
エスケープシーケンスには他にタブ \n とか色々ある。
print(‘abc\n\tdef’)
abc
def
エスケープシーケンス
https://www.javadrive.jp/python/string/index2.html bs4のスクレイピングで
〈dd class='a'〉bbb〈span class='c'〉ddd〈/span〉〈/dd〉
のときにbbbだけ取り出すにはどうすればいいですか? linux流行る→linuxの試験立ち上げ
ruby流行る→rubyの試験立ち上げ
python流行る→pythonの試験立ち上げ
常に後手後手だな経産省は 役所にitの世界でリードしろと言う方が無理がないか(´・ω・`) 二次元のエロ画像って、どうやって分類するの?
教えて!エロい人!? >>159
まず自力で集める
えろくない画像も集めておく
それを教師データにしてエロい・エロくないを学習させる >>157 そりゃニーズがないものを試験するのは無駄。 フォルダを分ける
●永久保存
●たまに観たい
●あとで観る
●即消し
フォルダ毎にランク数値化してベイズ学習して
新しい画像が来るたびにまたフォルダ分け
(自動化するが人間によるチェックも必要なのでいきなりフォルダに入れず
それぞれのフォルダ毎に保留バッファを用意して人間が承認して正式にフォルダ移動とともに再学習)
これで問題になるのは「即消し」フォルダにある画像も消したくても再学習のために消せないんじゃないかということ pythonで開いたファイルを完全に閉じるにはどうしたら良いんでしょうか?
closeしたあとにshutil.moveで移動しようとしても、ファイルが使用中とエラーがでてしまいます。 本当にPythonがハンドルを掴んでるのかまず確認しろ
「さっきまで開いてたから」は根拠にならない >>153-155
Ruby では、
str = "あ\\\"あ"
p str #=> "あ\\\"あ"
print str #=> あ\"あ
p では全体を、" " で囲んでいるように、文字列の内部表現を見ている。
一方、print では、文字列を外部に表示したもの >>156
jQuery 子要素を含まない text() が欲しい時
https://qiita.com/Urushibara01/items/7b44a3de5cc40d8a10be
elem.children().empty();
で一旦、すべての子要素を削除してから、
elem.text();
で、テキスト部分を取得している
つまり一旦、<span> の部分を削除してから、テキスト部分を取得する。
でも実際に、DOM が削除されてしまうのは、都合が悪いかも知れない
他にも「jquery text 直下」で検索して、探してみれば? scrapyでよく使うxpath, cssのセレクタ
https://python.civic-apps.com/scrapy-xpath-css/
直下の子要素指定でフィルタの所に、xpath, css で、
<div>aaa<div>bbb</div></div> で、aaa だけを取得する方法が書いてある >>165
>文字列の内部表現、文字列を外部に表示
なんか良い表現だな
自分の言葉でこんな表現出来るルビ基地は頭は悪くないんだろうから、
基地外精神を直せばいい奴になるのにな。
俺らが気にするのは文字列を外部に表示のほうだからな
>>> "あ\\\"あ"
'あ\\"あ'
なら
>>> len( "あ\\\"あ" )
は4なのか5なのか >>164
確認しました。
掴んでるのはpython.exeだけでした。 >>165 なんで python スレに Ruby の解説を持ち込まないといけないんだよ。 python をさわれないなら黙って見てろ。
python で説明するなら、
str = "あ\\\"あ"
rstr = r"あ\\\"あ" # raw string
print(str,rstr)
#あ\"あ あ\\\"あ
l raw string は、正規表現関係の検索文字列で使われる。 >>172 普通は解釈(代入)段階でエスケープされるけど、raw 指定された場合は、エスケープしないだけで、結果としてできた文字列はどちらも str 属性のまま。 >>139 tab 非推奨って本当?
サンプルコードを拾ってくると確かにタブは使われていない。
でもそれを修正して使おうとするとタブが入るから、エラーとされる。
合わせるのが大変なんだけど、みんなどうしてんの? yesタブ非推奨
正規表現できるエディタ(秀丸エディタとか、sakuraエディタ)で
\tを「 」(半角スペース4つ)に一斉置換でおk >>171
すいません、解決しました、
文法がRubyとごっちゃになってcloseに()が付いてませんでしたorz
エラーにならないから全然気づかなかった… >>176 一括変換はどのようにしてもできるんだけど、コピペして動かそうとして修正するときに面倒。
利口なIDEなら両方を調整してくれても良さそうなものだけどな。
まだ、IDEをどうするのか決めてないし、とりあえずEclipseに入れるつもりだけど、なんか途中でつまづいてる。 >>179
大抵のIDEでTabキーでスペース挿入とかできるはずだが? >>178
with open構文使えばそんなことで悩むことなかったのに >>180 IDEはまだ使っていないって、pythonista やjupyter で練習中
ただ、IDEでスペース挿入できたって、コピペしたやつとスペースの数が違えばダメだろ? 大抵は一括変化できるだろうけど。
それでもjupyter などで使おうとするとやはり苦労するよね? 質問(1)
‘__main__’ in globals()
や、
2 in [1,2,3]
がTrueになるのはなんで?
定数 in 集合は、定数を取り出せと言う意味なのかな?
i in [1,2,3]
が許されないのは何を取り出すのわからないからかな?
質問(2)
print( [i for i in [1,2,3] ] )
が許されて
print( (i for i in [1,2,3] ) )
が許されないのがわからない。 >>183 質問(1)は自己解決
まともな文法書を読み始めて2日目で、ようやくたどり着いた。
《in演算子によるメンバシップ検査》
書き方: 要素 in リスト
リストの中に要素があればTrue,なければFalseを返す.要素が含まれないことを検査するにはnot inと記述する >>182
グダグダ言う暇あったらテキトーなIDE使ってみなよ
スペースの数とかも指定できる
そもそも他の開発者がいちいち一括変換とかして苦労してるわけ無いだろ >>183
質問(2)について
二つ目が「許されない」と言う意味が分からないが、少なくとも文法的には間違いではない
(i for i in [1,2,3] ) はジェネレータ内包表記といいgeneratorオブジェクトになる
ジェネレータはnext関数に渡すと次々に値を返す。最後まで到達するとStopIteration例外を出す
>>> gen = (i for i in [1,2,3])
>>> gen
<generator object <genexpr> at 0x7fb1b1a86ba0>
>>> next(gen)
1
>>> next(gen)
2
>>> next(gen)
3
>>> next(gen)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration ビートセイバーの通常プレイってなんだかんだで斬る方向も指定されるから
いまいち魅せプレイには向いてないんよな
めめめにダースモールプレイでくるくるしてほしいンゴ
https://www.youtube.com/watch?v=e-m09N_HtRk ■ このスレッドは過去ログ倉庫に格納されています