Estoy intentando crear un comando para mi robot de Discord que reciba texto, ponga en mayúsculas cada dos letras, lo agregue a una matriz y lo envíe de vuelta. Lo tengo funcionando para que pueda agregar texto y volver a imprimirlo, pero cuando intento ponerlo en mayúsculas, las cosas salen mal.
@bot.command()
async def spongetext(ctx, *, message):
textmessage = []
for letter in message:
textmessage.append(letter)
await ctx.send(textmessage)
El código anterior funciona y genera lo siguiente cuando se ejecuta como prueba .spongetext
['t', 'e', 's', 't', ' ', 't', 'e', 's', 't']
Sin embargo, cuando uso este código para poner en mayúsculas cada dos letras
async def spongetext(ctx, *, message):
textmessage = []
for letter in message:
if letter % 2 == 0:
textmessage.append(letter.upper())
else:
textmessage.append(letter)
await ctx.send(textmessage)```
Nothing is output, no error message, and no text
------------------------------------
En tu código, si la letra % 2 == 0: no tiene sentido, no puedes factorizar un alfabeto.
Intenta algoasí:
message = "hello, this is a message."
textmessage = []
for i in range(0,len(message)):
letter = message[i]
if i % 2 == 0:
textmessage.append(letter.upper())
else:
textmessage.append(letter)
print(textmessage)
print("".join(textmessage))
------------------------------------
Para su pregunta "si" declaración, estás comparando la letra misma, realizando % 2 == 0 en ella. En su lugar, también puedes usar enumerar para obtener el índice en el que te encuentras.
for i, letter in enumerate(message):
if i % 2 == 0:
textmessage.append(letter.upper())
else:
textmessage.append(letter)