2016-03-17 4 views
2

Я пытаюсь напечатать строку, которая имеет последовательные количества каждой буквы, поэтому строка должна печатать «aaabaaccc». Может кто-нибудь сказать мне, где я буду неправильно, пожалуйста, как я только новичок в PythonПечать строки с последовательными номерами цифр

h = [("a", 3), ("b", 1), ("a", 2), ("c", 3)] 

g = '' 

for f in h: 

    g = g + f 

ответ

0

Вы пытаетесь распаковать кортеж (два пункта) в один, который вы не можете сделать.

Попробуйте вместо этого:

for letter, multiplier in h: 
    g += letter * multiplier 
1
h = [("a", 3), ("b", 1), ("a", 2), ("c", 3)] 
g = '' 
for char, count in h: 
    #g = g + f #cant convert tuple to string implicitly 
    g=g+char*count 
print(g) 

String*n повторяет строки п раз.

1
h = [("a", 3), ("b", 1), ("a", 2), ("c", 3)] 

g = '' 

for i, j in h:  # For taking the tuples into consideration 


    g += i * j 

print(g) # printing outside for loop so you get the final answer (aaabccc) 
3

Вы можете использовать понимание списка Python для этого, чтобы избежать конкатенации строк.

print ''.join(letter * count for letter, count in [("a", 3), ("b", 1), ("a", 2), ("c", 3)]) 

Это будет печатать:

aaabaaccc 
0

Python давайте вы "умножать" строки числами:

>>> 'a' * 5 
'aaaaa' 

>>> 'ab' * 3 
'ababab' 

Таким образом, вы можете цикл по списку, "умножать" струны от чисел и построить строку таким образом.

>>> h = [("a", 3), ("b", 1), ("a", 2), ("c", 3)] 
>>> g = '' 
>>> for letter, number in h: 
...  g += letter * number 
... 
>>> print(g) 
aaabaaccc 
0

Если "ч" всегда должен быть отформатирован, как этого, Oneliner для этого:

g = "".join([i[0]*i[1] for i in h]) 
Смежные вопросы