Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 01.04.2018
Сообщений: 57

Создание массива с заданиями

12.11.2018, 19:14. Показов 1447. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Есть небольшая программка экзаменатор. Она читает по строчно данные с файла и обрабатывает их. Все хорошо только проблема в том что она все делает по очереди. Допустим в файле заданий 30 штук и нам нужно сформировать тест из рандомных заданий из 10 штук. Так вот, как мне сделать так чтоб мои задания как-то записывались в массив а потом я уже с ними работал?
Вот мой код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# -*- coding: utf-8 -*-
 
import os
import os.path
import datetime
 
def ocenk (x):
    if (x<50):
        print ('Оценка: 2')
    elif (x<=67 and x>50):
        print ('Оценка: 3')
    elif (x<84 and x>67):
        print ('Оценка: 4')
    else:
        print ('Оценка: 5')
x = 1
ball = 0
kol = 0
ent = "\n"
palka = chr(92)
 
#Записываем в переменную настоящее время
a = datetime.datetime.today().strftime("%Y-%m-%d")
 
#Находим путь где находится скрипт
dir = os.path.abspath(os.curdir + '\quest')
 
#Считываем файлы в папке quest
files = os.listdir(dir)
 
#Фильтруем поиск на txt
txt = list(filter(lambda x: x.endswith('.txt'), files))
 
#Выводим названия тестов
for d in txt:
    print(str(x) + ')' + ' ' + d.replace('.txt',''))
    x+=1
 
test = int(input('Введите номер нужного теста: '))
#Формируем путь к тесту
quest = dir + palka + txt[test-1]
 
f = open(quest, 'r')
name = str(input('Введите свое имя: '))
last_name = str(input('Введите свою фамилию: '))
while True:
    vopros = f.readline().strip()
    if (not vopros):
        break
    otvet1 = f.readline().strip()
    otvet2 = f.readline().strip()
    otvet3 = f.readline().strip()
    otvet4 = f.readline().strip()
    kod = f.readline().strip()
    print(vopros)
    print ('1. '+otvet1)
    print ('2. '+otvet2)
    print ('3. '+otvet3)
    print ('4. '+otvet4)
    while True:
        k = str(input('Введите номер правильного ответа\n'))
        if int(k) > 3:
            print ('Нет такого ответа! Попробуйте еще раз!')
        else:
            break
    kol = kol + 1
    if(k==kod):
        ball+=1
proc = int((ball/kol)*100)
print ('Вы ответили правильно на ' + str(ball) + ' из '+ str(kol)+ ' вопросов.')
print (str(proc) + str('% ') + 'правильных ответов.')
ocenk(proc)
f = open(u'Журнал.txt', 'a')
f.write(ent)
f.write(name + ";")
f.write(last_name + ";")
f.write(str(ball)+ ";" + " ")
f.write(str(a)+ ";")
f.write(str(txt[test-1].replace('.txt',''))+ ";")
f.close()
input()
Структура файла с заданиями примерно такая:

Как тебя зовут?
маша
ваня
таня
катя
2
наполеон это?
торт
водка
коньяк
ляляля
1
флыврплывпр?
ыфваыв
рфвам
варфакф
фывпвапрва
3
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.11.2018, 19:14
Ответы с готовыми решениями:

Календарь с заданиями
Здравствуйте, хочу сделать календарь с заданиями. Есть сам календарь, но, нужно чтобы возле каждого дня месяца было кол-во заданий на этот...

Экран с заданиями
Денёчка, хотел бы попросить помощи в организации миссий в игре, в юнити недавно, и голова совсем не думает ^^&quot; Есть игра, где машина...

Соблаговолите с заданиями
П.5.4. Правил Запрещено создавать темы с бессмысленными названиями вроде &quot;Помогите!&quot;, &quot;Вопрос&quot; и т.п. П.5.16.Правил ...

6
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
12.11.2018, 20:39
импортируй в json, если много вопросов - в sqlite3
Python
1
2
3
4
5
6
7
8
9
10
11
>>> import json
>>> lst = []
>>> 
>>> d = {}
>>> d['question'] = 'question text'
>>> d['answer'] = ['ans1','ans2','ans3']
>>> d['ok'] = 2
>>> with open('test.json','w') as f: json.dump(f,lst)
>>> with open('test.json') as f: d =json.load(f)
>>> d[0]
{'question': 'question text', 'answer': ['ans1', 'ans2', 'ans3'], 'ok': 2}
0
 Аватар для ДИМОНИЧ
16 / 10 / 7
Регистрация: 15.04.2018
Сообщений: 34
Записей в блоге: 1
12.11.2018, 21:04
Я считаю достаточно просто Вашу же функцию (которая выдает вопрос с вариантами пользователю) заставить сформировать список объектов:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class vopros():
    
    def __init__(self):
        self.vopros = ''
        self.variant_list = []
        self.TrueAns = 1    
    
    def adV_text(self, string):
        self.vopros = string
 
    def adVar(self, var):
        self.variant_list.append(var)
    def adTrue(self, num):
        self.TrueAns = num
 
    def Vprint(self):
        print(self.vopros)
        for i in range(len(self.variant_list)):
            print('\t'+str(i+1)+'. '+self.variant_list[i])
 
    def check(self,ans):
        if ans==self.TrueAns:
            return True
        else:
            return False
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
12.11.2018, 21:17
пропустил строку
Python
1
2
#после 7
lst.append(d)
0
0 / 0 / 0
Регистрация: 01.04.2018
Сообщений: 57
12.11.2018, 22:12  [ТС]
ДИМОНИЧ, А монжо поподробнее как мне вставить это в мой код? А то я с классами не имел дело еще, не совсем понимаю как из этого можно массив с вопросами сформировать

Добавлено через 3 минуты
vic5710, Вопросов у меня много, но как это реализовать с помощью sqlite3 не в курсе, новичок еще совсем, с базами не работал, будем смотреть
0
 Аватар для ДИМОНИЧ
16 / 10 / 7
Регистрация: 15.04.2018
Сообщений: 34
Записей в блоге: 1
12.11.2018, 22:20
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
vopros_list = []
while True:
    #формирую объект
    v = vopros()
    vopross = f.readline().strip()
 
    v.adV_text(vopross)
    if (not vopros):
        break
    v.adVar(f.readline().strip())
    v.adVar(f.readline().strip())
    v.adVar(f.readline().strip())
    v.adVar(f.readline().strip())
    v.adTrue(int(f.readline().strip())
    #Записав все данные добовляю в список
    vopros_list.append(v)
    #Список хранится в памяти, поэтому рассмотреть другой вариант стоит)
    #Потом соответственно из этого списка можно брать случайные вопросы и выводить
    #с помощью метода Vprint
использовал ваши же функции фрагмент с 46 строки)
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
12.11.2018, 23:05
Цитата Сообщение от XcyperX Посмотреть сообщение
vic5710, Вопросов у меня много, но как это реализовать с помощью sqlite3 не в курсе, новичок еще совсем, с базами не работал, будем смотреть
https://python-scripts.com/sqlite
для начала хватит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.11.2018, 23:05
Помогаю со студенческими работами здесь

Помигите с заданиями
1.1 Справедливо ли в общем случае утверждение: если АαВ и ВβС и СγD то АδD? 1.2 Может ли при некоторых A, B, C, D, выполниться набор...

Подсобите с заданиями
П.5.16.Правил Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема. ...

CPT файл с заданиями
Есть ли у кого-нибудь файл с заданиями в PT? Заранее спасибо. 1) Разбить на 10 подсетей блок адресов 192.168.1.0/25. Присвоить адреса...

Не могу разобраться с заданиями
Помогите плиз решить задания по ссылке...там : метод резолюций , произведение графов и построение аналитической схемы Помогите кто чем...

Подскажите сайты с заданиями C#
Подскажите пожалуйста сайты с заданиями C#


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru