Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 7, 2011 18:07:07

DoK
От:
Зарегистрирован: 2011-01-07
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Обращение

bazooka
почитай че такое циклы
Почитал уже несколько статей и досихпор понять не могу как это все связать -_-.



Офлайн

#2 Янв. 7, 2011 21:13:19

bazooka
От:
Зарегистрирован: 2009-04-12
Сообщения: 165
Репутация: +  0  -
Профиль   Отправить e-mail  

Обращение

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



Офлайн

#3 Янв. 8, 2011 07:11:42

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Обращение

DoK
bazooka
почитай че такое циклы
Почитал уже несколько статей и досихпор понять не могу как это все связать -_-.
DoK, подождите немного, я вам все покажу. Мне просто сегодня некогда.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#4 Янв. 14, 2011 14:42:48

DoK
От:
Зарегистрирован: 2011-01-07
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Обращение

Ну так и что, уважаемый?) Хотелось бы все таки получить хоть какой-нибуть ответ.



Офлайн

#5 Янв. 14, 2011 18:35:42

guranvir
От:
Зарегистрирован: 2010-03-16
Сообщения: 186
Репутация: +  0  -
Профиль   Отправить e-mail  

Обращение

man словари (dictionary) и вложенные структуры

к списку обращаемся так: L,L,L……
Если хотим обходить весь список в цикле, то:

 
for el in L:
print el
Это значит, что мы получим следующее:
цикл будет работать, пока мы не пройдем по всему списку, а переменная el будет последовательно получать копию значения данного элемента списка
Если хотим изменить значение конкретного элемента списка, то пишем L=0.
Если хотим изменить значение каждого элемента в списке, то например так:
for i in xrange(len(L)-1):
L[i]=L[i]*2
Словарь это структура данных,где индексами (ключами) выступают хешируемые объекты: а ими могут быть и строки, и цифры и ваши типы данных, главное, чтобы у этих данных можно было бы рассчитать хеш
Вот пример словаря:
dic={'Фрукт':'Апельсин',
'Овощ':'Морковь'}
В данном случае строка 'овощ' это ключ, а то, что идет после двоеточия значение ключа
Чтобы прочитать значение по данному ключу из словаря применяется синтаксис: имя_словаря
Например мы хотим вывести на экран значение ключа ‘овощ’
print (dic['овощ'])
А вот и ваш случай теперь.
Определим список, который будет содержать словари с вопросами по предметам:
subj=
теперь словарь для вопроса:
qestions={'qestion':'когда человек полетел в космос?','level':'легкий','answers':[1945,1949,1957,1961] }
А на самом деле Python позволяет один объект хранить в другом, поэтому мы можем использовать следующую запись:
subj=[{'qestion':'когда человек полетел в космос?','level':'легкий','answers':[1945,1949,1957,1961] },
{'qestion':'Когда был образован СССР?','level':'легкий','answers':[1922,1921,1924,1929] }]
Если мы хотим получить доступ к первому вопросу в списке напишем:
subj[0]
Если мы хотим вывести на экран формулировку первого вопроса, то напишем так:
print( subj[0]['qestion'])



Офлайн

#6 Янв. 14, 2011 18:41:11

guranvir
От:
Зарегистрирован: 2010-03-16
Сообщения: 186
Репутация: +  0  -
Профиль   Отправить e-mail  

Обращение

Чтобы программно добавить элемент в список есть метод append:

L.append(1)
Чтобы добавить новое значение в словарь достаточно написать:
dic['language']='ru'



Офлайн

#7 Янв. 14, 2011 18:44:20

guranvir
От:
Зарегистрирован: 2010-03-16
Сообщения: 186
Репутация: +  0  -
Профиль   Отправить e-mail  

Обращение

И читаем: О списках и других последовательностях в офиц. документах
и дополнительно читаем там же в доках о: словарях и других типах данных отображениях



Отредактировано (Янв. 14, 2011 18:46:26)

Офлайн

#8 Янв. 15, 2011 11:02:14

DoK
От:
Зарегистрирован: 2011-01-07
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Обращение

guranvir
Спасибо Вам огромное :) Теперь все понял. Надеюсь подобный подход к задаче уже лежит на верном пути:

main.py

# -*- coding: utf-8 -*-

import time
import random
import math
import DATACHIMIA as t

x=0
y=0
z=0
a=0
g=0
score=0
rt=0

def finish():
print ''
print u'Вы ответили на ' + `score` + u' из ' + `a` + u' вопросов!'
print ''
rt = (score / g) * 100
print u'Это ' + `rt` + u'% от 100.'
if (rt <= 50):
print u'Ваша оценка - 2. Учите химию ;)'
elif (rt >= 50 and rt < 70):
print u'Ваша оценка - 3. Лучше учите химию ;)'
elif (rt >= 70 and rt <= 95):
print u'Ваша оценка - 4. Вы молодец! Но учите химию еще лучше ;)'
elif (rt > 95):
print u'Ваша оценка - 5! Вы не спали на уроках химии, с чем Вас и поздравляю! ;)'

def start():
print ''
global x
global y
global z
global a
global score
x = random.randrange(11)
print(t.subj[x]['q'])
print(t.subj[x]['an'])
y = t.subj[x]['ans']
z = input('----> ')
if (z == y):
print u'Верно!'
time.sleep(1)
score = score + 1.0
a = a + 1
if (a == g):
finish()
else:
start()
else:
print u'Неверно!'
time.sleep(1)
a = a + 1
if (a == g):
finish()
else:
start()

print ''
print u'Привет!'
print u'Начнем?'
bg1 = raw_input('Press <enter>')
g = random.randrange(10)+5
print u'Вам предлогается ответить на ' + `g` + u' вопросов'
time.sleep(2)
start()
data.py
# -*- coding: utf-8 -*-

subj=[
{'q':u'Какова валентность водорода?','an':[1,2,3,4],'ans':1 },
{'q':u'Сколько атомов в молекуле кислорода?','an':[1,2,3,4],'ans':2 },
{'q':u'Сколько электронов у атома лития?','an':[1,3,5,7],'ans':3 },
{'q':u'Найдите верное утверждение:','an':u'1) Сера имеет валентность 5; \n2) Азот находится в 5й группе; \n3) Натрий - неактивный металл; \n4) Фосфор радиоактивен','ans':2 },
{'q':u'Степень окисления серы в молекуле H2S','an':[-2,-1,+1,+2],'ans':-2 },
{'q':u'Сколько атомов кислорода в молекуле H2SO4','an':[2,4,6,8],'ans':4 },
{'q':u'В какой группе находится магний?','an':[1,2,3,4],'ans':2 },
{'q':u'Сколько протонов в атоме железа?','an':[12,26,39,55],'ans':39 },
{'q':u'Связть в молекуле O2:','an':u'1) Ионая, \n2) Водородная, \n3) Металлическая, \n4) Ковалентная','ans':4 },
{'q':u'Общая формула алканов:','an':u'1) CnH2n-1, \n2) CnH2n, \n3) CnH2n+1, \n4) Все ответы неверны','ans':4 },
{'q':u'Сколько изотопов у водорода?','an':[1,2,3,4],'ans':3 },
]



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version