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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2019/02/04(月) 21:22:10.08ID:9MrdxUVg
★当スレに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/ ログイン必須になりやがった(゚Д゚#)
−−−−天麩羅ここまで−−−−
2019/02/17(日) 17:56:47.88ID:T3+WXnTJ
>>183 質問(1)は自己解決
まともな文法書を読み始めて2日目で、ようやくたどり着いた。

《in演算子によるメンバシップ検査》
書き方: 要素 in リスト 
リストの中に要素があればTrue,なければFalseを返す.要素が含まれないことを検査するにはnot inと記述する
2019/02/17(日) 18:15:18.83ID:naWxhgEk
>>182
グダグダ言う暇あったらテキトーなIDE使ってみなよ
スペースの数とかも指定できる
そもそも他の開発者がいちいち一括変換とかして苦労してるわけ無いだろ
186デフォルトの名無しさん
垢版 |
2019/02/17(日) 19:09:07.40ID:9eEjpIke
>>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
2019/02/17(日) 19:20:42.25ID:glILnxtO
ビートセイバーの通常プレイってなんだかんだで斬る方向も指定されるから
いまいち魅せプレイには向いてないんよな 
めめめにダースモールプレイでくるくるしてほしいンゴ

https://www.youtube.com/watch?v=e-m09N_HtRk
2019/02/17(日) 19:20:57.80ID:glILnxtO
誤爆
2019/02/17(日) 19:31:52.09ID:+S0MQzvf
>>186 有り難う。 同じような形なのになんでprint ができないのかと言う疑問だった。
print( (i for i in [1,2,3] ) )
は、ジェネレータから取り出してしないからと言う理解で良いの?
2019/02/17(日) 19:51:22.25ID:OPCV5npO
>>189
Pythonの分かりにくいところだよね
同じ記号を別の意味で使っている

[1,2,3] リスト。集合は可変
(1,2,3) タプル。集合は不変

if 2 in [1,2,3] リストの中に2が含まれるか判別
for i in [1,2,3] リストの要素で繰り返し

[i for i in [1,2,3]] リストの要素で繰り返した結果を演算しリストとする
(i for i in [1,2,3]) リストの要素で繰り返した結果を演算するgeneratorを返す

普通に考えたらgeneratorではなく演算結果をタプルで返すように思うよね
2019/02/17(日) 20:07:17.70ID:U9IIuCB3
内包表記でタプルは作れない(ジェネレータになる)だけで一貫してるだろ
それに
for i in イテラブル
じゃなくて
i for i in イテラブル
だし
2019/02/17(日) 20:25:38.62ID:WySC1FKQ
>>184
「まともな文法書」が何かを記していただければ、このスレの住民には助かると思います
2019/02/17(日) 20:31:16.29ID:tKx1WgvG
in単体なら演算子だけど、forではそれ含めて文だからねぇ
文脈によって解釈が変わるのはC/C++でも英語でも同じ

そしてタプルを作るのは丸括弧ではなく「,」である
2019/02/17(日) 20:33:32.71ID:U9IIuCB3
というか「(1,2)はカッコがあるからタプル」は偽だから
(x for x in [1,2,3])がタプル返す義理はないな
まぁその辺のサイトみたら軒並み「タプルはカッコでくくってつくる」って書いてあるのはそうだけど
ドキュメントにはそうは書いてない
195デフォルトの名無しさん
垢版 |
2019/02/17(日) 20:39:37.47ID:9eEjpIke
確かにカッコ使わずに
a =1,2,3
でもタプルになるしな
2019/02/17(日) 20:42:19.07ID:OPCV5npO
>>194
カンマで区切ればタプルにるけどさ、タプルの出力は必ずカッコで括られるんだから、直感と違うわけだよ
2019/02/17(日) 20:44:17.06ID:GfPZMs79
カッコつけてるだけだよ
2019/02/17(日) 20:46:20.17ID:4CukteGI
リストはイテラブルなオブジェクトでイテレータではないらしいけど、なんで最初からリストをイテレータとして使えるようにnextメソッドを実装しておかないんや
2019/02/17(日) 20:47:29.51ID:glILnxtO
>>196
practicality beat purity(実用性は純粋さに勝る)だぜ
ジェネレーターにすれば途方もない数も扱えるわけだし
デフォでジェネレーターになるのはしょうがない

range()がリストではなくイテレーターを返すようになったようにな
2019/02/17(日) 20:47:49.01ID:p7gH0RbB
>>193
だよな
(1)は整数の1、でも、(1,)は整数の1を持つタプル
()だけではタプルを生成することにはならないからな
これは俺でも知っている超超入門レベル知識だからな

>>194
(x, for x in [1,2,3])とかならタプルを生成しなんだろうが
2019/02/17(日) 20:50:48.52ID:U9IIuCB3
>>200
(x, for x in [1,2,3])
はシンタックスエラー
((x,) for x in [1,2,3])
ならタプルを3つ返すジェネレータができる
2019/02/17(日) 21:11:43.56ID:GfPZMs79
(x,)っていかにも要素2つありそうな見た目だけど要素数1のタプルなの?w
2019/02/17(日) 21:19:41.54ID:OPCV5npO
>>202
公式のチュートリアルにもUglyと書いてあるだけあってなんだかなぁとは思う
2019/02/17(日) 21:55:32.99ID:nNpu08PZ
益々訳ワカメになってきた。
2019/02/17(日) 22:00:38.59ID:p7gH0RbB
>>201
(x, for x in [1,2,3])
がエラーなのは分かっている
でも、なんかタプルの(1,2,3)を作ってくれそうな感じだろ
{ n:str(n) for n in [1,2,3] }で辞書を作れるんだから
2019/02/17(日) 22:08:56.80ID:nNpu08PZ
((x,) for x in [1,2,3])

ってどんな意味があるのかわからん。

print(list ((x,) for x in [1,2,3]) )
#[(1,), (2,), (3,)]

(1,) ってどんな意味があるの?
2019/02/17(日) 22:15:21.52ID:glILnxtO
>>206
(1,)とか(2,)っていうのは「要素がひとつだけのタプル」を示す
2019/02/17(日) 22:56:02.90ID:nNpu08PZ
やっぱチュートリアルをちらっと読んだだけじゃ、基本的なことがわからないな。

言語設計者の開発秘話みたいなものが聞けると面白いと思うんだけど。
2019/02/17(日) 23:03:18.87ID:Hg63DdMm
>>178
Ruby で言えば、File.open にブロックを付けると、
ブロックを抜けるときに、例外時にも自動的に、開いたファイルを閉じてくれる

自分で例外処理、finally・ensure などに、file.close を書いたのと同じこと

コンテキスト・マネージャー。
Python にも、同じものがあるはず
2019/02/17(日) 23:20:56.32ID:glILnxtO
pythonの基本方針はimport thisで読める

False == False == FalseがTrueになるとか面白いよな
211デフォルトの名無しさん
垢版 |
2019/02/17(日) 23:51:24.85ID:9eEjpIke
True+Trueが2になるとかな
2019/02/18(月) 00:38:39.85ID:9Y7UoWyl
>>207 ますますわからなくなってきた。
タプルと言うのは、複数の数値の羅列だと思ってたのに、一つでなんでタプルになり、一つのタプルにどんな効果が出てくるの?

そう言う文法だからと言えばそうなんだろうけど、
1 in 1 をエラーにして、1 in (1,) をTrue にする意味があるんだろうか?
1 in (1) と区別が付かんと困るからかな? ただのカッコ()とタプルの区別を カンマの有無で区別すると言うことか。
2019/02/18(月) 00:42:35.27ID:SjVwlNp1
「1 in 1 をエラーにして、1 in [1] をTrue にする意味があるんだろうか?」
2019/02/18(月) 00:54:13.98ID:Tb62uZUC
「数値1つ」と「数値1つだけを含んだ集合」は別のものだ。
1つの要素しか含まないリストを作ることもできるし
1つの要素しか含まない辞書も作ることができる
タプルができない理由はない

まぁプログラミングというか論理学の話になるけどな

1 in 1でエラーが出るのは当然
1と1は同値であり、1の中に1が含まれているわけではないのだから
2019/02/18(月) 00:56:36.72ID:9Y7UoWyl
>>210 import this があるなんて面白いね。

プログラマが持つべき心構え (The Zen of Python)
https://qiita.com/IshitaTakeshi/items/e4145921c8dbf7ba57ef

The Zen of Python, by Tim Peters
ちなみに、"Zen"は日本語の「禅」です。

1 in 1 を許さないのは禅問答になるのかな? 悟りを開くしかないのかな?
2019/02/18(月) 01:02:08.73ID:9Y7UoWyl
>>214 リストやタプルは集合体だから何かの入れ物の中に入ったもので。
1 in 1 は、入れ物がないから取り出せないと言う感じかな?

じゃ、リストやタプルは現実社会のどんなものに対応するんだろう。
2019/02/18(月) 01:18:45.55ID:Tb62uZUC
「1つの要素」と「要素ひとつだけを含む集合」は
「弾丸一発」と「一発だけ弾が残った弾倉」と同じくらい違う

「書類1枚」と「1枚だけ書類を挟んだファイル」と同じくらい違う

風来のシレンで言うと
「アイテムひとつ」と「アイテムがひとつだけ入った壺」と同じくらい違う


pythouの内部的にはリストやタプルには「複数の要素を扱うための機能」がついてる
単一の要素整数にはそれがない

だから単一の要素にinを使ってもそもそも「その要素が含まれているかどうか」を確認することができない
2019/02/18(月) 01:29:08.54ID:SjVwlNp1
JavaScript「呼んだ?」
1 == [1] //=> true
2019/02/18(月) 01:36:54.94ID:Tb62uZUC
>>218
これがあるから===しか使いたくない
220デフォルトの名無しさん
垢版 |
2019/02/18(月) 08:12:09.71ID:7eiXgP3l
int[] a = { 1, 2, 3, 4, 5, 6 };

int sum = 0;

for(int i = 0; i < a.Length; ++i)
{
sum += a[i];
}

int b = sum / a.Length;
Console.WriteLine(b);

とあるんですがsum/a.Lengthは何割何で計算してるんですか?
配列の計算原理が本ではいまいち分からないので教えて下さい;
221デフォルトの名無しさん
垢版 |
2019/02/18(月) 08:41:37.17ID:tx9DPBTs
>>220
for文による繰り返し処理を勉強してください
2019/02/18(月) 08:45:07.32ID:JBcAVpfH
>>220
そいつぁC#で合計÷要素数=平均じゃないの?
int同士で端数が切り捨てられる事を聞きたいの?
2019/02/18(月) 09:46:20.06ID:qsq8EO4j
Ruby 2.6 では、

ary = [1, 2, 3]
ary.sum
#=> 合計は、6

平均値は、合計を要素数で割る。
mean = ary.sum / ary.length
2019/02/18(月) 10:44:29.19ID:1FoQC5sv
>>223
死ね
2019/02/18(月) 12:18:05.03ID:NoNskV/l
>>223
荒らし
2019/02/18(月) 12:38:24.20ID:qDhO0A3F
計算結果や変数内の値はprintで表示できる
そんなことが説明なされない本なんて売っぱらちゃいな
2019/02/18(月) 14:05:11.71ID:7eiXgP3l
>>221->>222
for文は理解できているのですが、a.Lengthこれが何の数値に化けるのか分からないです…
要素数というのはつまリ6になるということですか?
2019/02/18(月) 14:06:00.10ID:mU1u6kNH
>>227 そう
>>220 python だと、

a = [ 1, 2, 3, 4, 5, 6 ]
sum = 0
for i in range(len(a)):
sum += a[i]

b = sum / len(a)
print(b)
print('配列内の合計=',sum,'割る','配列長=',len(a),'答は',b)
#3.5
#配列内の合計= 21 割る 配列長= 6 答は 3.5
222.5万、税、都税
2019/02/18(月) 14:12:48.12ID:fpnGWm5B
>>227
何の数値に化けるのか分からなかったら、
print(a.Length)してみればいい。
230デフォルトの名無しさん
垢版 |
2019/02/18(月) 14:40:05.59ID:oU/NFgq1
>>198
分けないとマルチプロセスで困るだろ
231デフォルトの名無しさん
垢版 |
2019/02/18(月) 14:46:31.19ID:oU/NFgq1
pythonは
a=[1,2,3]
で a.len とか a.Length とか取れないのはきもいな
2019/02/18(月) 14:54:14.63ID:7eiXgP3l
>>228
完全に理解できました!
ありがとうございます(・ω・)ノ
2019/02/18(月) 15:01:26.05ID:Tb62uZUC
>>231
a.__len__()
2019/02/18(月) 16:14:05.74ID:mU1u6kNH
>>148 >>149
どちらも同じみたいだね。

Python チュートリアル 第 3 版
https://books.lifewithpython.com/books/58/
Python の作者である Guido van Rossum 氏が書いた Python の入門書です。

尚、この書籍と同じチュートリアルに対する日本語訳がウェブ上でも公開されています(ウェブ上の翻訳と本書の翻訳は異なります)。 好みに応じて好きな方を選ぶとよいでしょう。

Python チュートリアル ― Python 3 ドキュメント
https://docs.python.jp/3/tutorial/index.html

個人的には、他の言語でプログラミング経験のある方が Python を始めるときにはよいのですが、プログラミング自体が初めての方にとっては本書は少し難しいのではないかと思います。
プログラミングが初めての方でこの本を読みたい方には、一度中身をチェックしてみてから購入するかどうかを決めることをおすすめします。

Guido 氏が書いたチュートリアルということで、プロの Pythonista なら誰しも一度は読んだことのある一冊でしょう。
235デフォルトの名無しさん
垢版 |
2019/02/18(月) 16:25:56.30ID:OhspBoh0
Pythonのええとこは何でも特殊メソッドに委譲するとこやね
マジで何でもできる、おもちゃに最適
2019/02/18(月) 16:41:09.54ID:3yKPK3LO
>>234
Python の理解度確認をするために「Python チュートリアル 第3版」を読んだ
Python 本
オライリーから出版
https://kakakakakku.hatenablog.com/entry/2019/01/13/140726
オライリーから出版されている「Python チュートリアル 第3版」を読んだ.
読者対象として「Python 入門者のための」と書いてあるけど,そこそこ難しい内容もあり,中級者でも楽しめる内容になっている.
本書の最初に載っている「訳者まえがき」にも,理解度によって読む方法を変えて良いと書いてあった.
今回本書を読んでみて,勉強になった部分を整理しておこうと思う.
なお,本書は「Python 3.5.1」をサポートしている.さらに付録もあり,特に「付録E」と「付録F」は面白かった.
2019/02/18(月) 17:20:44.97ID:3yKPK3LO
>>236

https://kakakakakku.hatenablog.com/entry/2019/01/14/000300
模擬試験(無料)
認定スクール「DIVE INTO EXAM」から無料で提供されている模擬試験がある.まだ β であると記載されているけど,計80問あり,試験同様に計40問出題される.
模擬試験の受験回数に制限はなく,何度も何度も繰り返し受験できる.少なくとも1度は受験しておくと良いと思う.
2019/02/18(月) 19:22:55.51ID:W9szlA1+
>>227
.lengthとかcountってのは大概その集団の要素の数だと認識しておけば良い。定石のようなものだ。
2019/02/18(月) 19:52:34.04ID:mU1u6kNH
しかし、最初python って簡単じゃんと思ったけど、なんか混乱する。

() [] {}
add append extend del discard とか、

最初理解できないのは、何がオブジェクトなのか?
2019/02/18(月) 20:45:21.68ID:9P3l8zH4
このスレで連投されてる内容の答えはすべて公式ドキュメントに書いてある
たとえば>>228なら
for i in a: sum += i
でもいいし(というかそれが普通)
だいたい総和はsum(a)で、平均値はstatistic.mean(a)で一発で出る
2019/02/18(月) 20:45:59.87ID:9P3l8zH4
statistics.mean(a)
のミス
242デフォルトの名無しさん
垢版 |
2019/02/18(月) 22:13:42.80ID:EFaetCEP
クロージャーとかデコレータとか覚えれへんわ
2019/02/18(月) 22:34:44.93ID:F+QeAL77
>>189
>>184のまともな文書には、print( [i for i in [1,2,3] ] ) が許される理由が書いてあると思うんだが。
許される理由が分かれば許されない理由もなんとなくわかるだろ。
先ずまともな文法書でprintを読め
と言っても、低脳すぎてまともな文書を読むのに四苦八苦だから尋ねているのかもしれないが
(まぁ、まともな文書、許されるって素敵な言葉を使うぐらい超優秀な脳だから、この可能性は低いか)

超簡単にまとめると
class AA :
pass

class AAA :
def __str__(self): # 僕を文字列で表す要求来た時、こう紹介します
return "AAA"

print(AAA()) #許される
print(AA()) #許されない
244デフォルトの名無しさん
垢版 |
2019/02/19(火) 00:12:01.46ID:1Fqwt8so
>>239
del使うシーンは滅多にないな
全く無い訳じゃないけど
245デフォルトの名無しさん
垢版 |
2019/02/19(火) 00:13:06.83ID:1Fqwt8so
>>242
それは今君に必要が無いということだ
必要があって使ってれば勝手に覚わる
246デフォルトの名無しさん
垢版 |
2019/02/19(火) 00:17:12.07ID:x5yxwCIo
Python3エンジニア認定基礎試験って模擬試験と同じ問題出るわけないわよね
247デフォルトの名無しさん
垢版 |
2019/02/19(火) 00:46:31.87ID:x5yxwCIo
てか模擬試験の解答見にくいなあ
248デフォルトの名無しさん
垢版 |
2019/02/19(火) 00:49:41.46ID:c2xVE4LG
試験のためにpython勉強してんのか?
あほやん
2019/02/19(火) 01:56:10.83ID:UOhpPyGI
やんやん
250デフォルトの名無しさん
垢版 |
2019/02/19(火) 02:50:12.73ID:fH1K3jOo
>>243
何食ってたら初心者スレでこんなに上から目線で不快な文が書けるんだろう
2019/02/19(火) 03:19:28.34ID:UOhpPyGI
自分より弱い者に憎しみを抱くはずがないでしょう 抱くのは哀れみ
252デフォルトの名無しさん
垢版 |
2019/02/19(火) 06:23:45.14ID:QXXeWHDh
>>250
うんこ
2019/02/19(火) 06:26:20.60ID:hAizIKGb
>>243
>>print(AA()) #許されない

許されるだろ
2019/02/19(火) 07:06:55.77ID:TL2+PvJX
オブジェクトって変数+関数みたいなものと理解してる
だけど、pythonでlen()みたいな関数が存在してるのはなんでや
obj.len()みたいに書く方がオブジェクト指向ぽいのに(´・ω・`)
2019/02/19(火) 09:35:20.19ID:snU9lsNN
後付けだから
2019/02/19(火) 10:11:21.93ID:SwtNBaDU
>>254
obj.__len__()
257デフォルトの名無しさん
垢版 |
2019/02/19(火) 10:37:48.43ID:ClxsX7KR
うーんダンダーキモいな
objが__dict__属性もってるなら
obj.len = obj.__len__
obj.len()
はい
2019/02/19(火) 11:03:15.41ID:D8b3v+Fo
>>254
必ずしも同じ名前のメソッドで要素数を取得できるとは限らないから
Javaの配列の.lengthとコレクションの.size()なんかいい例
2019/02/19(火) 17:25:15.51ID:xAiOFAtZ
>>154 pdf のキャラクターコードが違っていて、コピペでは、エラーが起きるから、やはり大きなサンプルはソースが提供されていることが必要だな。

2番目の大学の先生の【Python3入門】はサンプルソースも付いている。
math ライブラリーの関数一覧くらいは載せてても良いとは思ったが、贅沢は言えない。入門には必要ないと言えばそうかも知れないが。
2019/02/19(火) 17:51:31.05ID:t+ZZI+Uh
vs codeでpythonを実行するときのコマンドはなんですか?
ターミナルから実行するのが普通なんでしょうか?
2019/02/19(火) 17:57:52.58ID:xAiOFAtZ
>>260 あまり知らないけど、こんなあたりで良いの?
https://docs.microsoft.com/ja-jp/visualstudio/python/tutorial-working-with-python-in-visual-studio-step-01-create-project?view=vs-2017
2019/02/19(火) 18:03:26.75ID:t+ZZI+Uh
あと、vsコードの補完は、pythonエクステンションに含まれているのですか?
2019/02/19(火) 23:26:35.02ID:xISlfG0u
print() は、わかりやすいが、BASICみたいな ? と言うような自由な記法があっても良いのではと思ってたけど、関数がオブジェクトだから結構自由にできるんだね。

p = print
p(111)
#111 使い過ぎるとわけわかめになりそうだが。
2019/02/19(火) 23:36:01.89ID:x5gWYD95
>>262
vs codeとvsコードの表記の揺らぎを直すところからやってみよう!
2019/02/20(水) 00:19:50.88ID:1HzmSa/X
>>258
俺、Pythonを実質2週間ぐらいやっているんだけど
やり始めてすぐに>>254のような感を覚えた。
それなりの理由があるってことか(ちなみにJavaはさっぱり分からん)。

他の言語同様に、変数、メソッド名をアンダースコア(シングル、ダブルアンダー)で始めるとかで何かしらの意味を
与えていると分かっているんだが、目下あんまり調べてないからな。
プライベート変数がダンダーって見てすぐにわかるから良いと言えばその通りなんだがな
2019/02/20(水) 00:27:21.38ID:zgA3z1dT
pythonの関数名や変数名のアンダースコアは文法上は何の意味もなかったはず
そもそもpythonにはプライベートやパブリックの概念が存在しない
単に人間が見分けやすいようについけてるだけ
2019/02/20(水) 00:41:35.75ID:1HzmSa/X
>pythonにはプライベートやパブリックの概念が存在しない
これ知った時は俺驚いたよ。
privete、public等のキーワード付けて明確にしないのは、
Python教の哲学なんかと。
2019/02/20(水) 00:43:10.98ID:PF1BNO4k
こんな記法を見たんだが、どう言う文法からこんなのが出てくるの? 3項演算子みたいなものだが。
短絡評価if と言うらしいけど。

i = 8
print(i%2 and'odd!!!!'or'>EVEN<')
#>EVEN<

短絡評価というのは先に成立した(True)方だけを見て後ろは見ないと言う方式みたいだね。
また、if が無くても評価式だけで成立するんだね。
print(0 and 2 or 5)
#5
print(1 and 2 or 5)
#2

しかし
print(1 and 2 )
#2
はなんとなく違和感がある。

そう言えば、3項演算子があってなんで2項演算子みたいなものが無いんだろうと思ってた。
3項演算子なら
2 if 評価式 else 5 が有って
2 if 評価式 が無いのが不思議だった。
評価式 and 値(0以外) がそれに当たるのか。
しかし、 1 and 2 の時どうして後ろの値が有効になるのかな?
2019/02/20(水) 00:50:35.52ID:hdPlDSUg
True and 2
2019/02/20(水) 00:53:32.30ID:PF1BNO4k
短絡評価自体は理解しやすいんだが。
https://qiita.com/dinasetiana/items/2b0cb63e91e9511d1c6e

True and b
のとき何故、bの値を取るのか? 先後に成立した評価の値を取る?何故 True では無くbの値を取るのか?
271デフォルトの名無しさん
垢版 |
2019/02/20(水) 00:56:34.30ID:gK0qpGCl
>>268
公式DOC>FAQにずばり詳解されてるので見るヨロシ
2019/02/20(水) 01:30:40.30ID:DM4qe6j0
FAQ は見つけられなかったけど、標準ライブラリの仕様書にしっかり書いてあった。
FAQの項目を教えてもらうとありがたい。

真理値判定
ブール演算 --- and, or, not
x or y x が偽なら y, そうでなければ x (1)
x and y x が偽なら x, そうでなければ y (2)
not x x が偽なら True, そうでなければ False (3)

さっと読み流した時は、and or は単なる論理的な演算だけだと思ってたから、値を取ると言う考えがまるでなかった。

注釈:

(1) この演算子は短絡評価されます。つまり第一引数が偽のときにのみ、第二引数が評価されます。
(2) この演算子は短絡評価されます。つまり第一引数が真のときにのみ、第二引数が評価されます。
(3) not は非ブール演算子よりも優先度が低いので、 not a == b は not (a == b) と解釈され、 a == not b は構文エラーです。
273デフォルトの名無しさん
垢版 |
2019/02/20(水) 01:36:22.16ID:R9Rgujjr
>>266
一応メソッドやメンバの名前の先頭に__(アンダースコア2つ)を付けると擬似的にプライベートになる(外から参照するとエラー)
実際は __名前 を _クラス名__名前 に置き換えるだけだが
2019/02/20(水) 03:12:26.13ID:B2QSVSiS
>>260-261
Code Runner という拡張機能で、右クリックメニューから、指定したソースコードの範囲を実行できる。
Ctrl+Shift+P で、Run Code でも同じ

>>254
Python は、Ruby よりも不自然。
Ruby, JavaScript みたいにメソッドチェーンしにくい

Ruby では、メソッド名を、シンボル: で渡せるから、処理の内容が明確

[1, 2, 3].inject( :+ ) #=> 6
275デフォルトの名無しさん
垢版 |
2019/02/20(水) 03:15:50.94ID:P3DZex+Y
python資格試験はクラス捨ててもOK?
2019/02/20(水) 03:18:46.77ID:W95E7B6+
>>272
https://docs.python.org/ja/3/faq/programming.html#is-there-an-equivalent-of-c-s-ternary-operator
昔の名残。条件式はif文ではないのでelseを省略することは出来ない(値を返さねばならない
2019/02/20(水) 05:23:08.72ID:wMUHduDL
>>261
c#の場合はターミナルからdotnet runで実行だと思いますが、pythonの場合はそういったものはないのでしょうか
2019/02/20(水) 07:12:57.02ID:SpCnH/g7
>>274
死ね
2019/02/20(水) 08:33:48.20ID:PF1BNO4k
>>277 コンソールから直接ソースを叩けば動くよ。

hoge.py
hoge
或いは
python hoge.py

要は、exeファイルと同じ動作をする。だから、exploreから .pyをクリックしても起動する。
(ただ、コンソールが見えないとあまり解らないだろうけど。)

python は、コンパイルという作業がいらないから、
dotnet run の様にコンパイルの指定が必要ない。
2019/02/20(水) 09:06:26.28ID:DM4qe6j0
>>277 だから普通にDOSコマンドの実行と同じprocess.start で良いのでは?
勿論、python が、インストールされている必要はあるが。

http://ni4muraano.hatenablog.com/entry/2017/07/08/233224
<略>
p.StartInfo.Arguments = @"/c python hello.py";
p.Start();

pythonがインストールされていない環境にpython のソースコードだけを渡しても動かないから、その場合は考慮の必要はありそうね。

PythonスクリプトをWindows環境で動くexeファイルにしよう
https://www.sejuku.net/blog/65881
2019/02/20(水) 10:30:31.71ID:wMUHduDL
>>279
>>280
たんにpythonと入れてからパスを指定すればいいだけなんですね
あと、右クリからもターミナルで実行ができました
2019/02/20(水) 10:51:51.66ID:BBElsiq0
>>260
俺、いつもエディタ(geditやGeanyやVS code使ってる)の横にターミナル開いといて、
ソース保存→ターミナルで $ python3 xxx.py→エラー→エディタで編集・保存→ターミナルで再実行(↑&Enter)→ エディタで編集・保存....
てな感じでやってるんだけど、エディタから実行したほうがやっぱり便利なんですか?
2019/02/20(水) 11:03:36.79ID:spTGKHkg
>>282
煽りとかじゃなくて逆に聞きたいんだけど、
vs code使ってターミナルで実行する意味(メリット)がわからないんだけど。
vs codeのブレークポイントとか利用しないって事?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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