Python 3 エンジニア認定基礎試験 想定問題集
入門・インタープリタ・基本の型の要点整理と想定問題
公式の出題範囲の「1章 食欲をそそってみようか/2章 Pythonインタープリタの使い方/3章 気楽な入門編」にあたる分野です。まず要点整理で全体をつかみ、下の演習で 60 問を 1 問ずつ解けます。答えると A〜D すべての解説が出ます。
この分野の小項目
- 1章 Python の特徴と使いどころ(5 問) 作業の自動化や試作に向いた、手軽に使える言語として紹介。インタープリタ型でコンパイルやリンクが不要、強力な組み込みのデータ型、豊富な標準ライブラリ、インデントによるブロック構造、変数や引数の宣言が不要などの特徴を挙げる。
- 2.1・2.1.1 インタープリタの起動と引数(6 問) インタープリタの起動と終了(ファイル終端文字や quit())、python -c command・python -m module による実行。スクリプト名と引数は文字列のリストとして sys.argv に入り、引数が無いときの sys.argv[0] は空文字列、-c では '-c' になる。
- 2.1.2 対話モードとプロンプト(5 問) 端末から入力を読むときは対話モードで動く。一次プロンプトは >>>、継続行の二次プロンプトは ...。複数行の構文は継続行で入力し、空行で入力を終える。
- 2.2.1 ソースコードの文字コード(5 問) Python のソースファイルは既定で UTF-8 として扱われる。別のエンコーディングを使うときはファイルの先頭行に特別なコメント(# -*- coding: encoding -*-)で宣言する。先頭が shebang 行のときは 2 行目に書く。
- 3章冒頭・3.1.1 数値と演算子・コメント(10 問) # から行末までがコメント。四則演算 + - * /、/ は常に浮動小数点数を返し、// は切り捨て除算、% は剰余、** はべき乗。int と float、混在した演算では float に変換される。= で代入し、未定義の変数はエラー。対話モードでは直前の式の値が _ に入る。
- 3.1.2 文字列リテラル(引用符・エスケープ・raw・複数行)(7 問) 文字列(str)はシングルクォートでもダブルクォートでも同じ。\ でエスケープし、print() はクォートを省いて特殊文字を解釈して表示する。r を付けた raw 文字列は \ を特殊文字として扱わない。三重引用符で複数行の文字列を書ける。
- 3.1.2 文字列の連結・インデックス・スライス(8 問) + で連結、* で繰り返し、隣り合ったリテラルは自動で連結される。インデックス(負の値は末尾から)とスライス(開始は含み終了は含まない・省略時の既定値)で取り出す。範囲外のインデックスはエラーだがスライスは寛容。文字列は不変(イミュータブル)で、要素への代入はエラー。len() で長さを返す。
- 3.1.3 リストの基本(7 問) リストは角括弧で値を並べた複合データ型。インデックス・スライス・連結ができ、文字列と違って可変(ミュータブル)。append() で末尾に追加、スライスへの代入で置き換えや削除ができる。代入はコピーせず同じリストを参照し、スライスは浅いコピーを返す。リストは入れ子にできる。
- 3.2 プログラミングへの第一歩(多重代入・while・print)(7 問) フィボナッチ数列の例で、多重代入(右辺をすべて評価してから代入)、条件が真の間くり返す while 文、0 や空のシーケンスは偽という真偽の判定、比較演算子、インデントによるブロック、print() の複数引数とキーワード引数 end を説明する。
要点整理
Python の特徴と使いどころ
Python の特徴:手軽さと本格さを両立した言語
第 1 章は、作業の自動化や試作に Python が向く理由を紹介します。ファイルの一括置換や写真の整理のような作業を、手早くプログラムにできる言語として描かれています。
Python はインタープリタ言語で、コンパイルやリンクが要りません。対話的にも使えるので、機能を試したり、関数を少しずつ確かめたりするのが簡単です。
手軽な一方で、シェルスクリプトより構造化の仕組みが充実し、C より多くのエラーチェックを行います。柔軟な配列や辞書を組み込みで持つ超高水準言語です。
プログラムが C や Java より短くなる理由は 3 つあります。高レベルのデータ型で複雑な操作を 1 文で書けること、インデントで文をまとめること、変数や引数の宣言が要らないことです。
C で関数やモジュールを足せる拡張性もあり、C のアプリに Python を組み込んで拡張言語にもできます。名前は BBC の番組「Monty Python's Flying Circus」に由来し、爬虫類とは関係ありません。
| 比べる相手 | チュートリアルが挙げる Python の強み |
|---|---|
| シェルスクリプト・バッチファイル | 大きなプログラムを構造化する仕組みが多い。GUI やゲームにも使える |
| C / C++ / Java | コンパイル不要で試作が速い。同じ処理を短く書ける。C より多くのエラーチェックを行う |
| Awk / Perl | 柔軟な配列や辞書などの高水準のデータ型を持ち、より幅広い問題に使える |
インタープリタの起動と引数
インタープリタの起動・終了と sys.argv
インタープリタは、標準入力が端末につながっていれば対話的に動きます。ファイル名を引数にするか、ファイルを標準入力として渡すと、そのファイルをスクリプトとして実行します。
終えるときはファイル終端文字(Unix は Control-D、Windows は Control-Z)を一次プロンプトで入力します。うまくいかなければ quit() と入力します。
-c オプションは文を直接実行し、-m オプションはモジュールをスクリプトとして実行します。-i オプションをファイル名の前に付けると、実行後に対話モードに入ります。
スクリプト名と引数は文字列のリストとして sys.argv に入ります。数字を渡しても文字列なので、'3' + '4' は 34 になる点がよく問われます。
-c や -m の後ろに書いたオプションは、インタープリタではなく、そのコマンドやモジュールが処理できるように sys.argv に残ります。
| 起動のしかた | sys.argv[0] の値 |
|---|---|
| スクリプト名も引数も無し | ''(空文字列) |
| スクリプト名の代わりに -(標準入力) | '-' |
| python -c command | '-c' |
| python -m module | 見つかったモジュールのフルパス |
| python script.py | スクリプト名 |
出典: Python チュートリアル 2.1. インタープリタを起動する/Python チュートリアル 2.1.1. 引数の受け渡し/コマンドラインと環境(-i オプション)
対話モードとプロンプト
対話モードとプロンプトの読み方
端末から入力を読んでいるとき、インタープリタは対話モードで動きます。起動するとバージョン番号と著作権表示を含むメッセージが出て、その後にプロンプトが表示されます。
次のコマンドを待つ記号が一次プロンプト(>>>)、継続行で出る記号が二次プロンプト(...)です。if 文のような複合文は、最後に空行を入力して終えます。
チュートリアルの例では、プロンプトで始まる行が入力、始まらない行がインタープリタの出力です。二次プロンプトだけの行は「空行を入力する」という意味です。
出典: Python チュートリアル 2.1.2. 対話モード/Python チュートリアル 3. 形式ばらない Python の紹介
ソースコードの文字コード
ソースコードの文字コードとエンコーディング宣言
Python のソースファイルは、何も書かなければ UTF-8 として扱われます。文字列リテラルや識別子、コメントに世界中のほとんどの文字を使えます。
ただし標準ライブラリの識別子は ASCII 文字だけで書かれています。移植性が必要なコードもこの慣習に従うべきだと、チュートリアルは述べています。
別の文字コードを使うときは、先頭行に # -*- coding: encoding -*- の形のエンコーディング宣言を書きます。1 行目がshebang 行なら、宣言は 2 行目に書きます。
言語リファレンスでは、宣言として扱うのは 1 行目か 2 行目のコメントだけです。3 行目以降に書いても宣言にはならず、既定の UTF-8 で読まれます。
| ファイルの状態 | 宣言の書き方 |
|---|---|
| UTF-8 で保存 | 書かなくてよい(既定) |
| cp1252 で保存、shebang 行なし | 1 行目に # -*- coding: cp1252 -*- |
| cp1252 で保存、1 行目が shebang 行 | 2 行目に # -*- coding: cp1252 -*- |
| 3 行目以降に宣言を書いた | 宣言として扱われない |
出典: Python チュートリアル 2.2.1. ソースコードの文字コード/Python 言語リファレンス 2.1.4. エンコード宣言
数値と演算子・コメント
数値と演算子:/ と // と % の使い分け
インタープリタは電卓のように使えます。/ は割り切れても常に浮動小数点数を返し、8 / 4 は 2.0 です。整数の商が欲しいときは切り捨て除算 //、余りは剰余 % を使います。
// は数学的な商に床関数を当てるので、負の数では小さい方へ切り下がります。-7 // 2 は -4、-7 % 2 は 1 です。% の結果は第 2 オペランドと同じ符号か 0 になります。
** はべき乗です。単項の - より優先順位が高いので -3**2 は -9 になり、9 が欲しいときは (-3)**2 と書きます。2 ** 3 ** 2 は右から計算されて 512 です。
int と float が混ざった演算では、整数が浮動小数点数に変換されます。4 * 3.75 - 1 は 14.0 です。複素数も組み込みで扱え、虚部は j または J で表します。
= で値を代入し、代入していない変数を使うと NameError になります。対話モードでは最後に表示された式の値が _ に入ります。_ に自分で代入すると特別な働きが隠れるので避けます。
コメントは # から行末までです。行の途中にも書けますが、文字列リテラルの中の # はただの文字です。
| 式 | 結果 | ポイント |
|---|---|---|
| 17 / 3 | 5.666666666666667 | / は常に float |
| 17 // 3 | 5 | 切り捨て除算 |
| 17 % 3 | 2 | 剰余(5 * 3 + 2 = 17) |
| -7 // 2 | -4 | 小さい方へ切り下げ |
| -3 ** 2 | -9 | ** が - より先 |
| 2 ** 3 ** 2 | 512 | ** は右から |
| 4 * 3.75 - 1 | 14.0 | int と float の混在は float |
出典: Python チュートリアル 3.1.1. 数/Python チュートリアル 3. 形式ばらない Python の紹介/Python 言語リファレンス 6.5. べき乗演算/Python 言語リファレンス 6.7. 二項算術演算
文字列リテラル(引用符・エスケープ・raw・複数行)
文字列リテラル:引用符・エスケープ・raw・三重引用符
文字列はシングルクォートでもダブルクォートでも同じです。\n のような特殊文字の意味もどちらでも変わりません。
囲みと同じ引用符を中に書くときは \ を付けてエスケープシーケンスにするか、別の引用符で囲みます。対話モードで 'doesn\'t' を評価すると "doesn't" と表示されます。
式をそのまま評価したときは引用符付きで \n もそのまま見えます。print() は引用符を省き、特殊文字を解釈して表示します。
Windows のパスのように \ をそのまま使いたいときは、引用符の前に r を付けたraw 文字列にします。ただし末尾に奇数個の \ を置くと文字列が閉じず SyntaxError になります。
三重引用符を使うと複数行の文字列を書けます。改行は自動で含まれますが、行末に \ を付けた改行は含まれません。
| 書き方 | 中身 | len() |
|---|---|---|
| 'a\tb\\c' | a・タブ・b・\・c | 5 |
| r'a\nb' | a・\・n・b | 4 |
| 'a\nb' | a・改行・b | 3 |
| """\(改行)ab(改行)""" | a・b・改行 | 3 |
文字列の連結・インデックス・スライス
文字列の連結・インデックス・スライス
+ で連結し、* で繰り返します。3 * 'un' + 'ium' は 'unununium' です。隣り合わせに書いた文字列リテラルは自動で連結されますが、変数とリテラルは + でつなぐ必要があります。
インデックスは 0 から数え、負の数は右から数えます(-1 が最後の文字)。範囲外のインデックスは IndexError ですが、スライスは範囲外でもエラーになりません。
スライスは開始位置を含み、終了位置を含みません。開始を省くと 0、終了を省くと長さになります。このため s[:i] + s[i:] は常に s と等しくなります。
インデックスは文字と文字の間を指す、と考えると覚えやすくなります。両端が範囲内で負でなければ、スライスの長さは 2 つの位置の差です。
文字列はイミュータブルで、word[0] = 'J' は TypeError です。変えたいときは 'J' + word[1:] のように新しい文字列を作ります。長さは len() で得ます。
| word = 'Python' のときの式 | 結果 |
|---|---|
| word[0] / word[-1] | 'P' / 'n' |
| word[1:3] | 'yt' |
| word[-2:] | 'on' |
| word[-3:-1] | 'ho' |
| word[4:42] | 'on'(範囲外でもよい) |
| word[42] | IndexError |
| word[0] = 'J' | TypeError |
リストの基本
リストの基本:可変・参照・浅いコピー
リストは角括弧で値を並べた複合データ型です。文字列と同じくインデックス・スライス・+ による連結が使えますが、ミュータブルなので要素を置き換えられます。
append() で末尾に要素を足せます。スライスへの代入では、要素の置き換えや削除、長さの変更ができます。letters[:] = [] で中身をすべて消せます。
代入はデータをコピーしません。b = a とすると、b も同じリストを指すので、b からの変更は a にも見えます。
スライスは新しいリストを返し、a[:] は浅いコピーになります。外側は別のリストですが、中に入れたリストは共有されるので、中のリストを変えると両方に見えます。
リストは入れ子にでき、x[0][1] のように 2 段階で取り出します。
| 操作 | 元のリスト a への影響 |
|---|---|
| b = a のあと b.append(3) | a にも見える(同じリスト) |
| b = a[:] のあと b[0] = 9 | a は変わらない(別のリスト) |
| b = a[:] のあと b[1].append(4)(b[1] がリスト) | a にも見える(中のリストは共有) |
| b = a のあと a[:] = [] | b も空になる |
| b = a のあと a = [] | b は元のまま |
プログラミングへの第一歩(多重代入・while・print)
プログラミングへの第一歩:多重代入・while・print
フィボナッチ数列の例で、多重代入を学びます。a, b = b, a+b では右辺をすべて評価してから代入するので、2 行に分けた a = b; b = a+b とは結果が変わります。
while 文は条件が真の間くり返します。ゼロでない数は真、ゼロは偽です。シーケンスは長さが 1 以上なら真で、空なら偽です。[0] は要素があるので真です。
標準の比較演算子は <、>、==、<=、>=、!= で、C 言語と同じです。ループの本体はインデントでまとめ、ブロック内の行はすべて同じだけインデントします。
print() は文字列を引用符なしで出し、引数の間に空白を入れます。キーワード引数 end を使うと、末尾の改行の代わりに別の文字列を出せます。
演習(60 問)
結果はこのブラウザに保存され、ハブの「自分の成績」と弱点モードに使われます。
第 1 問 / 60 問
問題を読み込んでいます…
全問と解説の一覧
正解と解説は折りたたんであります。先に自分で考えてから開いてください。
全 60 問
Python の特徴と使いどころ
大量のテキストファイルを一括で置換する作業を、手早く自動化したい。チュートリアルが述べる Python の特徴として最も適切なものは?
A. コンパイルやリンクが要らず、開発の時間を節約しやすい B. 動かす前に、必ず実行ファイルへのコンパイルが要る C. GUI アプリやゲームには使えず、ファイル操作専用である D. Unix 系の OS だけで動き、Windows では動かない
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? 書いたプログラムをすぐに動かせるかどうかの話です。 Python はインタープリタ言語で、コンパイルやリンクが不要なため開発時間を大きく節約できる、とチュートリアルは述べている。 【B(不正解)】 ? C や Java のような手順を想定した説明です。 コンパイルとリンクが不要なのが Python の特徴であり、実行ファイルを作る手順は求められない。 【C(不正解)】 ? 使える分野を狭く見た説明です。 チュートリアルは GUI アプリや簡単なゲームを作りたい場面も Python の出番として挙げている。 【D(不正解)】 ? 動く OS の範囲の話です。 チュートリアルは Python が Windows、macOS、Unix で動作すると述べている。
Python のプログラムが、同じ処理の C や Java より短くなる理由として、チュートリアルが挙げていないものは?
A. 高レベルのデータ型で、複雑な操作を 1 つの文で書ける B. 文のまとまりを、括弧ではなくインデントで表す C. 実行時の型の検査を省いており、検査用の記述が要らない D. 変数や引数の宣言が要らない
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? 組み込みのデータ型の表現力の話です。 チュートリアルが挙げる 3 つの理由の 1 つである。 【B(不正解)】 ? ブロックの書き方の話です。 開始と終了の括弧の代わりにインデントで文をまとめる点も、理由の 1 つとして挙げられている。 【C(正解)】 ? エラーの検査を減らすという説明です。 チュートリアルはむしろ Python が C より多くのエラーチェックを行うと述べており、短くなる理由ではない。 【D(不正解)】 ? 宣言文を書くかどうかの話です。 変数や引数の宣言が不要なことも、チュートリアルが挙げる理由の 1 つである。
新人研修で「Python という名前の由来」を聞かれた。チュートリアルの説明に合うものは?
A. ニシキヘビ(爬虫類)の英名から付けられた B. 開発者の家族の名前から付けられた C. ある学術論文の題名の頭文字から付けられた D. 英国 BBC のコメディ番組の題名から付けられた
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? 動物の名前と結び付けた説明です。 チュートリアルは爬虫類とは関係ないと明記している。 【B(不正解)】 ? 人名に由来するという説明です。 チュートリアルにそのような記述は無い。 【C(不正解)】 ? 略語に由来するという説明です。 チュートリアルにそのような記述は無い。 【D(正解)】 ? 英国のテレビ番組に由来するという説明です。 チュートリアルは、名前が BBC の番組「Monty Python's Flying Circus」に由来すると述べている。
C で書いた社内アプリに、利用者が処理を書き足せる仕組みを付けたい。チュートリアルの説明に合う方法は?
A. Python 用の新しい言語を別に設計し、アプリに組み込む B. アプリに Python のインタープリタをリンクし、拡張言語として使う C. C のアプリと Python は連携できないので、全体を Python で書き直す D. バイナリでしか提供されないライブラリは使えないので、自作に切り替える
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? 新しい言語を一から作る方法です。 チュートリアルは、そのためだけに新しい言語を設計・実装したくない場面で Python が役立つと述べている。 【B(正解)】 ? 既存のアプリに Python を埋め込む方法です。 C で書かれたアプリに Python インタープリタをリンクし、拡張言語や命令言語として使える、とチュートリアルは述べている。 【C(不正解)】 ? 連携できない前提の説明です。 チュートリアルは Python の拡張性として、C との連携ができることを挙げている。 【D(不正解)】 ? バイナリ形式のライブラリの扱いの話です。 チュートリアルは、バイナリ形式でしか提供されないライブラリも Python プログラムにリンクできると述べている。
シェルスクリプトや C と比べた Python の説明として、チュートリアルの記述に合うものは?
A. シェルスクリプトより大きなプログラム向けの仕組みが多く、C より多くのエラーチェックを行う B. シェルスクリプトと同じく、ファイル操作以外には向いていない C. C よりエラーチェックを減らし、そのぶん速く動くよう作られている D. 配列や辞書のような高レベルのデータ型は、標準では組み込まれていない
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? 構造化の仕組みと、エラーの検査の多さの話です。 チュートリアルは、構造化や大規模開発を支える機能が充実し、C より多くのエラーチェックを行うと述べている。 【B(不正解)】 ? 得意な分野を狭く見た説明です。 チュートリアルは、シェルスクリプトはファイル操作には向くが GUI アプリやゲームには向かず、Python はそうした用途にも使えると説明している。 【C(不正解)】 ? 検査の量と速さを結び付けた説明です。 チュートリアルは C より多くのエラーチェックを行うと述べており、逆の説明である。 【D(不正解)】 ? 組み込みのデータ型の有無の話です。 チュートリアルは Python を超高水準言語と呼び、柔軟な配列や辞書が組み込まれていると述べている。
インタープリタの起動と引数
端末で次のコマンドを実行した。表示される内容はどれか。 python -c "import sys; print(sys.argv)" a b
A. ['a', 'b'] B. ['python', '-c', 'a', 'b'] C. ['-c', 'a', 'b'] D. ['import sys; print(sys.argv)', 'a', 'b']
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? 引数だけが並ぶという見方です。 -c オプションを使ったときも、先頭の sys.argv[0] には要素が入る。 【B(不正解)】 ? コマンド名も含めて並ぶという見方です。 インタープリタのコマンド名 python は sys.argv に入らない。 【C(正解)】 ? 先頭に起動方法を表す文字列が入るという見方です。 -c command を使うと sys.argv[0] は '-c' になり、後ろの引数が続く。実行結果は ['-c', 'a', 'b'] だった。 【D(不正解)】 ? 先頭に実行した文そのものが入るという見方です。 実行した文の中身は sys.argv[0] に入らない。入るのは '-c' である。
出典: Python チュートリアル 2.1.1. 引数の受け渡し/sys --- システムパラメータと関数(sys.argv)
スクリプト名も引数も付けずに python と打って対話モードを始め、import sys のあと sys.argv[0] を表示した。値はどれか。
A. 'python' B. ''(空文字列) C. '-' D. IndexError になる
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? 起動したコマンドの名前が入るという見方です。 コマンド名は sys.argv に入らない。 【B(正解)】 ? 何も指定しなかったことを表す値です。 スクリプト名も引数も指定しない場合、sys.argv[0] は空文字列になる、とチュートリアルにある。 【C(不正解)】 ? 標準入力を表す記号です。 '-' になるのは、スクリプト名の代わりに標準入力を意味する '-' を指定したときである。 【D(不正解)】 ? リストが空だという見方です。 リストには少なくとも 1 つの要素があるので、sys.argv[0] で IndexError にはならない。
計算用スクリプト calc.py の中身は次のとおり。python calc.py 3 4 と実行したときの表示はどれか。 import sys print(sys.argv[1] + sys.argv[2])
A. 7 B. '34' C. TypeError になる D. 34
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? 数として足し算するという見方です。 sys.argv の要素は文字列なので、数の足し算にはならない。 【B(不正解)】 ? 引用符付きで表示するという見方です。 print() は文字列を引用符なしで表示するので、引用符は付かない。 【C(不正解)】 ? 型が合わず計算できないという見方です。 どちらも文字列なので + で連結でき、エラーにはならない。 【D(正解)】 ? 文字どうしをつなげた結果です。 引数は文字列のリストとして sys.argv に入る。'3' + '4' は連結になり、実行結果は 34 だった。
Windows の対話モードを終えたい。チュートリアルの説明に合う操作はどれか。
A. 一次プロンプトで Control-Z を入力する B. 一次プロンプトで end と入力する C. 二次プロンプトで空行を 2 回入力する D. Control-C を押して処理を中断させる
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? Windows のファイル終端文字を使う方法です。 ファイル終端文字(Unix では Control-D、Windows では Control-Z)を一次プロンプトに入力すると、終了ステータス 0 で終わる。Windows では続けて Enter キーを押す。 【B(不正解)】 ? キーワードのような単語で終える方法です。 end という終了用の命令は無い。うまく終われないときは quit() と入力する。 【C(不正解)】 ? 継続行で何も打たない操作です。 空行は複数行の構文の入力を終える合図であり、インタープリタは終わらない。 【D(不正解)】 ? 実行中の処理を止めるキー操作です。 Control-C は実行中の処理への割り込みで、KeyboardInterrupt 例外として通知される(チュートリアル 8 章)。対話モードを終える操作ではない。
出典: Python チュートリアル 2.1. インタープリタを起動する/Python チュートリアル 8.3. 例外を処理する
次のように実行したとき、末尾の -v はどう扱われるか。 python -m mytool -v
A. インタープリタのオプションとして処理される B. 書き方が不正なので、起動時にエラーになる C. mytool の sys.argv に残される D. 無視され、sys.argv にも入らない
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? インタープリタが読み取るという見方です。 -m module の後のオプションは、インタープリタのオプションとしては処理されない。 【B(不正解)】 ? 並べ方に問題があるという見方です。 -m module の後に引数を続けるのは正しい書き方であり、エラーにはならない。 【C(正解)】 ? モジュールに渡されるという見方です。 -c command や -m module の後のオプションは、コマンドやモジュールが処理できるように sys.argv に残される。 【D(不正解)】 ? どこにも渡らないという見方です。 -v は捨てられず、sys.argv に残される。
スクリプトを実行し終えたあと、作られた変数を対話モードで確かめたい。チュートリアルに沿った起動の方法はどれか。
A. python -c script.py と打ち、ファイル名を文として渡す B. python -m script.py と打ち、モジュールとして読み込む C. python script.py -i と打ち、ファイル名の後ろに付ける D. python -i script.py と打ち、ファイル名の前に付ける
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? -c に続けて文を渡す方法です。 -c オプションは後ろの文字列を Python の文として実行するので、ファイルは実行されない。 【B(不正解)】 ? モジュールを探して実行する方法です。 -m オプションはモジュールをスクリプトとして実行するもので、実行後に対話モードには入らない。 【C(不正解)】 ? スクリプトの引数として付ける方法です。 スクリプト名の後ろの -i はスクリプトの sys.argv に入るだけで、対話モードには入らない。 【D(正解)】 ? インタープリタへのオプションとして付ける方法です。 スクリプトの実行後に対話モードに入るには、-i オプションをスクリプトファイル名の前に指定する。
対話モードとプロンプト
対話モードで、次のコマンドの入力を待っているときに表示される記号はどれか。
A. >>> B. ... C. $ D. #
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? 大なり記号が 3 つ並んだ記号です。 一次プロンプトは通常 >>> で、次のコマンドの入力を促す。 【B(不正解)】 ? ドットが 3 つ並んだ記号です。 ... は継続行で表示される二次プロンプトである。 【C(不正解)】 ? Unix のシェルでよく見る記号です。 $ は OS のシェルのプロンプトで、Python の対話モードの記号ではない。 【D(不正解)】 ? 行の途中にも書ける記号です。 # はコメントの始まりを表す記号で、プロンプトではない。
対話モードで次の if 文を入力した。print の行の後に何をすると、この if 文が実行されるか。 >>> flag = True >>> if flag: ... print('ok')
A. print の行の末尾にセミコロンを付ける B. 二次プロンプトで空行を入力する C. end と入力する D. Control-Z を入力する
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? 行の終わりに記号を足す操作です。 セミコロンを付けても入力は続き、if 文の終わりにはならない。 【B(正解)】 ? 何も打たずに Enter キーを押す操作です。 複合文を対話的に入力するときは、終わりの印として最後に空行を入力する。 【C(不正解)】 ? ブロックの終わりを単語で示す操作です。 Python のブロックはインデントで表すので、end のような終わりの単語は無い。 【D(不正解)】 ? ファイル終端文字を送る操作です。 Control-Z は Windows のファイル終端文字で、インタープリタを終える操作に当たる。
出典: Python チュートリアル 2.1.2. 対話モード/Python チュートリアル 3.2. プログラミングへの第一歩
チュートリアルの例で、行の先頭に >>> も ... も付いていない行は何を表すか。
A. 入力を省略してよい行 B. 二次プロンプトで入力する行 C. インタープリタが出力した行 D. エンコーディング宣言を書く行
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? 例を試すときに打たなくてよい行という見方です。 省略してよいのはコメントで、プロンプトの無い行の説明ではない。 【B(不正解)】 ? 継続行で打つ行という見方です。 二次プロンプトで入力する行には ... が付く。 【C(正解)】 ? 画面に表示された結果の行です。 チュートリアルは、プロンプトで始まらない行はインタープリタの出力だと説明している。 【D(不正解)】 ? ファイルの文字コードを示す行という見方です。 エンコーディング宣言はソースファイルの先頭に書く特別なコメントで、例の読み方とは関係ない。
端末で python と打って対話モードを始めた。最初の >>> の前に表示されるものとして、チュートリアルの説明に合うのはどれか。
A. インストールされたモジュールの一覧 B. 直前のセッションで入力したコマンドの履歴 C. エンコーディング宣言の入力を求める案内 D. バージョン番号と著作権表示を含む起動メッセージ
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? 使えるモジュールを並べた表示です。 起動時にモジュールの一覧は表示されない。 【B(不正解)】 ? 前回の入力の記録です。 起動時に前回の入力履歴が表示されることはない。 【C(不正解)】 ? 文字コードを選ばせる表示です。 起動時に文字コードの指定を求められることはない。 【D(正解)】 ? どの版の Python かが分かる表示です。 インタープリタは最初のプロンプトの前に、バージョン番号と著作権表示を含む起動メッセージを出す。
端末から python < job.py のように、ファイルを標準入力として渡して起動した。チュートリアルの説明に合う動きはどれか。
A. job.py をスクリプトとして読み込んで実行する B. 対話モードになり、job.py の各行に >>> を付けて表示する C. 標準入力からはスクリプトを読めないので、エラーで終わる D. job.py をモジュールとして探し、sys.argv の先頭にフルパスを入れる
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? ファイルの中身を順に実行するという見方です。 ファイル名を引数に指定するか、ファイルを標準入力として起動すると、そのファイルからスクリプトを読み込んで実行する。 【B(不正解)】 ? 端末からの入力と同じ扱いになるという見方です。 対話モードになるのは、標準入力が端末(tty)につながっているときである。 【C(不正解)】 ? ファイル名でしか渡せないという見方です。 チュートリアルは、ファイルを標準入力として起動する方法も挙げている。 【D(不正解)】 ? -m を付けたときの動きです。 モジュールを探してフルパスが sys.argv[0] に入るのは、-m module で起動したときである。
ソースコードの文字コード
ソースファイルに文字コードの宣言を何も書かなかった。Python はこのファイルをどの文字コードとして扱うか。
A. Shift_JIS B. UTF-8 C. ASCII D. OS の設定に合わせた文字コード
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? 日本語の Windows で長く使われてきた文字コードです。 宣言が無いときの既定は Shift_JIS ではない。 【B(正解)】 ? 世界中の多くの文字を表せる文字コードです。 デフォルトでは、Python のソースファイルは UTF-8 でエンコードされているものとして扱われる。 【C(不正解)】 ? 英数字と記号だけを表す文字コードです。 ASCII は標準ライブラリの識別子に使う文字の話で、既定の文字コードではない。 【D(不正解)】 ? 実行する環境によって変わるという見方です。 既定は環境によらず UTF-8 である。
出典: Python チュートリアル 2.2.1. ソースコードの文字コード/Python 言語リファレンス 2.1.4. エンコード宣言
1 行目が #!/usr/bin/env python3 のスクリプトを cp1252 で保存する。エンコーディング宣言はどこに書くか。
A. 1 行目の shebang 行より前に書く B. ファイルの最後の行に書く C. 2 行目に書く D. import 文のすぐ後に書く
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? 宣言を最も先頭に置く方法です。 1 行目を宣言にすると、shebang 行が先頭ではなくなる。 【B(不正解)】 ? 末尾にまとめて書く方法です。 宣言はファイルの先頭の行で読み取られるので、最後の行では効かない。 【C(正解)】 ? shebang 行のすぐ次の行です。 ソースが UNIX の shebang 行で始まる場合は、先頭行のルールの例外として 2 行目に宣言を書く。 【D(不正解)】 ? モジュールを読み込んだ後に書く方法です。 宣言の位置は import 文とは関係なく、1 行目か 2 行目に限られる。
出典: Python チュートリアル 2.2.1. ソースコードの文字コード/Python 言語リファレンス 2.1.4. エンコード宣言
ソースファイルを Windows-1252(cp1252)で保存した。チュートリアルの書式に合う宣言はどれか。
A. __encoding__ = 'cp1252' B. import cp1252 as coding C. print('coding: cp1252') D. # -*- coding: cp1252 -*-
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? 特別な名前の変数に代入する書き方です。 これはただの代入文で、エンコーディング宣言にはならない。 【B(不正解)】 ? 文字コードをモジュールとして読み込む書き方です。 cp1252 という名前のモジュールを読み込もうとするだけで、宣言にはならない。 【C(不正解)】 ? 文字コード名を文字列として出力する書き方です。 宣言は特別なコメントとして書く必要があり、文字列を表示する文では効かない。 【D(正解)】 ? # で始まる特別な形のコメントです。 既定以外のエンコーディングは、ファイルの先頭行に # -*- coding: encoding -*- の形のコメントで宣言する。
cp1252 のファイルで、1 行目と 2 行目に通常のコメントを書き、3 行目に # -*- coding: cp1252 -*- を書いた。この宣言の扱いはどれか。
A. 宣言としては扱われず、ファイルは既定の UTF-8 で読まれる B. 3 行目でも有効で、ファイル全体が cp1252 で読まれる C. 3 行目以降だけが cp1252 で読まれる D. 宣言が複数あるとみなされ、必ず起動時にエラーになる
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? 決められた位置から外れた宣言の扱いです。 言語リファレンスでは、宣言として扱うのは 1 行目か 2 行目のコメントである。3 行目では効かない。 【B(不正解)】 ? 位置に関係なく効くという見方です。 宣言として扱われるのは 1 行目か 2 行目のコメントだけである。 【C(不正解)】 ? 途中から文字コードが切り替わるという見方です。 ファイルの途中から文字コードを切り替える仕組みは無い。 【D(不正解)】 ? 宣言が重なったという見方です。 1・2 行目は通常のコメントなので、宣言が重なっているわけではない。
海外の利用者も使う予定のライブラリを作る。関数名や変数名(識別子)の文字について、チュートリアルの説明に沿う方針はどれか。
A. UTF-8 が既定なので、日本語の識別子を積極的に使う B. 識別子はすべて大文字の ASCII にそろえる C. 標準ライブラリにならい、識別子には ASCII 文字だけを使う D. エンコーディング宣言で cp1252 を指定し、識別子を西欧の文字にする
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? 使える文字はすべて使うという方針です。 使えはするが、チュートリアルは移植性が必要なコードは ASCII だけの慣習に従うべきだと述べている。 【B(不正解)】 ? 大文字と小文字の使い分けの方針です。 チュートリアルが求めているのは ASCII 文字を使うことで、大文字にそろえることではない。 【C(正解)】 ? 標準ライブラリと同じ文字の範囲に合わせる方針です。 標準ライブラリの識別子は ASCII 文字だけで、移植性が必要なコードもこの慣習に従うべきだとチュートリアルは述べている。 【D(不正解)】 ? 宣言で文字コードを変える方針です。 文字コードの宣言は識別子に使う文字の慣習とは別の話で、移植性の対策にならない。
数値と演算子・コメント
17 個の商品を 3 個ずつ箱に詰める。17 // 3 と 17 % 3 の結果の組み合わせはどれか。
A. 5.666666666666667 と 2 B. 5 と 2 C. 6 と 1 D. 5 と 0.6666666666666667
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? 最初の式を普通の割り算とみる見方です。 // は切り捨て除算なので、小数を含む結果にはならない。 【B(正解)】 ? 箱の数と、余った個数です。 17 // 3 は 5、17 % 3 は 2 になる。5 * 3 + 2 = 17 で確かめられる。 【C(不正解)】 ? 商を切り上げた見方です。 // は切り上げではなく切り捨てなので 6 にはならない。 【D(不正解)】 ? 余りを小数で表す見方です。 % は剰余を返すので、17 % 3 は 2 である。
対話モードで 8 / 4 を評価した。表示される値はどれか。
A. 2 B. 2.0 C. 0.5 D. TypeError になる
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? 割り切れたので整数になるという見方です。 / は割り切れるときも浮動小数点数を返すので、2 とは表示されない。 【B(正解)】 ? 小数点の付いた数です。 除算 / は常に浮動小数点数(float)を返す。実行結果は 2.0 だった。 【C(不正解)】 ? 割る数と割られる数を逆にした値です。 8 / 4 は 8 を 4 で割るので 2.0 になる。 【D(不正解)】 ? 整数どうしは / で割れないという見方です。 int どうしでも / で割れる。結果が float になるだけである。
-7 // 2 と -7 % 2 の結果の組み合わせはどれか。
A. -3 と -1 B. -3.5 と 1 C. -4 と 1 D. -4 と -1
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? 0 に近い方へ切り捨てる見方です。 Python の // は数学的な商に床関数(floor)を当てるので、-3.5 は -4 になる。 【B(不正解)】 ? 最初の式を普通の割り算とみる見方です。 // は切り捨て除算であり、-3.5 は返らない。 【C(正解)】 ? より小さい方の整数へ切り下げた商と、その余りです。 -7 / 2 = -3.5 を床関数で切り下げると -4。余りは -7 - (-4 * 2) = 1。実行結果も -4 と 1 だった。 【D(不正解)】 ? 商を切り下げ、余りは割られる数と同じ符号にする見方です。 剰余の符号は第 2 オペランドと同じになるので、2 で割った余りは負にならない。
負の数の 2 乗を求めるつもりで -3 ** 2 と書いた。結果はどれか。
A. 9 B. -6 C. 6 D. -9
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? -3 を 2 乗した値です。 ** は単項の - より優先順位が高いので、(-3) ** 2 とは解釈されない。 【B(不正解)】 ? -3 に 2 を掛けた値です。 ** は掛け算ではなくべき乗である。 【C(不正解)】 ? 3 に 2 を掛けた値です。 ** は掛け算ではない。また - も無視できない。 【D(正解)】 ? 3 の 2 乗に - を付けた値です。 ** は - より優先順位が高く、-3**2 は -(3**2) と解釈されて -9 になる。9 が欲しいときは (-3)**2 と書く。
べき乗を続けた式 2 ** 3 ** 2 の値として、言語リファレンスが定める評価の順に合うものは?
A. 512 B. 64 C. 12 D. SyntaxError になる
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? 右側の 3 ** 2 を先に計算した値です。 べき乗演算子は丸括弧が無ければ右から左へ評価される。3 ** 2 = 9、2 ** 9 = 512。実行結果も 512 だった。 【B(不正解)】 ? 左側の 2 ** 3 を先に計算した値です。 (2 ** 3) ** 2 = 64 となるのは丸括弧を付けたときで、** は右から結び付く。 【C(不正解)】 ? 掛け算と足し算を混ぜた見方です。 ** はべき乗であり、2 * 3 * 2 = 12 ではない。 【D(不正解)】 ? ** は続けて書けないという見方です。 ** は続けて書ける。右から順に評価される。
見積もり計算で 4 * 3.75 - 1 を評価した。表示される値はどれか。
A. 14 B. 14.0 C. 15.0 D. TypeError になる
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? 整数の結果になるという見方です。 整数と浮動小数点数が混ざった演算では、整数が浮動小数点数に変換されるので 14 とは表示されない。 【B(正解)】 ? 小数点の付いた数です。 int と float が混在すると、演算子が整数を浮動小数点数に変換する。実行結果は 14.0 だった。 【C(不正解)】 ? 引き算をしていない値です。 4 * 3.75 = 15.0 から 1 を引くので 14.0 になる。 【D(不正解)】 ? int と float は混ぜられないという見方です。 int と float は混ぜて計算できる。
対話モードで次のように入力した。最後の行の表示はどれか。 >>> price = 100 >>> price * 3 300 >>> _ + 50
A. 150 B. NameError になる C. 50 D. 350
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? price に 50 を足した値です。 _ には変数 price ではなく、最後に表示された式の値 300 が入っている。 【B(不正解)】 ? _ は定義されていないという見方です。 対話モードでは、最後に表示された式の値が変数 _ に自動で代入される。 【C(不正解)】 ? _ を 0 とみる見方です。 _ には直前に表示された 300 が入っている。 【D(正解)】 ? 直前に表示された値に 50 を足した値です。 対話モードでは最後に表示された式の値 300 が _ に入るので、300 + 50 = 350 になる。
対話モードで、宣言も代入もしていない変数 total を入力した。どうなるか。
A. 0 が表示される B. NameError になる C. None が表示される D. 何も表示されずに次のプロンプトに進む
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? 数値の変数は 0 で始まるという見方です。 Python の変数に自動の初期値は無い。 【B(正解)】 ? その名前が定義されていないことを示すエラーです。 値を代入していない変数を使うとエラーになる。チュートリアルの例では NameError: name 'n' is not defined と表示される。 【C(不正解)】 ? 値が無いことを表す特別な値です。 未定義の変数が None になることはない。 【D(不正解)】 ? 式を無視するという見方です。 未定義の名前を評価するとエラーが表示される。
次のコードについて、コメントとして扱われる部分の説明に合うものはどれか。 note = "# メモ" # 備考を入れる
A. "# メモ" と # 備考を入れる の両方がコメントになる B. 1 行に 2 つ # があるので SyntaxError になる C. # 備考を入れる だけがコメントで、文字列の中の # は文字のまま D. 行の先頭が # ではないので、この行にコメントは無い
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? # があればどこでもコメントになるという見方です。 文字列リテラルの中の # はただの文字で、コメントにはならない。 【B(不正解)】 ? # は 1 行に 1 つという見方です。 文字列の中の # は普通の文字なので、エラーにはならない。 【C(正解)】 ? 引用符の外にある # から行末までです。 コメントは # から物理行の末尾まで続くが、文字列リテラルの中の # はただの文字である。 【D(不正解)】 ? コメントは行頭にしか書けないという見方です。 コメントは行の先頭だけでなく、コードの後ろにも書ける。
Python で複素数の虚部を表すときに数の後ろに付ける文字はどれか。
A. i または I B. c または C C. e または E D. j または J
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? 数学の教科書でよく使う記号です。 Python では i は虚部の接尾辞として使えない。 【B(不正解)】 ? complex の頭文字です。 c は虚部の接尾辞ではない。 【C(不正解)】 ? 指数を表すときに使う記号です。 e は 1e3 のような指数表記に使う文字で、虚部の印ではない。 【D(正解)】 ? 電気工学でよく使う記号です。 複素数は組み込みで扱え、接尾辞 j または J で虚部を表す(例: 3+5j)。
文字列リテラル(引用符・エスケープ・raw・複数行)
'spam' と "spam" の違いについて、チュートリアルの説明に合うものはどれか。
A. どちらで囲んでも同じ文字列になる B. ダブルクォートのときだけ \n が改行として解釈される C. シングルクォートは 1 文字、ダブルクォートは 2 文字以上に使う D. ダブルクォートで囲むと raw 文字列になる
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? 囲む記号を変えても中身は変わらないという見方です。 文字列はシングルクォートでもダブルクォートでも囲め、どちらも同じ結果になる。 【B(不正解)】 ? 特殊文字の扱いが変わるという見方です。 チュートリアルの脚注では、\n のような特殊文字はどちらの引用符でも同じ意味を持つ。 【C(不正解)】 ? 長さで使い分けるという見方です。 Python に文字専用の型は無く、どちらの引用符でも何文字でも書ける。 【D(不正解)】 ? バックスラッシュの扱いが変わるという見方です。 raw 文字列にするのは引用符の前の r で、ダブルクォートかどうかとは関係ない。
対話モードで 'doesn\'t' を評価した。表示されるのはどれか。
A. 'doesn\'t' B. doesn't C. "doesn't" D. SyntaxError になる
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? 入力した形のまま表示するという見方です。 インタープリタは、中にシングルクォートがある文字列をダブルクォートで囲んで表示する。 【B(不正解)】 ? 引用符を付けずに表示するという見方です。 引用符を省いて表示するのは print() を使ったときである。 【C(正解)】 ? ダブルクォートで囲んだ表示です。 \' はエスケープシーケンスでシングルクォートを表す。チュートリアルの例でも "doesn't" と表示される。 【D(不正解)】 ? シングルクォートの中にシングルクォートは書けないという見方です。 直前に \ を付けてエスケープすれば、同じ引用符を文字列の中に書ける。
print('C:\temp\new') を実行したら、表示が崩れた。パスをそのまま表示する直し方として最も簡単なものはどれか。
A. ダブルクォートで囲み直す B. 三重引用符で囲み直す C. str() で囲み、print(str('C:\temp\new')) とする D. 最初の引用符の前に r を付ける
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? 引用符の種類を変える方法です。 \t や \n はどちらの引用符でも同じ意味なので、崩れは直らない。 【B(不正解)】 ? 複数行の文字列にする方法です。 三重引用符の中でも \t や \n は特殊文字として解釈される。 【C(不正解)】 ? 文字列に変換する関数を間に挟む方法です。 \t や \n は文字列を作る時点で解釈済みなので、str() で囲んでも中身は変わらず、表示は崩れたままである。 【D(正解)】 ? バックスラッシュを特別扱いしない書き方です。 \t はタブ、\n は改行として解釈されて崩れる。r を付けたraw 文字列にすると、\ がそのまま表示される。
フォルダのパスを r'C:\data\' と書いた。この行の扱いはどれか。
A. C:\data\ という文字列になる B. SyntaxError になる C. C:\data という文字列になり、最後の \ は捨てられる D. \d がエスケープとして解釈され、別の文字に変わる
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? 最後の \ も文字として残るという見方です。 raw 文字列でも末尾の \ は閉じ引用符をエスケープしてしまうので、文字列が閉じない。 【B(正解)】 ? 文字列の終わりが見つからないという見方です。 raw 文字列の末尾に奇数個の \ は置けない。最後の \ が閉じ引用符をエスケープし、文字列が閉じないので SyntaxError になる(メッセージの文言は版で異なる)。 【C(不正解)】 ? 余分な記号が無視されるという見方です。 \ が捨てられることはなく、文字列が閉じずにエラーになる。 【D(不正解)】 ? バックスラッシュの後ろの文字が変わるという見方です。 raw 文字列では \ を特殊文字として扱わないので、\d は変わらない。
出典: Python チュートリアル 3.1.2. テキスト/Python 言語リファレンス 2.4.1. 文字列およびバイト列リテラル
次のコードを実行したときの表示はどれか。 s = """\ ab """ print(len(s))
A. 2 B. 4 C. 3 D. 5
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? a と b の 2 文字だけという見方です。 最後の行の改行は文字列に含まれる。 【B(不正解)】 ? 改行を 2 つとも数える見方です。 1 行目の行末の \ によって、最初の改行は含まれない。 【C(正解)】 ? a、b、末尾の改行の 3 文字です。 三重引用符の中の改行は自動で含まれるが、行末に \ を付けた改行は含まれない。中身は 'ab\n' で、実行結果は 3 だった。 【D(不正解)】 ? \ も 1 文字として数える見方です。 行末の \ は改行を打ち消す記号で、文字列には入らない。
変数 s = 'First line.\nSecond line.' について、対話モードで s と入力した場合と print(s) の場合の違いはどれか。
A. どちらも同じく 2 行に分けて表示される B. s は \n のまま、print(s) は改行して表示 C. s はエラーになり、print(s) だけが表示できる D. s は改行され、print(s) は \n のまま表示
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? 表示の方法で違いは出ないという見方です。 s と入力しただけでは、\n はそのまま \n と表示される。 【B(正解)】 ? 表示する方法によって見た目が変わるという見方です。 print() は引用符を省き、特殊文字を解釈して表示する。s だけのときは定義したときの見た目で表示される。 【C(不正解)】 ? print() を使わないと表示できないという見方です。 対話モードでは式を入力すれば値が表示される。 【D(不正解)】 ? 2 つの方法の働きを入れ替えた見方です。 特殊文字を解釈して改行するのは print() の方である。
len('a\tb\\c') の結果はどれか。
A. 7 B. 6 C. 4 D. 5
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? バックスラッシュも 1 文字ずつ数える見方です。 \t はタブ 1 文字、\\ は \ 1 文字を表すので、書いた記号の数とは一致しない。 【B(不正解)】 ? \t を 1 文字、\\ を 2 文字と数える見方です。 \\ は 1 つの \ を表すエスケープシーケンスなので、1 文字である。 【C(不正解)】 ? エスケープ部分を数えない見方です。 タブも \ も文字として数えられる。 【D(正解)】 ? a、タブ、b、\、c の 5 文字です。 \t はタブ 1 文字、\\ は \ 1 文字になる。実行結果は 5 だった。
出典: Python チュートリアル 3.1.2. テキスト/Python 言語リファレンス 2.4.1. 文字列およびバイト列リテラル
文字列の連結・インデックス・スライス
3 * 'un' + 'ium' を評価した結果はどれか。
A. 'unununium' B. 'uniumuniumunium' C. '3unium' D. TypeError になる
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? un を 3 回並べてから ium をつないだ文字列です。 * は文字列を繰り返し、+ は連結する。チュートリアルの例でも 'unununium' になる。 【B(不正解)】 ? un と ium を 1 組にして繰り返す見方です。 * は + より先に計算されるので、繰り返すのは 'un' だけである。 【C(不正解)】 ? 数字を文字として前に付ける見方です。 * は文字列を回数分繰り返す演算子である。 【D(不正解)】 ? 数と文字列は掛けられないという見方です。 整数と文字列の * は繰り返しとして使える。
prefix = 'Py' のあと、prefix 'thon' と書いたら動かなかった。原因と直し方の組み合わせはどれか。
A. 引用符の種類がそろっていないので、ダブルクォートにそろえる B. 変数とリテラルは並べても連結されないので、prefix + 'thon' と書く C. prefix が不変なので、prefix.append('thon') と書く D. 間に空白があるので、prefix'thon' と詰めて書く
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? 囲み方の問題とみる見方です。 引用符の種類は関係ない。並べて自動で連結できるのはリテラルどうしだけである。 【B(正解)】 ? + でつなぐ書き方です。 隣り合わせの自動連結はリテラルどうしだけで、変数には使えず SyntaxError になる。変数との連結には + を使う。 【C(不正解)】 ? 末尾に足すメソッドを使う書き方です。 文字列に append() は無い。append() はリストのメソッドである。 【D(不正解)】 ? 空白を取り除く書き方です。 詰めて書いても変数とリテラルは自動では連結されない。
word = 'Python' のとき、word[1:3] と word[-2:] の組み合わせはどれか。
A. 'yth' と 'n' B. 'Py' と 'on' C. 'yt' と 'on' D. 'yt' と 'o'
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? 終わりの位置も含める見方です。 スライスの終わりの位置は含まれない。また -2 から最後までは 2 文字である。 【B(不正解)】 ? 最初の位置を 1 から数える見方です。 インデックスは 0 から数えるので、word[1] は 'y' である。 【C(正解)】 ? 1 番目から 3 番目の手前までと、後ろから 2 文字です。 開始位置は含み、終了位置は含まない。word[1:3] は 'yt'、word[-2:] は 'on' になった。 【D(不正解)】 ? -2 の文字 1 つだけを取る見方です。 終わりを省略したスライスは最後までを取るので、'on' になる。
word = 'Python'(6 文字)のとき、word[42] と word[4:42] を評価した結果の組み合わせはどれか。
A. どちらも IndexError になる B. word[42] は ''、word[4:42] は 'on' C. word[42] は 'n'、word[4:42] は 'on' D. word[42] は IndexError、word[4:42] は 'on'
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? 範囲の外はどちらも使えないという見方です。 スライスは範囲外の位置を指定してもエラーにならない。 【B(不正解)】 ? 範囲外はどちらも寛容に扱う見方です。 1 文字を取り出すインデックスは、範囲外だとエラーになる。 【C(不正解)】 ? 大きすぎる位置を最後の文字に置き換える見方です。 インデックスが最後の文字に置き換えられることはない。 【D(正解)】 ? 1 文字の取り出しとスライスで扱いが違うという見方です。 大きすぎるインデックスはエラーになるが、スライスは範囲外でもエラーにならず 'on' を返す。
word = 'Python' の先頭を J に変えた 'Jython' を作りたい。動く書き方はどれか。
A. 'J' + word[1:] B. word[0] = 'J' C. word[:1] = 'J' D. word.replace[0] = 'J'
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? 新しい文字列を組み立てる書き方です。 文字列はイミュータブルなので、新しい文字列を作る。'J' + word[1:] は 'Jython' になる。 【B(不正解)】 ? 先頭の 1 文字に代入する書き方です。 文字列は不変なので、TypeError: 'str' object does not support item assignment になる。 【C(不正解)】 ? 先頭のスライスに代入する書き方です。 文字列のスライスにも代入できず、TypeError になる。 【D(不正解)】 ? 置き換えのメソッドに位置を付ける書き方です。 メソッドに [0] で代入するような書き方はできず、エラーになる。
文字列 s と、0 以上 len(s) 以下の任意の整数 i について、常に s と等しくなる式はどれか。
A. s[:i] + s[i+1:] B. s[:i] + s[i:] C. s[:i-1] + s[i:] D. s[0:i] + s[i:-1]
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? i の位置で 2 つに分けてつなぐ式です。 i 番目の 1 文字が抜けてしまい、s と等しくならない。 【B(正解)】 ? i の前までと、i から後ろをつなぐ式です。 開始位置は常に含まれ、終了位置は常に含まれないため、s[:i] + s[i:] は常に s と等しくなる。 【C(不正解)】 ? 1 つ手前で区切る式です。 i-1 番目の文字が抜ける。また i が 0 のときは s[:-1] + s となり、文字が重複して長くなる。 【D(不正解)】 ? 最後まで取るつもりで -1 を書いた式です。 -1 は最後の文字を含まないので、最後の 1 文字が抜ける。
次のコードの表示はどれか。 w = 'Python' print(w[-3:-1], w[:-4])
A. hon Py B. ho Pyth C. ho Py D. oh yP
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? 終わりの位置も含める見方です。 終了位置の -1(最後の文字)は含まれないので、最初は 'ho' である。 【B(不正解)】 ? -4 から最後までを取る見方です。 [:-4] は先頭から後ろ 4 文字の手前までなので 'Py' になる。 【C(正解)】 ? 後ろから 3 文字目から最後の手前までと、先頭 2 文字です。 w[-3:-1] は 'ho'、w[:-4] は 'Py' になる。実行結果は ho Py だった。 【D(不正解)】 ? 逆順に取り出す見方です。 負のインデックスは右から数える位置を表すだけで、並びを逆にしない。
次のコードで text に入る値はどれか。 text = ('Py' 'thon')
A. 'Py thon' B. ('Py', 'thon') C. SyntaxError になる D. 'Python'
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? 間に空白が入るという見方です。 隣り合った文字列リテラルは、間に空白を入れずにそのまま連結される。 【B(不正解)】 ? 2 つの要素を持つまとまりになるという見方です。 コンマが無いのでタプルにはならない。 【C(不正解)】 ? 改行をまたいで書けないという見方です。 丸括弧の中なら複数行に分けて書ける。 【D(正解)】 ? 2 つのリテラルが 1 つにつながった値です。 隣り合わせに書いた文字列リテラルは自動で連結される。長い文字列を分けて書くときに便利である。
リストの基本
文字列とくらべたリストの性質として、チュートリアルの説明に合うものはどれか。
A. リストは可変で、要素を後から置き換えられる B. リストはインデックスもスライスも使えない C. リストには同じ型の要素しか入れられない D. リストは + で連結できない
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? 中身を変えられるかどうかの話です。 不変な文字列と違い、リストはミュータブルで、cubes[3] = 64 のように要素を置き換えられる。 【B(不正解)】 ? 取り出し方の話です。 リストも文字列と同じく、インデックスとスライスが使える。 【C(不正解)】 ? 要素の型の話です。 通常は同じ型をそろえるが、異なる型の要素も入れられる。 【D(不正解)】 ? つなぎ方の話です。 リストは + で連結できる。
次のコードの表示はどれか。 a = [1, 2] b = a b.append(3) print(a)
A. [1, 2] B. [1, 2, 3] C. [3] D. AttributeError になる
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? b は a の写しだという見方です。 単純な代入では、Python はデータをコピーしない。 【B(正解)】 ? a と b が同じリストを指しているという見方です。 b = a では b も同じリストを参照する。b を通じた append() の変更は a からも見え、実行結果は [1, 2, 3] だった。 【C(不正解)】 ? append で中身が置き換わるという見方です。 append() は末尾に要素を足すだけで、ほかの要素は消えない。 【D(不正解)】 ? a には append が使えないという見方です。 a も b も同じリストなので、append() は使える。
不要な要素をまとめて消したい。次のコードの表示はどれか。 letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] letters[2:5] = [] print(letters)
A. ['a', 'b', 'f', 'g'] B. ['a', 'b', 'g'] C. ['a', 'b', [], 'f', 'g'] D. TypeError になる
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? 2 番目から 5 番目の手前までが消えた結果です。 スライスに空のリストを代入すると、その範囲の要素が削除される。実行結果は ['a', 'b', 'f', 'g'] だった。 【B(不正解)】 ? 5 番目も消える見方です。 終わりの位置 5('f')は範囲に含まれない。 【C(不正解)】 ? 空のリストが 1 つの要素として入る見方です。 スライスへの代入では、右辺のリストの要素で範囲を置き換える。 【D(不正解)】 ? スライスには代入できないという見方です。 リストは可変なので、スライスへの代入ができる。
一部の値を 1 つにまとめて置き換えた。次のコードの表示はどれか。 nums = [10, 20, 30, 40, 50] nums[1:3] = [0] print(nums)
A. [10, 0, 30, 40, 50] B. [10, 0, 0, 40, 50] C. [10, 0, 40, 50] D. ValueError になる
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? 1 つの要素だけを置き換える見方です。 スライス [1:3] は 20 と 30 の 2 つを指すので、両方が置き換わる。 【B(不正解)】 ? 置き換える要素が範囲の数だけ繰り返される見方です。 右辺の要素がくり返されることはない。 【C(正解)】 ? 2 つの要素が 1 つに置き換わった結果です。 スライスへの代入はリストの長さを変えられる。20 と 30 が 0 の 1 つになり、実行結果は [10, 0, 40, 50] だった。 【D(不正解)】 ? 数が合わないと代入できないという見方です。 この形のスライスへの代入は、要素の数が違っていても使える。
次のコードの表示はどれか。 inner = [2, 3] a = [1, inner] b = a[:] b[1].append(4) b[0] = 9 print(a[1], a[0])
A. [2, 3] 1 B. [2, 3, 4] 9 C. [2, 3] 9 D. [2, 3, 4] 1
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? b は中身まで丸ごと写されたという見方です。 a[:] は浅いコピーで、中のリスト inner は a と b で共有される。 【B(不正解)】 ? b への変更がすべて a に及ぶという見方です。 b[0] = 9 は b の要素を差し替えるだけで、別のリストである a の a[0] は 1 のまま。 【C(不正解)】 ? 要素の差し替えだけが a に及ぶという見方です。 差し替えは b だけに効き、中のリストへの append は共有されているので、逆である。 【D(正解)】 ? 外側は別のリストで、中のリストは共有という見方です。 スライスは新しいリストを返すが、要素は同じものを指す。共有している inner への追加は a から見え、a[0] は 1 のまま。実行結果は [2, 3, 4] 1 だった。
次のコードで x[0][1] の値はどれか。 a = ['a', 'b', 'c'] n = [1, 2, 3] x = [a, n]
A. 'b' B. 1 C. 'a' D. 2
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? 1 つ目のリストの 2 番目の要素です。 x[0] は a、その [1] は 'b' になる。リストは入れ子にできる。 【B(不正解)】 ? 2 つ目のリストの先頭という見方です。 x[0] は 1 つ目のリスト a を指す。 【C(不正解)】 ? 1 つ目のリストの先頭という見方です。 インデックスは 0 から数えるので、[1] は 2 番目の要素である。 【D(不正解)】 ? 2 つ目のリストの 2 番目という見方です。 x[0] は a なので、n の要素にはならない。
次のコードの表示はどれか。 a = [1, 2] b = a a[:] = [] print(b)
A. [1, 2] B. [] C. [None, None] D. TypeError になる
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? a に空のリストを入れ直したという見方です。 a = [] なら a が新しいリストを指すだけで b は [1, 2] のまま。しかし a[:] = [] は中身の変更である。 【B(正解)】 ? 共有しているリストの中身が空になったという見方です。 a[:] = [] はスライスへの代入で、同じリストの中身を空にする。b も同じリストなので、実行結果は [] だった。 【C(不正解)】 ? 空を表す値が残るという見方です。 スライスへの代入は範囲の要素を置き換えるもので、None が残ることはない。 【D(不正解)】 ? スライス全体には代入できないという見方です。 リスト全体を指すスライス [:] にも代入できる。
プログラミングへの第一歩(多重代入・while・print)
次のコードの表示はどれか。 a, b = 0, 1 while a < 10: print(a, end=' ') a, b = b, a+b
A. 0 1 2 3 4 5 6 7 8 9 B. 1 1 2 3 5 8 13 C. 0 1 1 2 3 5 8 D. 0 1 1 2 3 5 8 13
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? 1 ずつ増える見方です。 a, b = b, a+b でフィボナッチ数列になり、1 ずつは増えない。 【B(不正解)】 ? 最初の 0 を出さず、10 を超える値まで出す見方です。 最初の a は 0 で、a < 10 の間だけ表示する。 【C(正解)】 ? フィボナッチ数列のうち 10 未満の値です。 多重代入で前の 2 つの和を次の値にする。a が 10 未満の間だけ表示し、実行結果は 0 1 1 2 3 5 8 だった。 【D(不正解)】 ? 10 を超えた最初の値も出す見方です。 13 になった時点で a < 10 が偽になり、while 文を抜ける。
a, b = b, a+b を、a = b と b = a+b の 2 行に分けたら結果が変わった。理由として、チュートリアルの説明に合うものはどれか。
A. 2 行に分けると、b = a+b が先に実行されるため B. 多重代入では、+ の計算が整数ではなく小数になるため C. 2 行に分けると、b がインデントの外に出てしまうため D. 多重代入は右辺をすべて計算してから代入するため
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? 実行の順番が入れ替わるという見方です。 2 行に分けても上から順に実行される。順番は入れ替わらない。 【B(不正解)】 ? 計算の型が変わるという見方です。 多重代入でも、整数どうしの + は整数のままである。 【C(不正解)】 ? ブロックの範囲の話です。 同じ深さで並べれば、2 行とも同じブロックに入る。 【D(正解)】 ? 代入の前に右辺の値がそろうという見方です。 代入文では右辺の式がすべて先に評価される。2 行に分けると、b = a+b の a は更新後の値になってしまう。
次のうち、while 文の条件にしたとき真とみなされる値はどれか。
A. [0] B. '' C. 0 D. []
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? 0 を 1 つ含むリストです。 長さが 1 以上のシーケンスは真になる。中身が 0 でも、要素があるので真である。 【B(不正解)】 ? 中身の無い文字列です。 空のシーケンスは偽になる。 【C(不正解)】 ? 整数のゼロです。 C 言語と同じく、ゼロは偽になる。 【D(不正解)】 ? 要素の無いリストです。 空のリストは長さ 0 のシーケンスなので偽になる。
i = 256 のとき、print('i is', i) の表示はどれか。
A. 'i is' 256 B. i is256 C. i is 256 D. ('i is', 256)
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? 文字列を引用符付きで出す見方です。 print() は文字列を引用符なしで出力する。 【B(不正解)】 ? 引数の間に何も入れない見方です。 print() は引数の間に空白を入れて出力する。 【C(正解)】 ? 文字列は引用符なしで、間に空白が入った表示です。 print() は文字列を引用符なしで出し、引数の間に空白を入れて出力する。 【D(不正解)】 ? 引数をまとめて 1 つの値として出す見方です。 print() は引数を 1 つずつ並べて出す。
1 行に数を並べて 0,1,2, と表示したい。print() の使い方として合うものはどれか。
A. print(n, sep=',') を数ごとに呼ぶ B. print(n + ',') を数ごとに呼ぶ C. print(n, ',') を数ごとに呼ぶ D. print(n, end=',') を数ごとに呼ぶ
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? 引数の間の区切りを変える方法です。 引数が 1 つなので区切りは使われず、毎回改行される。 【B(不正解)】 ? 数と文字をつなぐ方法です。 整数と文字列を + でつなぐと TypeError になる。また改行も残る。 【C(不正解)】 ? 引数を 2 つ渡す方法です。 間に空白が入り、毎回改行されるので 1 行にはならない。 【D(正解)】 ? 出力の末尾に付ける文字を変える方法です。 キーワード引数 end を使うと、末尾の改行の代わりに別の文字列を出力できる。
while 文の本体(ブロック)の書き方について、チュートリアルの説明に合うものはどれか。
A. ブロックの中の行は、すべて同じだけインデントする B. ブロックは中括弧 { } で囲み、インデントは見た目だけである C. 1 行目だけインデントすれば、2 行目以降は自由に書いてよい D. ブロックの終わりには end と書く
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? 字下げの深さをそろえるという見方です。 インデントは文をまとめる方法で、基本的なブロック内のすべての行は同じだけインデントする必要がある。 【B(不正解)】 ? 括弧でまとまりを表すという見方です。 Python は括弧ではなくインデントで文をまとめる。 【C(不正解)】 ? 最初の行だけ字下げするという見方です。 ブロック内の各行が同じインデントでないと、同じブロックにならない。 【D(不正解)】 ? 終わりの印を書くという見方です。 Python にブロックの終わりを示す end は無い。
「等しくない」を表す比較演算子はどれか。
A. <> B. != C. =! D. ==
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? ほかの言語で見かけることがある記号です。 チュートリアルが挙げる標準の比較演算子に <> は無い。 【B(正解)】 ? 感嘆符と等号を並べた記号です。 標準の比較演算子は C 言語と同じで、!= が「等しくない」を表す。 【C(不正解)】 ? 等号と感嘆符を並べた記号です。 =! という比較演算子は無い。 【D(不正解)】 ? 等号を 2 つ並べた記号です。 == は「等しい」を表す。
この分野に出てくる用語(49 語)
-c オプション:python -c command の形で、command に書いた文を実行する起動方法。このとき sys.argv[0] は '-c' になる。
-i オプション:スクリプトを実行したあと、そのまま対話モードに入るためのオプション。スクリプトのファイル名の前に付ける。
-m オプション:python -m module の形で、モジュールのソースファイルをスクリプトとして実行する起動方法。sys.argv[0] は見つかったモジュールのフルパスになる。
append():リストの末尾に要素を 1 つ追加するメソッド。
float:小数部を持つ数を表す型。5.0 や 1.6 など。整数と混ぜて計算すると結果は float になる。
IndexError:シーケンスの範囲外のインデックスを指定したときに発生する例外。
int:整数を表す型。2 や 20 のような小数部の無い数。
KeyboardInterrupt:利用者が Control-C などでプログラムを中断したときに発生する例外。Exception を継承していない。
len():文字列やリストなどの長さ(要素の数)を返す組み込み関数。
NameError:定義されていない名前(変数など)を使ったときに発生する例外。
None:値が無いことを表す特別な値。return の無い関数の戻り値になる。
print():値を表示する組み込み関数。複数の引数は空白で区切って出力され、キーワード引数 end で末尾の文字を変えられる。
raw 文字列:最初のクォートの前に r を付けた文字列。\ を特殊文字として解釈しない。
shebang 行:Unix で、実行に使うインタープリタを示すファイル先頭の #! で始まる行。この行があるときは、エンコーディング宣言を 2 行目に書く。
sys.argv:スクリプト名とそれに続く引数を文字列のリストで持つ変数。スクリプト名も引数も無いと sys.argv[0] は空文字列になる。
TypeError:演算や関数に不適切な型の値を渡したときに発生する例外。
UTF-8:Python のソースファイルの既定の文字コード。世界中のほとんどの言語の文字を扱える。
while 文:条件が真である限り本体を繰り返す文。
イミュータブル:作った後で内容を変更できない性質。数値・文字列・タプルなどがイミュータブル。
インタープリタ:Python のプログラムを読み取って実行するプログラム。コンパイルやリンクをせずにすぐ実行できる。
インデックス:シーケンスの何番目かを表す番号。先頭は 0 で、負の数は末尾から数える(-1 が最後)。
インデント:行頭の空白。Python は括弧ではなくインデントで文のまとまり(ブロック)を表す。
エスケープシーケンス:\ に続く文字で特殊な文字を表す書き方。\n は改行を表す。
エンコーディング宣言:ソースファイルの文字コードを宣言する特別なコメント。既定は UTF-8 で、別の文字コードを使うときにファイルの先頭行に書く。
キーワード引数:name=value の形で、仮引数の名前を指定して渡す引数。位置引数より後に書く。
コメント:# から行末までの部分。Python は解釈しない。文字列リテラルの中の # はただの文字になる。
スライス:[開始:終了] で部分を取り出す操作。開始位置は含み、終了位置は含まない。範囲外を指定してもエラーにならない。
タプル:コンマで区切った値の並びで、変更できない(イミュータブル)シーケンス。要素 1 つのタプルは値の後にコンマを付ける。
ファイル終端文字:一次プロンプトで入力すると、インタープリタが終了ステータス 0 で終わる文字。Unix では Control-D、Windows では Control-Z。
べき乗:** 演算子による計算。2 ** 7 は 2 の 7 乗で 128。
ミュータブル:作った後でも内容を変更できる性質。リスト・辞書・集合などがミュータブル。
モジュール:定義や文を書いた .py ファイル。import で読み込んで、その中の関数や変数を使う。
リスト:角括弧の中に値をコンマで区切って並べたデータ型。インデックスやスライスが使え、内容を変更できる。
一次プロンプト:対話モードで次の入力を促す記号。通常は >>> と表示される。
継続行:if 文のように複数行にわたる構文を入力するときの 2 行目以降の行。対話モードでは二次プロンプトが表示される。
三重引用符:"""...""" や '''...''' で囲む文字列リテラル。複数行にまたがる文字列を書ける。
辞書:キーと値の組を集めたデータ型。キーには文字列や数値など変更できない型を使う。
剰余:% 演算子で求める割り算の余り。
切り捨て除算:// 演算子による割り算。小数部を切り捨てた整数を返し、負の数では小さい方へ切り下げる(-7 // 2 は -4)。/ は常に浮動小数点数を返す。
浅いコピー:入れ物だけを新しく作り、中の要素は元と同じオブジェクトを参照するコピー。リストのスライス a[:] は浅いコピーを返す。
多重代入:a, b = 0, 1 のように複数の変数に一度に代入すること。右辺をすべて評価してから代入する。
対話モード:端末から入力を受け取り、入力した文をその場で実行するインタープリタの動作モード。
超高水準言語:チュートリアルが Python を表すのに使う言葉。柔軟な配列や辞書のような高レベルのデータ型を組み込みで持つ。
二次プロンプト:対話モードで複数行の構文の続き(継続行)を促す記号。既定では ... と表示される。
比較演算子:2 つの値を比べる演算子。< > == <= >= != がある。
複素数:実部と虚部を持つ数。Python は組み込みで扱え、虚部は接尾辞 j または J で表す(例: 3+5j)。
文字列:文字の並びを表す str 型の値。シングルクォートかダブルクォートで囲み、どちらでも同じ意味になる。
文字列リテラル:ソースコードの中に引用符で囲んで直接書いた文字列。隣り合わせに書いたリテラルどうしは自動で連結されるが、変数とは連結されない。
変数:値に付ける名前。= で代入して作る。値が代入されていない変数を使うとエラーになる。
独学の次に、講座で体系立てて学びたい人へ
この問題集は独学用です。IT の基礎から講師つきで体系立てて学びたい人には、資格や IT の講座がそろうスクールも選択肢になります。
本ページは広告・アフィリエイトプログラムを利用しており、リンク経由でのお申し込み・購入により当サイトに収益が発生することがあります。ただし、ランキング・評価・掲載内容は広告費や報酬の有無に関わらず編集部の独自基準で決定しており、広告主からの指示により内容を変更することはありません。
IT・Webデザイン・資格まで幅広い講座。生成AI/DX講座はリスキリング補助金の対象
まずは無料ではじめられます。リンク先は公式サイトです。
このサービスの解説記事を読む →