Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 3, 2016 02:47:50

aleks14
Зарегистрирован: 2016-04-08
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите разобраться в коде

 firstnames = ['Anthony', 'Timothy', 'Bob', 'Sean', 'John', 'Ivan', 'Sergey', 'Peter', 'Anton', 'Nikolas', 'Armen']
lastnames = ['Smith', 'Parker', 'Conrad', 'Washington', 'Kennedy']
coordinatorset = {'role': 'coordinator', 'capacity': 1000000, 'fuelhrusage': 1, 'hardware': 0, 'hardwareusage': 0, 'hrdistance': 20, 'weapons': 'Yes', 'ammunition': 1000, 'ammunitionhrusage': 100}
infectorset = {'role': 'infector', 'capacity': 500000, 'fuelhrusage': 2, 'hardware': 1000, 'hardwareusage': 10, 'hrdistance': 15, 'weapons': 'No', 'ammunition': 0, 'ammunitionhrusage': 0}
soldierset = {'role': 'soldier', 'capacity': 500000, 'fuelhrusage': 2, 'hardware': 0, 'hardwareusage': 0, 'hrdistance': 20, 'weapons': 'Yes', 'ammunition': 2000, 'ammunitionhrusage': 200}
technicianset = {'role': 'technician', 'capacity': 500000, 'fuelhrusage': 3, 'hardware': 1000, 'hardwareusage': 20, 'hrdistance': 15, 'weapons': 'Yes', 'ammunition': 1000, 'ammunitionhrusage': 100}
scoutset = {'role': 'scout', 'capacity': 1000000, 'fuelhrusage': 2, 'hardware': 0, 'hardwareusage': 0, 'hrdistance': 30, 'weapons': 'Yes', 'ammunition': 1000, 'ammunitionhrusage': 100}
workerset = {'role': 'worker', 'capacity': 500000, 'fuelhrusage': 3, 'hardware': 1500, 'hardwareusage': 40, 'hrdistance': 10, 'weapons': 'No', 'ammunition': 0, 'ammunitionhrusage': 0}
fsets = [coordinatorset, infectorset, soldierset, technicianset, scoutset, workerset]
i = 0
b = 0
for item in lastnames:
    c = 0
    for item in firstnames:
        tempdict = {'alias': firstnames[i] + lastnames[b], 'firstname': firstnames[i], 'familyname': lastnames[b]}
        if tempdict['firstname'] == 'Anthony':
            tempdict.update(coordinatorset)
        elif tempdict['firstname'] != 'Anthony' and c < len(fsets)-1:
            tempdict.update(fsets[c])
        elif tempdict['firstname'] != 'Anthony' and c == len(fsets)-1:
            tempdict.update(fsets[c])
            c = 0
        file = open(lastnames[b] + ".txt", 'a')
        file.write(str(tempdict) + '\n')
        file.close()
        temporarydict = {}
        i = i + 1
        c = c + 1
    if i >= len(firstnames):
        file = open("Families.txt", 'a')
        file.write(lastnames[b] + '\n')
        file.close()
        b = b + 1
        i = 0
 elif tempdict['firstname'] != 'Anthony' and c < len(fsets)-1: 
tempdict.update(fsets[c]) 
elif tempdict['firstname'] != 'Anthony' and c == len(fsets)-1: 
tempdict.update(fsets[c]) 
c = 0 
не очень понимаю смысал этих 2 строчек, почему нельзя было сделать вот так
 elif tempdict['firstname'] != 'Anthony' and c <= len(fsets)-1: 
tempdict.update(fsets[c]) с=0
заранее спасибо

Отредактировано aleks14 (Сен. 3, 2016 02:48:39)

Офлайн

#2 Сен. 3, 2016 09:54:22

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9992
Репутация: +  857  -
Профиль   Отправить e-mail  

помогите разобраться в коде

aleks14
не очень понимаю смысал этих 2 строчек, почему нельзя было сделать вот так
Пока “c” меньше последнего индекса в списке fsets, “c” просто инкрементируется.
Когда “c” равно последнему индексу в списке fsets, “c” устанавливается на начальный индекс в списке.

Там, походу, ошибка, так как повторно нулевой индекс никогда не будет задействован. После установки в ноль он снова инкрементируется и становится единицей. А по коду видно, что должно повториться всё то же самое, что выполнялось в первый раз - то есть с нулевого индекса.



Отредактировано py.user.next (Сен. 3, 2016 09:54:59)

Офлайн

#3 Сен. 3, 2016 16:11:11

aleks14
Зарегистрирован: 2016-04-08
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите разобраться в коде

py.user.next
инкрементируется
спасибо!
то есть первая строчка просто перелистывает индекс грубо говоря?

Офлайн

#4 Сен. 3, 2016 16:39:19

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9992
Репутация: +  857  -
Профиль   Отправить e-mail  

помогите разобраться в коде

Вообще, этот код довольно плохо сделан. Если нарисовать блок-схему этого кода, получится запутанная ерунда. Для этого и надо сначала рисовать блок-схему, а потом уже писать код - чтобы ещё на блок-схеме увидеть, что код получится запутанным, и принять меры заранее.

aleks14
то есть первая строчка просто перелистывает индекс грубо говоря?
Индекс меняется в строке c = c + 1.



Отредактировано py.user.next (Сен. 3, 2016 16:39:57)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version