前提
Python 3 エンジニア認定基礎試験 を取るべく勉強中です。
PRIME STUDY】第2回 Python 3 基礎 模擬試験 を受けているのですが、下記の設問が
理解できずに困っています。
【問題】
文字列に関する次の記述のうち、正しいものはどれか。なお「\」はバックスラッシュに読み替えること。
↓ *回答では、下記は正しいとのことです。
対話型インタープリタでは文字列は引用符に囲まれ、特殊文字はバックスラッシュでエスケープされた状態で出力される。print()関数では全体を囲む引用符が除去され、エスケープ文字や特殊文字がプリントされた状態で出力される。
該当のソースコード
python
1上記の記述の確認のため、下記を打つと、 2"こんにちは。\nお元気ですか?\nそれではまた。" 3↓ 4'こんにちは。\nお元気ですか?\nそれではまた。' 5 6引用符も、特殊文字も残ったように見えます。 7 8print関数を使って打つと 9print("こんにちは。\nお元気ですか?\nそれではまた。") 10↓ 11こんにちは。 12お元気ですか? 13それではまた。 14 15引用符もエスケープ文字も除去されているように見えます。 16
「print()関数では全体を囲む引用符が除去され、エスケープ文字や特殊文字がプリントされた状態で出力される。」の記述はあっていますか?
実際に上記のように、問題の記述が正しくないと思えるのですが、どのように理解すべきか教えていただけないでしょうか?
/nは改行のことなので3行になっている時点で正しくプリントされているといえるのではないでしょうか。
僕も「該当のソースコード」にある動作は問題の回答のとおりだと思いますが、どのあたりが、「問題の記述が正しくない」と考えていますか?
回答が投稿されているので蛇足になりますが、全く同じ例文で解説している記事がありましたので
参考までに貼っておきます。皆さんおっしゃっている通り問題の記述も回答も合っていると思い
ますが、「プリントされた状態で出力」とかあまり耳にしない言い回しのような気はしますね…
https://www.javadrive.jp/python/string/index2.html
ありがとうございます。
私は、「プリントされた状態」の理解ができていないようです。
/nがプリントされた状態 == 改行されている
という理解が身につくようにします
「プリントされた状態で出力」はたしかに不思議な表現ですし、質問者さんがこれの意味がわからないというのであれば、理解はできます。
これをちゃんと説明するには、文字列の実体(バイト列)と、文字列リテラルとしてのエスケープシーケンスと、バイト列を受け取ったターミナル(出力装置)がどのような動作をするのか、を説明して理解してもらう必要があるので、いつも骨が折れます。
私も「プリントされた状態」という言い回しは初めて聞きましたのでかなり独特な表現だと思います。
「(特殊文字に設定された挙動が)反映された状態」とかの方がしっくりきますかね
ありがとうございます。
「(特殊文字に設定された挙動が)反映された状態」
↑ 分かりやすい説明ありがとうございます。
回答2件
あなたの回答
tips
プレビュー