問題の出題
CoddyのSwiftジャーニー「ロジックとフロー」セクションの一部 — レッスン 50/56。
最初の機能:すべての質問を順番に出題し、それぞれの回答が正解だったかどうかを表示します。
このレッスンでは問題バンクはハードコードされており、プレイヤーの回答はstdin(標準入力)から(1行に1つずつ、順番に)入力されます。
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris")
]
for (_, text, answer) in questions {
print(text)
let given = readLine()!
print(given == answer ? "correct" : "wrong")
}上から順に読みます:質問を表示し、1行読み取り、比較します。次のレッスンでは、大文字小文字の違いや余分な空白で失敗しないように、その厳密な比較を緩和します。
チャレンジ
簡単questions バンクが与えられています。stdin から 3 行(プレイヤーの回答を順番に)読み取ります。各質問に対して、以下を出力してください:
- 質問のテキストを独自の行に出力
- 入力された回答が保存されている回答と完全に一致する場合は
correct、そうでない場合はwrongを出力
3 つの質問がすべて終わったら、正解数を含めて Score: <n>/3 と出力してください。
入力が 4 / Paris / red の場合、出力は以下のようになります:
2 + 2?
correct
Capital of France?
correct
Color of grass?
wrong
Score: 2/3チートシート
質問のタプル配列を反復処理し、標準入力(stdin)から回答を読み取り、比較します:
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris")
]
var score = 0
for (_, text, answer) in questions {
print(text)
let given = readLine()!
if given == answer {
print("correct")
score += 1
} else {
print("wrong")
}
}
print("Score: \(score)/\(questions.count)")自分で試してみよう
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris"),
("science", "Color of grass?", "green")
]
// TODO: 各質問について、テキストを表示し、回答を読み取り、正解/不正解を表示する。
// その後、'Score: <n>/3' を表示する。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。