Skip to content
This repository has been archived by the owner on Mar 14, 2024. It is now read-only.

Commit

Permalink
[Crowdin] Translation (#4)
Browse files Browse the repository at this point in the history
  • Loading branch information
shorodilov authored Dec 5, 2023
2 parents f503d54 + a4c2814 commit 99309b7
Show file tree
Hide file tree
Showing 2 changed files with 168 additions and 0 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Assignment: Quiz Script

[![Crowdin](https://badges.crowdin.net/assignment-quiz/localized.svg)](https://crowdin.com/project/assignment-quiz)

This repository is compatible with [Replit](https://replit.com/).

## Materials within this repo
Expand Down
166 changes: 166 additions & 0 deletions i18n/uk/instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
# Інструкції

Цей проєкт надає простий скрипт командного рядка, який задає користувачеві питання з файлу. Файл запитань використовує заздалегідь визначену структуру. Після того, як всі відповіді будуть зібрані, користувачеві буде показано загальну кількість балів і виконання скрипту буде завершено.

![](../../.lesson/assets/run_script.gif)

## Завдання

Ваша задача - реалізувати скрипт для запуску вікторини на основі командного рядка.
Користувачі будуть вводити свої імена та відповідати на питання з файлу. В кінці тесту користувачеві повинен бути показаний результат, а всередині файлу _scores.txt_ повинен бути створений запис.

## Вимоги

### Отримайте ім'я користувача

Ця функція пропонує користувачеві ввести своє ім'я. Ім'я має відповідати вимогам:

- непорожній рядок
- не довше 10 символів

Якщо вимоги не виконані - запитуйте ще раз, поки введені дані не пройдуть перевірку.

Функція поверне ім'я, введене користувачем.

### Завантажте питання з файлу CSV

Питання зберігаються у файлі CSV, який відповідає шаблону:

```text
Question text?,"option 1,option 2,...,option n",correct answer
```

Це означає, що в першому стовпчику міститься запитання, у другому - всі можливі варіанти відповідей, а в останньому - правильна відповідь.

Правильна відповідь подається у тому вигляді, в якому вона була написана у колонці з варіантами відповідей.

Подвійні лапки використовуються для зберігання тексту з комами як значення одного стовпця.

Псевдоніми типів структур даних визначаються як:

```python
from typing import List, TypedDict

Question = TypedDict("Question", {
"question": str,
"options": List[str],
"answer": str,
})
Questions = List[Question]
```

Вихідною структурою для питання є словник з ключами:

- question
- options
- answer

Функція повинна повертати список словників запитань.

### Показати питання

Ця функція просто виводить дані питання користувачеві.
Текст питання завжди має порожній рядок до і після нього.

```text
Is this a question?
```

Кожен варіант повинен бути видрукований на окремому рядку з номером варіанту, що стоїть перед ним. Нумерація варіантів починається з 1.

```text
1 option 1
2 option 2
3 option 3
```

Номер варіанта відповіді та текст слід відокремлювати за допомогою будь-яких пробільних символів; принаймні один символ-розділювач обов'язковий.

Все разом - питання:

```python
question = {
"question": "Is this a question?",
"options": ["Yes", "No"],
"answer": "Yes",
}
```

буде видрукувано так:

```text
Is this a question?
1 Yes
2 No
```

### Збір відповідей від користувача

Користувачам буде запропоновано ввести відповідь після того, як питання буде видрукувано. Підказка повинна містити текст `"Submit answer: "`.

Функція повинна повертати **фактичний індекс** вибраного варіанта.
Наприклад, для варіантів `["A", "B", "C", "D"]` виведених як:

```text
1 D
2 B
3 C
4 A
```

Якщо користувач вибрав `4` (опція `"A"`), функція повинна повернути `0`, як
фактичний індекс `"A"` у списку опцій.

### Перевірте правильність відповіді

Функція отримує як аргументи словник запитання та відповідь користувача.
Вона повертає `True`, якщо відповідь правильна, інакше `False`.

### Виконуємо тест

Ця функція отримує список запитань як аргумент.
Вона показує питання одне за одним і перевіряє правильність відповідей користувача.

Значенням, що повертається, є оцінка тесту - кількість правильних відповідей.

### Запис рахунку до файлу

Функція отримує як аргументи ім'я користувача та результат тесту і записує їх у файл з назвою **scores.txt**.

Структура файлу визначається наступним чином:

```text
username score points
```

Є два стовпчики, розділені двома пробілами.
Ширина першого стовпчика фіксована і дорівнює 10 символам.

Отже, вміст файлу може мати такий вигляд:

```text
username_1 10
user 5
quiz a 3
foo 20
bar 4
foobar 15
```

### Об'єднайте всі функції разом

Функція `main` (а не модуль **main.py**) є ядром тесту.
Вона об'єднує всю функціональність разом і виконує вікторину.

Наприкінці результати тесту будуть записані у файл **scores**, а користувач
отримає відповідне повідомлення:

```text
Quiz score: {score}
```

0 comments on commit 99309b7

Please sign in to comment.