Menu
Coddy logo textTech

Задаем вопросы

Часть раздела Логика и управление потоком путешествия по Swift на Coddy — урок 50 из 56.

Первая функция: задавать каждый вопрос по порядку и выводить, был ли каждый ответ правильным.

Банк вопросов жестко закодирован для этого урока, ответы игрока поступают из stdin (по одному в строке, по порядку).

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")
}

Читайте сверху вниз: выведите вопрос, прочитайте одну строку, сравните. В следующем уроке это строгое сравнение будет смягчено, чтобы оно не выдавало ошибку из-за регистра или лишних пробелов.

challenge icon

Задание

Легко

Дан банк вопросов questions. Прочитайте три строки из stdin (ответы игрока по порядку). Для каждого вопроса выведите:

  1. Текст вопроса на отдельной строке
  2. correct, если введенный ответ в точности совпадает с сохраненным ответом, в противном случае — wrong

После всех трех вопросов выведите 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'
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком