これくらい当然できますよね? #Python常識クイズ
ビュー数4406平均正答率42.2%全問正解率2.1%
正答率などの反映は少し遅れることがあります。
1. print("何が表示される?"); a = [[1]] * 3; a[0].append(2); print(a)
- [[1, 2], [1, 2], [1, 2]]
- [[1], [1], [1], 2]
- [[1, 2], [1], [1]]
a[0]の要素に2を追加しますが、a[1], a[2]もa[0]と同一のオブジェクトなので、このようになります
2. print("何が表示される?"); a=[[1] for _ in range(3)];a[0].append(2);print(a)
- [[1, 2], [1], [1]]
- [[1], [1], [1], 2]
- [[1, 2], [1, 2], [1, 2]]
1問目と違い、2問目ではa[0]、a[1]、a[2]はそれぞれ別のオブジェクトです。a[0]だけに2を付け加えたので、このようになります。
3. print("何が表示される? (または、どのような例外が投げられる?)"); print(("" or 0) + ("1" and 1))
orは、左辺をboolとして解釈したときTrueなら左辺を、Falseなら右辺を返す演算子です。andは、左辺をboolとして解釈したときFalseなら左辺を、Trueなら右辺を返す演算子です。
4. print("何が表示される? (または、どのような例外が投げられる?)"); d = {1: 1, 1: 2}; print(d)
Python公式ドキュメントのライブラリーリファレンスに"同一のキーが 2 回以上現れた場合は、そのキーの最後の値が新しい辞書での対応する値になります。"と明記されています。
5. print("返り値がFalseになるよう、???に当てはまるものを選べ"); f = lambda x: x == x; f(???)
浮動小数点数のNaNは、いかなる比較に対してもFalseを返します。
6. class Foo: pass; print("TypeErrorが出なくなるような???を選べ"); ???; "a"[Foo()];
- Foo.__index__ = lambda _: 0
- Foo.__getitem__ = lambda _: "a"[0]
- Foo.__int__ = lambda _: 0
int型への変換には__int__が使われますが、配列等へのアクセスには__int__ではなく__index__が使われます。
7. Pythonにおける // の説明として正しいものを選べ
- 対数を求める演算子
- あまりを切り捨てる除算の演算子
- 行コメントの開始
Pythonでは、整数同士であっても除算(/)はfloat型を返します。C/C++などのように余りを切り捨てた整数型での結果が欲しい場合、//を使います。
8. a, bがfloat型のとき、絶対にcomplex型が返ってこないのは次のうちどれか?
- (a - b).conjugate()
- complex(a, b)
- a ** b
float型のconjugateは、自分自身(つまりfloat型)を返します。a ** bは、例えばa = -1, b = 0.5のとき、complex型を返します。
9. print("何が表示される?"); print(range(10)[slice(4, 12, 3)])
- slice(4, 12, 3)
- range(4, 12, 3)
- range(4, 10, 3)
print(range(10)[4:12:3])と同じ意味です
10. 次のうち、strにないメソッドはどれ?
- expandtabs: タブ文字がスペースで置換された文字列を返す
- fullstrip: すべての空白文字を除去した文字列を返す
- title: 文字列を単語ごとに大文字始まりに(残りを小文字に)した文字列を返す
他にも、スペースを入れて中央揃えにするcenterメソッド、特定の長さになるように'0'で左詰めするzfillメソッド、大文字は小文字に、小文字は大文字に変換するswapcaseメソッドなど、使いどころが限られるメソッドが結構あります。
これくらい当然できますよね? #Python常識クイズ
0 / 10点
あなたの正答率は86.4%で、平均の42.2%よりも上です!
クイズをやり直す
都道府県のご当地クイズ
人気急上昇中
お絵描き診断
「死」の漢字を書いてわかるサイコパス度
もっとクイズを見る