Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
開発グループ / 植木 基博
このスライドは何?
・PyconJP 2017 にて発表させていただいたクイズ企画のスライドとなります。
・発表中に飛ばした問題は割愛しています。
また、スライドの意図等を、頭の方に持って来るなど、
今、お読みの方が少しでも楽しめるよう、工夫を...
WHY?
なぜクイズをやったか
4
IEEE Spectrum で1位!
・Pythonは色んな所で活用されだしている
・特に最近では、抽象度の高いフレームワークが登場
・Web、データ分析、機械学習、システムプログラミング・・・
▶ 反面、プログラミン...
WHO?
自己紹介
■ 植木 基博
・
・自社サービス popinfoの責任者
■ popinfo
・O2O プラットフォーム (6,500万ユーザー)
・7年間開発し続けている
・Django, Flask, Celery …
・AWS (EC2, R...
アイリッジのご紹介
7
インターネットを通じて、世の中に新しい価値を創造し続ける。
アイリッジのご紹介
8
・ユーザー数 6,500万の O2O サービス popinfo の企画、開発、運用
・金融業開初の電子通貨サービスの企画、開発、運用
・企業向けスマホアプリサービスの企画、開発、運用
アイリッジのご紹介
9
・主要な開発言語として、Pythonを採用
・製品、コードの品質を重視する文化
・AWS, GCP を積極的に取り入れたクラウドベースの開発
アイリッジのご紹介
10
・なによりも、「楽しく」
⇛
We are hiring
11
● Pythonが好きな方、楽しく仕事をしたい方
● Python + Lambda、Batch、DataPipeline、Glue
などサーバーレスな設計をしたい方
● 品質にこだわって、サービス開発をしたい...
READY?
・最大4択形式の「勝ち抜き」 (間違えると次の問題の解答不可)
・事前配布した札を上げてください
・この文字が読みづらい人は、前に来てください
・制限時間は10秒程度です
・【お願い】間違えがあったら、あとでこっそり教えてください!
ルール
開
始
練
習
次のうち、標準ライブラリにないものはどれでしょうか。
A: httpサーバーのライブラリ
C: ftpサーバーのライブラリ
B: smtpサーバーのライブラリ
D: 全部ある
httpサーバー、smtpサーバーは、標準ライブラリで提供されています。
例えば、コマンドライン1行で、httpサーバーを立ち上げることができます。
$ python3 -m http.server
また、http, smtp, pop3, f...
練
習
「無限」という数の扱いに関して正しい説明はどれでしょうか。
A: true は数値比較において、
無限と同じ意味である。
C: numpy などのサードパーティーモ
ジュールを利用する必要がある。
B: 「inf」 という無限を表す値がある
D...
Pythonでは、言語標準で 無限を取り扱うことができます。
float型の値となります。
>>> float(‘inf’)
inf
>>> 9999 < float(‘inf’)
True
B: 「inf」 という無限を表す値がある
初
級
次のうち、if 文の書き方として正しいものはどっち?
A: if a == 1:
----
B: if ($a == 1) { ... }
----
python は波括弧の代わりに、インデントを使います。
ただし、複雑な if の条件式の場合、( )をよく使います。
よい if 文の書き方も PEP-8 に記載されています。
A: if a == 1:
次のうち、pythonの生みの親はどれでしょう。
A: 左
C: 右
B: 真ん中
D: ここにはいない
左から、セガール、セガール、セガール です。
D: ここにはいない
Python2系は、未だに色んな所で使われています。
2系の最初のバージョン( 2.0 )は、何年前にリリースされたでしょ
う。
A: 今年リリースされたばかり
----
B: 約 17年前
----
2.0は、2000年10月にリリースされています。
2010年 7月 3日 には、2.7.0がリリースされ、今でもメンテナンスされています。
Python は、言語の標準仕様がとても安定しています。
そのため、Python言語コアに詳しくなる事...
python で関数を定義する時に使うものとして、正しくないものはど
れでしょうか。
A: def
C: class
B: lambda
----
python は “def” で関数を定義します。
lambda で、無名関数を定義することもできます。
ただし、lambdaに関しては、公式のコーディング規約にて、変数に
代入するような使い方はすべきでないと記載されています。
読みやすいプロ...
現行で最新のstableなpythonのメジャーバージョンは?
A: 1系
C: 3系
B: 2系
D: 4系
最新は、3.6.2 で、2017-07-17 にリリースされました。
2.x は、2020年にサポート終了と言われています。
みなさん、早めに移行しましょう。
C: 3系
正しいロゴはどれでしょう。
A: 左
C: 中央右
B: 中央左
D: 右
C: 中央右
Pythonでは、こうあるべきという指標として、
「◯◯◯ of Python」という 20個の格言を定めています。
◯◯◯に当てはまるものはなんでしょうか。
A: Egg
C: Zen
B: Rule
D: Python
「Zen of Python」は、ソフトウェアはこう書くべき。という20個の格言です。
Pythonという名前が付いていますが、プログラムを書く上で、常に気を配るべき格言で
す。例えば、、
Special cases aren't specia...
Pythonで整数型は、最大いくつまでの数を扱えるでしょうか。
A: 255
C: 約 20億
B: 65,535
D: もっとずっと多い
何の工夫もしなくても、メモリの限り、大きな数字を扱えます。
D: もっとずっと多い
pythonで予約語ではないものはどれでしょうか。
A: in
C: as
B: on
D: is
in は、シーケンス型に含まれるかどうかを検査する演算子。
as は、モジュールインポート時に別名を付けるためのワード。
is は、オブジェクトの同一性を判定する演算子です。
on は、予約語ではないです。
B: on
中
級
次のうち、Zen of Python に書かれていないものは、どれでしょう
か。
A: Beautiful is better than ugly.
C: If possible, make it shorter.
B: Explicit is...
Beautiful is better than ugly.
醜いより美しいほうが良い。
Explicit is better than implicit.
暗黙的ではなく、明示的にしたほうが良い。
Readability counts.
読み...
python で関数を定義する時に使うものとして、正しいものはどれ
でしょうか。
A: lambda
C: lamda
B: labmda
D: lamdba
python は “def” で関数を定義します。
lambda をつかって、無名関数を定義することもできます。
lambda は、sorted等の組み込み関数などで便利ですが、
よく使う演算は、operator モジュールにあります。
読みや...
次のうち、評価値が異なるものはどれでしょうか。
A: ( ) is ( )
C: “ “ is “ “
B: [ ] is [ ]
D: None is None
is は同一性の比較で、 == は等価性の比較です。
list型は、定義する度に別の物(アドレス空間)となります。
また、== は、 __eq__ でオーバーライドすることができますが、is はできません。
【PyconJP にて、ご指摘いただ...
次の式を評価すると、どうなるでしょうか?
{1} + {2, 3} - {2}
A: (1, 3)
C: [1, 3]
B: {1, 3}
D: その他
pythonでは、 {1, 2, 3} など、波括弧を使うことで、「集合型」のリ
テラル表記が可能です。
しかし、「集合型」に対する加算、減算は定義されておらず、エラー
になります。
D: その他
Pythonでは、関数の説明に、docstring というコメントを書くことが
できます。
PEP-8 で、docstring の折り返しは、何文字以内にすべきと書か
れているでしょうか。
A: 64
C: 79
B: 72
D: 80
コメントやdocstringは 72文字。コードは、79文字までと書かれています。
また、チームで合意できる時は、コードは、最大99文字までなら良いとされていますが、
それでもコメントやdocstringは 72文字にすべきであると、念押しされ...
次の式を評価すると、どうなるでしょうか?
float(" .320")
A: 0.32
C: 1.32
B: 320
D: SyntaxError
標準型の規則を知っておきましょう。
例えば、野球の打率データなど、外部CSVを読み込む時に、ドットから始まるケースで、
無駄なコードを書く必要が無くなります。
A: 0.32
Dict型のキーとして使えないのはどれでしょうか。
A: int
C: tuple
B: str
D: list
Pythonの公式チュートリアルに説明があります。
Dict型のキーには、「immutable (変更不能な型)」なオブジェクトを指定する必要がありま
す。
辞書は キー (key) でインデクス化されています。このキーは何らかの変更不能な型に...
次の式を評価すると、どうなるでしょうか?
0.1 + 0.2 == 0.3
A: True
C: TypeError
B: False
D: SyntaxError
浮動小数点は、近似値のため、Falseになってしまいます。
Python3.5以降であれば、math.isclose()で 近似かどうかを判定できます。
math.isclose(0.1+0.2, 0.3) == True
B: False
変数 x の型が、整数であるかどうかを確かめる方法として、推奨さ
れる方法はどれでしょうか。
A: type(x) == int
C: isinstance(x, int)
B: type(x) == type(1)
D: issubclass...
type(x) は、変数x のクラスを返却します。
しかし、公式ドキュメントには、以下の記述があり、isinstance() を推奨しています。
オブジェクトの型の判定には、 isinstance() 組み込み関数を使うことが推奨さ
れます。こ...
上
級
次のうち、pythonの生みの親はどれでしょう。
A: 左
C: 右
B: 真ん中
D: ここにはいない
左から、Go, lisp, python です。
間違った人は、今日、選んでしまった言語をググろう!
C: 右
Ver 1.0 のリリースが、Pythonよりも古い言語はどれでしょうか。
A: PHP
C: Ruby
B: Java
D: ここにはない
Python: 1994年
PHP: 1995年
Java: 1996年
Ruby: 1995年
Pythonと同じ頃、多くの言語が生まれています。
Pythonよりも古い言語は、例えば Perl (1987) があります。
D: ここにはない
Pythonの標準モジュールで出来ることは?
A: 速く走る
C: 空を飛ぶ
B: 海を渡る
D: 何を言ってるかわからない
Pythonには、イースターエッグとして、「import antigravity」があります。
import すると、ブラウザが立ち上がり、xkcd のサイトにいきなり飛ばされ、Pythonで空を
飛ぶ漫画が表示されます。
海外のショートコミッ...
次の式を評価すると、何になるでしょうか。
True + False is True
A: True
C: TypeError
B: False
D: SyntaxError
ブール値は、int型のサブクラスで、True == 1 , False == 0 です。
そのため、以下に簡約されます。
(1 + 0) is True
1 is True
しかし、 1 とTrue は、等価ですが、同一ではありません。
is ...
次のうち、Pythonの生みの親はどれでしょう。
A: 左
C: 右
B: 真ん中
D: ここにはいない
左から、PHP, Python, Go です。
間違った人は、髭をのばそう!
(女性の方は、髭の人とお付き合いしましょう)
A: 真ん中
楽しんでいただければ
幸いです。
ありがとうございました!
Upcoming SlideShare
Loading in …5
×

クイズ・Python勝ち抜きバトル pycon jp_2017

1,005 views

Published on

Pycon JP 2017 にて発表させていただいた資料です。
お茶の間の皆様もお楽しみいただけるよう、工夫したバージョンとなります。

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

クイズ・Python勝ち抜きバトル pycon jp_2017

  1. 1. 開発グループ / 植木 基博
  2. 2. このスライドは何? ・PyconJP 2017 にて発表させていただいたクイズ企画のスライドとなります。 ・発表中に飛ばした問題は割愛しています。 また、スライドの意図等を、頭の方に持って来るなど、 今、お読みの方が少しでも楽しめるよう、工夫をさせていただきました。 ・クイズの性質上、初心者向けの内容が多いですが、 中級者の方も「気付き」が得られるよう、解答内に豆知識がございます。 ・ぜひ、お仲間で集まり、楽しみながらページをめくってください。 2
  3. 3. WHY?
  4. 4. なぜクイズをやったか 4 IEEE Spectrum で1位! ・Pythonは色んな所で活用されだしている ・特に最近では、抽象度の高いフレームワークが登場 ・Web、データ分析、機械学習、システムプログラミング・・・ ▶ 反面、プログラミングツール化してきているのではないか。 ▶ もともとは、良い文法、良い文化、豊富な標準モジュール が評価されていた ▶ ツールとしてのPythonではなく、言語仕様や文化にも興味を持って欲しい
  5. 5. WHO?
  6. 6. 自己紹介 ■ 植木 基博 ・ ・自社サービス popinfoの責任者 ■ popinfo ・O2O プラットフォーム (6,500万ユーザー) ・7年間開発し続けている ・Django, Flask, Celery … ・AWS (EC2, RDS, Lambda, Athena, Pipeline, ElastiCache/Search) 6
  7. 7. アイリッジのご紹介 7 インターネットを通じて、世の中に新しい価値を創造し続ける。
  8. 8. アイリッジのご紹介 8 ・ユーザー数 6,500万の O2O サービス popinfo の企画、開発、運用 ・金融業開初の電子通貨サービスの企画、開発、運用 ・企業向けスマホアプリサービスの企画、開発、運用
  9. 9. アイリッジのご紹介 9 ・主要な開発言語として、Pythonを採用 ・製品、コードの品質を重視する文化 ・AWS, GCP を積極的に取り入れたクラウドベースの開発
  10. 10. アイリッジのご紹介 10 ・なによりも、「楽しく」 ⇛
  11. 11. We are hiring 11 ● Pythonが好きな方、楽しく仕事をしたい方 ● Python + Lambda、Batch、DataPipeline、Glue などサーバーレスな設計をしたい方 ● 品質にこだわって、サービス開発をしたい方 ● Pythonより Go言語書きたい人
  12. 12. READY?
  13. 13. ・最大4択形式の「勝ち抜き」 (間違えると次の問題の解答不可) ・事前配布した札を上げてください ・この文字が読みづらい人は、前に来てください ・制限時間は10秒程度です ・【お願い】間違えがあったら、あとでこっそり教えてください! ルール
  14. 14. 開 始
  15. 15. 練 習
  16. 16. 次のうち、標準ライブラリにないものはどれでしょうか。 A: httpサーバーのライブラリ C: ftpサーバーのライブラリ B: smtpサーバーのライブラリ D: 全部ある
  17. 17. httpサーバー、smtpサーバーは、標準ライブラリで提供されています。 例えば、コマンドライン1行で、httpサーバーを立ち上げることができます。 $ python3 -m http.server また、http, smtp, pop3, ftp など、よくあるプロトコルのライブラリは標準モジュールになっ ています。 C: ftpサーバーのライブラリ
  18. 18. 練 習
  19. 19. 「無限」という数の扱いに関して正しい説明はどれでしょうか。 A: true は数値比較において、 無限と同じ意味である。 C: numpy などのサードパーティーモ ジュールを利用する必要がある。 B: 「inf」 という無限を表す値がある D: 取り扱うことはできない。
  20. 20. Pythonでは、言語標準で 無限を取り扱うことができます。 float型の値となります。 >>> float(‘inf’) inf >>> 9999 < float(‘inf’) True B: 「inf」 という無限を表す値がある
  21. 21. 初 級
  22. 22. 次のうち、if 文の書き方として正しいものはどっち? A: if a == 1: ---- B: if ($a == 1) { ... } ----
  23. 23. python は波括弧の代わりに、インデントを使います。 ただし、複雑な if の条件式の場合、( )をよく使います。 よい if 文の書き方も PEP-8 に記載されています。 A: if a == 1:
  24. 24. 次のうち、pythonの生みの親はどれでしょう。 A: 左 C: 右 B: 真ん中 D: ここにはいない
  25. 25. 左から、セガール、セガール、セガール です。 D: ここにはいない
  26. 26. Python2系は、未だに色んな所で使われています。 2系の最初のバージョン( 2.0 )は、何年前にリリースされたでしょ う。 A: 今年リリースされたばかり ---- B: 約 17年前 ----
  27. 27. 2.0は、2000年10月にリリースされています。 2010年 7月 3日 には、2.7.0がリリースされ、今でもメンテナンスされています。 Python は、言語の標準仕様がとても安定しています。 そのため、Python言語コアに詳しくなる事の価値がとても高いと思っています。 B: 約17年
  28. 28. python で関数を定義する時に使うものとして、正しくないものはど れでしょうか。 A: def C: class B: lambda ----
  29. 29. python は “def” で関数を定義します。 lambda で、無名関数を定義することもできます。 ただし、lambdaに関しては、公式のコーディング規約にて、変数に 代入するような使い方はすべきでないと記載されています。 読みやすいプログラムを書きましょう。 C: class
  30. 30. 現行で最新のstableなpythonのメジャーバージョンは? A: 1系 C: 3系 B: 2系 D: 4系
  31. 31. 最新は、3.6.2 で、2017-07-17 にリリースされました。 2.x は、2020年にサポート終了と言われています。 みなさん、早めに移行しましょう。 C: 3系
  32. 32. 正しいロゴはどれでしょう。 A: 左 C: 中央右 B: 中央左 D: 右
  33. 33. C: 中央右
  34. 34. Pythonでは、こうあるべきという指標として、 「◯◯◯ of Python」という 20個の格言を定めています。 ◯◯◯に当てはまるものはなんでしょうか。 A: Egg C: Zen B: Rule D: Python
  35. 35. 「Zen of Python」は、ソフトウェアはこう書くべき。という20個の格言です。 Pythonという名前が付いていますが、プログラムを書く上で、常に気を配るべき格言で す。例えば、、 Special cases aren't special enough to break the rules. 特殊であることはルールを破る理由にならない。 弊社でも、コードレビュー等で、頼るべきバイブルとして、活用しています。 C: Zen
  36. 36. Pythonで整数型は、最大いくつまでの数を扱えるでしょうか。 A: 255 C: 約 20億 B: 65,535 D: もっとずっと多い
  37. 37. 何の工夫もしなくても、メモリの限り、大きな数字を扱えます。 D: もっとずっと多い
  38. 38. pythonで予約語ではないものはどれでしょうか。 A: in C: as B: on D: is
  39. 39. in は、シーケンス型に含まれるかどうかを検査する演算子。 as は、モジュールインポート時に別名を付けるためのワード。 is は、オブジェクトの同一性を判定する演算子です。 on は、予約語ではないです。 B: on
  40. 40. 中 級
  41. 41. 次のうち、Zen of Python に書かれていないものは、どれでしょう か。 A: Beautiful is better than ugly. C: If possible, make it shorter. B: Explicit is better than implicit. C: Readability counts.
  42. 42. Beautiful is better than ugly. 醜いより美しいほうが良い。 Explicit is better than implicit. 暗黙的ではなく、明示的にしたほうが良い。 Readability counts. 読みやすい事は、大切である。 C: If possible, make it shorter. Pythonは、長くても気にしません。 長くても美しく書きましょう 長くても明示しましょう 短さより、読みやすさを選びましょう Zen of Pythonは、コードレビューの 時に役立ちます
  43. 43. python で関数を定義する時に使うものとして、正しいものはどれ でしょうか。 A: lambda C: lamda B: labmda D: lamdba
  44. 44. python は “def” で関数を定義します。 lambda をつかって、無名関数を定義することもできます。 lambda は、sorted等の組み込み関数などで便利ですが、 よく使う演算は、operator モジュールにあります。 読みやすいプログラムを書きましょう。 A: lambda
  45. 45. 次のうち、評価値が異なるものはどれでしょうか。 A: ( ) is ( ) C: “ “ is “ “ B: [ ] is [ ] D: None is None
  46. 46. is は同一性の比較で、 == は等価性の比較です。 list型は、定義する度に別の物(アドレス空間)となります。 また、== は、 __eq__ でオーバーライドすることができますが、is はできません。 【PyconJP にて、ご指摘いただきました】 文字列は、特に長くなった場合、is の比較では「偽」の判定となります。 B: [ ] is [ ]
  47. 47. 次の式を評価すると、どうなるでしょうか? {1} + {2, 3} - {2} A: (1, 3) C: [1, 3] B: {1, 3} D: その他
  48. 48. pythonでは、 {1, 2, 3} など、波括弧を使うことで、「集合型」のリ テラル表記が可能です。 しかし、「集合型」に対する加算、減算は定義されておらず、エラー になります。 D: その他
  49. 49. Pythonでは、関数の説明に、docstring というコメントを書くことが できます。 PEP-8 で、docstring の折り返しは、何文字以内にすべきと書か れているでしょうか。 A: 64 C: 79 B: 72 D: 80
  50. 50. コメントやdocstringは 72文字。コードは、79文字までと書かれています。 また、チームで合意できる時は、コードは、最大99文字までなら良いとされていますが、 それでもコメントやdocstringは 72文字にすべきであると、念押しされています。 B: 72
  51. 51. 次の式を評価すると、どうなるでしょうか? float(" .320") A: 0.32 C: 1.32 B: 320 D: SyntaxError
  52. 52. 標準型の規則を知っておきましょう。 例えば、野球の打率データなど、外部CSVを読み込む時に、ドットから始まるケースで、 無駄なコードを書く必要が無くなります。 A: 0.32
  53. 53. Dict型のキーとして使えないのはどれでしょうか。 A: int C: tuple B: str D: list
  54. 54. Pythonの公式チュートリアルに説明があります。 Dict型のキーには、「immutable (変更不能な型)」なオブジェクトを指定する必要がありま す。 辞書は キー (key) でインデクス化されています。このキーは何らかの変更不能な型になります。文字列、数値 は常にキーにすることができます。タプルは、文字列、数値、その他のタプルのみを含む場合はキーにすること ができます。直接、あるいは間接的に変更可能なオブジェクトを含むタプルはキーにできません。リストをキーと して使うことはできません。これは、リストにスライスやインデクス指定の代入を行ったり、 append() や extend() のようなメソッドを使うと、インプレースで変更することができるためです。 D: list
  55. 55. 次の式を評価すると、どうなるでしょうか? 0.1 + 0.2 == 0.3 A: True C: TypeError B: False D: SyntaxError
  56. 56. 浮動小数点は、近似値のため、Falseになってしまいます。 Python3.5以降であれば、math.isclose()で 近似かどうかを判定できます。 math.isclose(0.1+0.2, 0.3) == True B: False
  57. 57. 変数 x の型が、整数であるかどうかを確かめる方法として、推奨さ れる方法はどれでしょうか。 A: type(x) == int C: isinstance(x, int) B: type(x) == type(1) D: issubclass(x, int)
  58. 58. type(x) は、変数x のクラスを返却します。 しかし、公式ドキュメントには、以下の記述があり、isinstance() を推奨しています。 オブジェクトの型の判定には、 isinstance() 組み込み関数を使うことが推奨さ れます。これはサブクラスを考慮するからです。 C: isinstance(x, int)
  59. 59. 上 級
  60. 60. 次のうち、pythonの生みの親はどれでしょう。 A: 左 C: 右 B: 真ん中 D: ここにはいない
  61. 61. 左から、Go, lisp, python です。 間違った人は、今日、選んでしまった言語をググろう! C: 右
  62. 62. Ver 1.0 のリリースが、Pythonよりも古い言語はどれでしょうか。 A: PHP C: Ruby B: Java D: ここにはない
  63. 63. Python: 1994年 PHP: 1995年 Java: 1996年 Ruby: 1995年 Pythonと同じ頃、多くの言語が生まれています。 Pythonよりも古い言語は、例えば Perl (1987) があります。 D: ここにはない
  64. 64. Pythonの標準モジュールで出来ることは? A: 速く走る C: 空を飛ぶ B: 海を渡る D: 何を言ってるかわからない
  65. 65. Pythonには、イースターエッグとして、「import antigravity」があります。 import すると、ブラウザが立ち上がり、xkcd のサイトにいきなり飛ばされ、Pythonで空を 飛ぶ漫画が表示されます。 海外のショートコミックサイトで有名なネタ。らしいです。 C: 空を飛ぶ
  66. 66. 次の式を評価すると、何になるでしょうか。 True + False is True A: True C: TypeError B: False D: SyntaxError
  67. 67. ブール値は、int型のサブクラスで、True == 1 , False == 0 です。 そのため、以下に簡約されます。 (1 + 0) is True 1 is True しかし、 1 とTrue は、等価ですが、同一ではありません。 is で比較しているため、Falseになります。 B: False
  68. 68. 次のうち、Pythonの生みの親はどれでしょう。 A: 左 C: 右 B: 真ん中 D: ここにはいない
  69. 69. 左から、PHP, Python, Go です。 間違った人は、髭をのばそう! (女性の方は、髭の人とお付き合いしましょう) A: 真ん中
  70. 70. 楽しんでいただければ 幸いです。 ありがとうございました!

×