Dúvida sobre rsplit() no Python

n = str(input(‘Digite seu nome:’))
pn = n.split()[0]
un = n.rsplit()[0]
print(f’’‘Muito Prazer em te conhecer
Seu Primeiro nome é {pn}
E seu Último nome é {un}’’’)

Há um erro nesse código, quando coloco o .rsplit, deveria começar a contar as divisões a partir do lado direito, mas continua no lado esquerdo, o que eu tô errando ?

Se você não passar o argumento maxsplit, eles vão funcionar da mesma forma. Exemplo aqui: https://pt.stackoverflow.com/a/347210

Ao invés de usar rsplit, vc pode pegar o último nome assim:

un = n.split()[-1]

O índice -1 aponta para o último elemento da lista.

disso eu não sabia, vlw

Só um detalhe, não tem porque fazer split duas vezes, basta fazer apenas uma e pegar o primeiro e último de uma vez:

primeiro, *meio, ultimo = n.split()

Assim você já tem o primeiro e último de uma vez. O principal é que o split só é chamado uma vez - lembrando que tanto split quanto rsplit precisam processar toda a string, então pra que processar duas vezes se apenas uma é o suficiente?

Se o resultado do split tiver exatamente dois elementos, o meio fica vazio (senão ele vira uma lista com todos os nomes do meio).

Isso só dá problema se tiver apenas um nome. Nesse caso, o melhor seria pegar um a um (mas ainda sim fazendo um split apenas):

nomes = n.split()
primeiro = nomes[0]
ultimo = nomes[-1]

Assim, se tiver apenas um nome, o primeiro e último serão iguais.

E como eu já disse no seu outro tópico, input já retorna uma string, então fazer str(input()) é desnecessário: faça apenas n = input(...) que é o suficiente.

1 curtida

Verdade, testei e deu certo, vlw