Ola pessoal, me deparei com um ex que pedi o nome da pessoa e exibe ele em diagonal porém n consegui pensar em uma lógica para fazer
Ex:
P
e
d
r
o
Pensei em uma logica de pegar as 4 primeiras posições e colocar cada uma delas em um print porem ficaria limitado a apenas um nome em específico, gostaria q alguém me indicassem uma logica para resolver este ex, obrigado desde ja!
Em Python eu não saberia fazer, mas, é fácil quando você pegar uma palavra tipo José e quer colocar seu nome na diagonal a lógica seria pega cada posição e roda uma interação posicionando mais um espaço em cada uma delas e pulando depois um item em cada linha.
PHP
por exemplo uma solução rápida:
<?php
$name = "Jose de Alencar";
$count = mb_strlen($name, 'UTF-8');
$space = '';
for($i = 0; $i < $count; $i++)
{
echo $space . $name[$i] . PHP_EOL;
$space .= ' ';
}
humm n entendi muita coisa do código mas peguei a ideia, vou tenta fazer com o for, se conseguir te aviso, Obrigado !!!
Tanto php quanto python herdaram de C um “printf” e no console funciona muito bem:
Em php:
<?php
$name = 'Jose de Alencar';
$count = mb_strlen($name, 'UTF-8');
$i = 0;
while ($i < $count) {
printf("%*s\n", $i, $name[$i]);
}
Em python:
name = 'Jose de Alencar'
count = len(name)
i = 0
while i < count:
print("%*s" % (i, name[i]))
Só não tenho certeza se no php funciona o %*s… mas a intenção é definir que o espaço na frente do caractere será dinamico, dessa forma Jose seria:
J
o
s
e
Obs: python não precisa de \n na string de formatação, pois por padrão já esse char, se quiser mudar é só dizer o end no print ex:
print("texto sem quebra de linha", end=' ')
Espero ter ajudado
Não funciona …
Bom saber, obrigado pela confirmação, nesse caso uma “gambis” ajuda legal…
printf("%{$i}s\n", $name[$i]);
Esse código também é falho !!!, bom é o que eu testo.
Falho em que sentido? Estamos falando de console ok?
Rodando em terminal linux esse exemplo, funcionou tranquilamente…
$ php -r '$i=10;printf("%{$i}s\n", "Rodrigo");'
Imprimiu um espaçamento com 10 posições na frente do meu nome como esperado…
Obrigado pela explicação pessoal !!!