Форум сайта python.su
Конкатенация работает только со строковыми параметрами, это понятно.
Если не перевести в строки (см.ниже выделенное), выдаёт ошибку:
TypeError: can only concatenate str (not “list”) to str
Вопрос: где тут не строка и почему попытка перевести оба листа через str не работает ?
from random import randint numbers = [] a = 0 while a < 10: a += 1 numbers.append(a) letters_set = 'ABCDE' letters = [] for letter in letters_set: letters += letter range_of_choice = numbers + letters #Если преобразовать в строку оба листа в этом месте, то всё равно ошибка print('Диапазон выбора: ' + str(range_of_choice)) # str(range_of_choice) если тут перевести в строку, то будет нормально print('Всего символов в диапазоне: ' + str(len(range_of_choice))) def random_choice(): pulled_number = randint(range_of_choice[0], len(range_of_choice)) return pulled_number print("Winning ticket is", end=': ') winning_numbers = [] for a in range(6): if winning_numbers not in winning_numbers: winning_numbers.append(random_choice()) print(winning_numbers)
Отредактировано sssony (Март 28, 2024 15:59:53)
Офлайн
выделите свой код из редактора и вставьте между
[code python]сюда вставить код[/code]
Отредактировано xam1816 (Март 28, 2024 15:40:04)
Офлайн
Нельзя взять строку от массива.
Используй для этого
‘’.join(list_name)
Офлайн
print('Диапазон выбора: ' + str(range_of_choice)) # str(range_of_choice) если тут перевести в строку, то будет нормально
Офлайн
xam1816
print('Диапазон выбора: ' + "".join(range_of_choice))
Офлайн
sssonyВот здесь оба листа не преобразовываются в строку, они просто складываются в один общий лист
range_of_choice = numbers + letters #Если преобразовать в строку оба листа в этом месте, то всё равно ошибка
Офлайн
sssonyВообще, это не должно работать
Если не перевести в строки (см.ниже выделенное), выдаёт ошибку:
TypeError: can only concatenate str (not “list”) to str
letters_set = 'ABCDE' letters = [] for letter in letters_set: letters += letter
>>> letters_set = 'ABCDE' >>> letters = [] >>> for letter in letters_set: ... letters += letter ... >>> >>> letters_set = 'ABCDE' >>> letters = [] >>> for letter in letters_set: ... letters = letters + letter ... Traceback (most recent call last): File "<stdin>", line 2, in <module> TypeError: can only concatenate list (not "str") to list >>>
>>> lst = [123] >>> >>> for i in 1, 2, 3: ... lst += i ... Traceback (most recent call last): File "<stdin>", line 2, in <module> TypeError: 'int' object is not iterable >>>
sssony
Если не перевести в строки (см.ниже выделенное), выдаёт ошибку:
TypeError: can only concatenate str (not “list”) to str
sssonyНу смотриprint('Диапазон выбора: ' + str(range_of_choice)) # str(range_of_choice) если тут перевести в строку, то будет нормально print('Всего символов в диапазоне: ' + str(len(range_of_choice)))
>>> 'abc' + [123] Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: must be str, not list >>>
>>> [123] + 'abc' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can only concatenate list (not "str") to list >>>
sssonyТак и пиши просто их через запятую в print()print('Диапазон выбора: ' + str(range_of_choice)) # str(range_of_choice) если тут перевести в строку, то будет нормально print('Всего символов в диапазоне: ' + str(len(range_of_choice)))
>>> range_of_choice = ['a', 'b', 'c'] >>> >>> range_of_choice ['a', 'b', 'c'] >>> >>> print('Диапазон выбора:', range_of_choice) Диапазон выбора: ['a', 'b', 'c'] >>>
>>> range_of_choice = ['a', 'b', 'c'] >>> >>> range_of_choice ['a', 'b', 'c'] >>> >>> print('Диапазон выбора:', *range_of_choice) Диапазон выбора: a b c >>>
Отредактировано py.user.next (Март 30, 2024 23:06:48)
Офлайн