# Python - Проблем с логическите условия в loop четящ и насипващ данните в речник.
Привет,
Решавам задачка за малко по-напреднали, а именно:
Съдържанието на my_text_file.txt:
8239b961379a4f9f854fd19d82b56dc9 24
8239b961379a4f9f854fd19d82b56dc9 39
8239b961379a4f9f854fd19d82b56dc9 39
8239b961379a4f9f854fd19d82b56dc9 18
8239b961379a4f9f854fd19d82b56dc9 25
533cc20dc02647cb98c9cc534112e092 66
533cc20dc02647cb98c9cc534112e092 12
Решението ми е нещо подобно:
my_file = open('my_text_file.txt')
data = my_file.read()
datalines = data.split("\n") # Реже блока данни на отделни редове
add_data_to_dic = {} # Създавам празен речник
for line in datalines:
new_key = line[:32] # Създавам нова променлива ключ от съответния брой символи от реда.
new_value = line[33:] # Стойност, но все още е str
new_value = int(new_value) # str в int
if (new_key in add_data_to_dic) == False: # Ако дадения ключ не съществува в речника го насипи там заедно със съответната стойност.
add_data_to_dic[new_key] = new_value
else: # Проблемът!
add_data_to_dic[new_key] + new_value
print(add_data_to_dic)
Не мога да се справя със синтаксиса на ELSE клаузата, така написано не връща сбора от стара и нова стойност в речника. Ако се добави нова променлива примерно:
else:
old_value = add_data_to_dic[new_key]
add_data_to_dic[new_key] + new_value
пак не става, въртя се в кръг от извесно време ;( Идеи?
Леле стана най-накрая ;). Мерси!
Честно казано виждам един потенциален проблем с решението - така направено програмката работи корекно само когато отделните редове са съставени от стринг от 35 символа. Предполагам може да се направи с логически условия и len, но ми е трудно да го дефинирам.
Ами аз съм в Programming Basics, затова и постът е тук ;) Не посмях да се пробвам дирекно с изпита без преминаване му :)
Да, може и ето тук https://stackoverflow.com/questions/509211/understanding-slice-notation има много информация ако ти се чете. Иначе имах предвид, че естеството на въпроса е повече като да го зададеш във фунтаменталса(не че тук няма да получиш отговор), а това ти на какво ниво си е без значение.
Успех