+ 1
Why is this code producing no output?
I’m curious why this code is producing no output from either of the two print statements. I suspect it has to do with my while/if statements. If I comment them out I suddenly get output, but no idea why. I’m trying to find capital letters and insert an ‘_’ before them. https://code.sololearn.com/cpXGlP9XW0EA/?ref=app
9 ответов
+ 4
The reason you're not getting output is because the loop doesn't end. re.match(r'[A-Z]',list[i]) is always true, because when you insert '_' to list, the underscore is inserted in front of the list. Incrementing i by 1 will then cause re.match to evaluate 'B' on the next iteration. Remember that len(list) is also incrementing. As a result, you are incrementing both i and len(list), and i will never be >= len(list).
T̶r̶y̶ ̶d̶o̶i̶n̶g̶ ̶l̶i̶s̶t̶.̶a̶p̶p̶e̶n̶d̶ ̶i̶n̶s̶t̶e̶a̶d̶,̶ ̶w̶h̶i̶c̶h̶ ̶a̶p̶p̶e̶n̶d̶s̶ ̶t̶h̶e̶ ̶t̶a̶r̶g̶e̶t̶ ̶e̶l̶e̶m̶e̶n̶t̶ ̶t̶o̶ ̶t̶h̶e̶ ̶e̶n̶d̶ ̶o̶f̶ ̶t̶h̶e̶ ̶l̶i̶s̶t̶.̶ ̶
̶l̶i̶s̶t̶.̶a̶p̶p̶e̶n̶d̶(̶'̶_̶'̶)̶
My bad - Didn't read the thread entirely.
+ 3
Nate Toon Ye know since you're using re anyway, there's a much better way to do this using re.sub if you're interested.
+ 3
Nate Toon
import re
word = "BosTon"
word = re.sub("([A-Z])", "_\g<1>", word)
# if you still need to do this ofc
list = list(word)
print(list)
+ 2
list.append won’t insert the _ where I need it but I changed i += 2 for my if statement and now it bypasses! thanks a million!
+ 1
See comment in code
+ 1
Nate Toon
ok... does the job!
+ 1
Hatsy Rei yea, I’m all ears
+ 1
Hatsy Rei I like that a lot thanks again!
0
It indicates bos_ton because in this code you increase the index number by 1 then by 2 so as u write print(i,'_') so python print _ at 3 index