У меня возникла проблема с необходимостью назначать имена переменных из строки. Я понимаю, что это называется динамическим назначением имен переменных, но решения на других страницах, которые, как я полагаю, не применяются к этой ситуации, или я просто не понимаю.Назначение переменных класса с помощью итерации строки в Python
Я пытаюсь превратить строку в шахматную доску, в которой доска представляет собой список списков. Каждый список строк, каждый элемент соответствует соответствующему столбцу.
def splitString(string, length):
"""Split string into lengths on n."""
return [string[i:i + length] for i in range(0, len(string), length)]
def colourFromCase(letter):
"""Work out if a letter is uppercase, therefore white."""
if letter.isupper():
return 'white'
else:
return 'black'
def buildBoard(height, width):
"""Build a board."""
global rows
rows = []
board = 'CNBHKDRNCPPPPPPPPPpppppppppcnrdkhbnc'
split = splitString(board, width)
for n in split[0]:
className = eval(str(ABBRIVIATIONS[(n.upper())]) +
'(' + colourFromCase(n) + ')
Основное внимание уделяется функции buildBoard - последней для цикла. Мне нужно создать переменную с именем n, которое является переменной класса.
Моя первая догадка будет:
eval(n) = eval(str(ABBRIVIATIONS[(n.upper())]) +
'(' + colourFromCase(n) + ')
Я понимаю, что я не сделал это невероятно ясно. Я не думаю, что eval или exec - путь, но я не понимаю, как использовать словари или getattr() для этого, так как после того, как я собираюсь добавить переменную на доску с board.append ()
Не делайте этого. Это почти никогда не нужно. Вместо этого используйте словарь для хранения пар строк/значений. Использование 'eval' должно было поднять красные флаги. – Carcigenicate
Не могли бы вы связать меня с каким-нибудь местом с примерами этого, я не знаю, что делать с Google ... – Skidushe
Знаете ли вы, что такое словарь ('{}') в Python? – Carcigenicate