image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image

DI

Diego Itiki29/10/2022 01:18
Compartilhe

Desafio

    Boa noite estou tendo dificuldade com esse Desafio, alguém poderia me ajudar

    Compartilhe
    Comentários (9)
    Andre Machado
    Andre Machado - 09/07/2024 00:11

    # Número de casos de teste

    N = int(input())


    # Índice para controlar os casos de teste

    index = 0


    # Processamento de cada caso de teste

    while index < N:

        try:

            # Leitura dos valores A e B

            A, B = input().split()

           

            # Verifica se B corresponde aos últimos dígitos de A

            if A.endswith(B):

                print("encaixa")

            else:

                print("nao encaixa")

           

            # Atualiza o índice para o próximo caso de teste

            index += 1

        except ValueError:

            print("Formato de entrada inválido. Certifique-se de fornecer dois valores separados por espaço.")

    Renan Siqueira
    Renan Siqueira - 31/10/2022 16:52

    Parece que está certo sim, mas há um outro detalhe, que só vi quando passou o exercício completo na última mensagem. Ele espera os valores de A e B, na mesma linha, e não em linhas separadas.

    Vc fez:

    A = input("Informe valor A: ")
    B = input("Informe valor B: ")
    

    Tente fazer pegando os 2 valores de A e B, num mesmo 'input', por ex:

    A, B = input("Informe A e B, separado por um espaço: ").split()
    

    Dessa forma o usuário, entraria com os valores na mesma linha, como está nos exemplos do exercício:

    56234523485723854755454545478690 78690
    


    E mais uma dica, geralmente esses exercícios são verificados bem ao pé da letra, e é possível que dê algum erro, por conta da mensagem que você colocou nos input. Então se der algum problema, tenta remover tbm a mensagem dentro dos input().

    De resto me parece tudo certo, qualquer coisa volta ai!


    DI

    Diego Itiki - 31/10/2022 16:27


    Desafio

    Paulinho tem em suas mãos um novo problema. Agora a sua professora lhe pediu que construísse um programa para verificar, à partir de dois valores muito grandes A e B, se B corresponde aos últimos dígitos de A.


    Entrada

    A entrada consiste de vários casos de teste. A primeira linha de entrada contém um inteiro N que indica a quantidade de casos de teste. Cada caso de teste consiste de dois valores A e B maiores que zero, cada um deles podendo ter até 1000 dígitos.


    Saída

    Para cada caso de entrada imprima uma mensagem indicando se o segundo valor encaixa no primeiro valor, confome exemplo abaixo.


     

    Exemplo de Entrada Exemplo de Saída

    4

    56234523485723854755454545478690 78690

    5434554 543

    1243 1243

    54 64545454545454545454545454545454554





    Esse seria o desafio


    DI

    Diego Itiki - 31/10/2022 16:16

    n = int(input())

    while(n > 0):

        a = input("Informe o valor de A: ")

        b = input("Informe o valor de B: ")

        n = n - 1

        if len(a) >= len(b):

            if (a[(len(a) - len(b)):]) == b:

                print("encaixa")

            else:

                print("nao encaixa")

        else:

            print("nao encaixa")





    OBS: Seria assim ?


    Renan Siqueira
    Renan Siqueira - 29/10/2022 22:41

    Boson treinamentos é legal sim! Pra python, eu indico tbm o Guanabara no youtube.

    E não precisa pedir desculpa não, estamos ai pra trocar experiências mesmo!

    O exercício diz que vai ter um número de entrada, o N. Esse N, basicamente diz quantas vezes o programa deve perguntar pro usuário o valor de A e B.


    Vamos supor que usuário digitou 5 para o N.

    O seu while(n > 0), ou seja (5 > 0), vai ser verdadeiro, logo entrará no while. Vai pedir o valor de A, depois o valor de B, e verificar se o B corresponde ao final de A. Mas dentro do seu while vc seta n = n + 1, ou seja N agora vale 6.

    Após fazer tudo que está dentro do while, ele volta para a condição do while(n > 0), para uma nova iteração, mas agora o N é 6, (6 > 0), e será verdadeiro novamente, e vai fazer tudo de novo. Você percebe que na próximo rodada, o N vai ser 7, depois 8... 9... e etc? Isso quer dizer que seu laço while nunca será falso, o while nunca vai parar, o N sempre vai ser maior que 0, e seu programa nunca vai parar, sem ser interrompido na unha.

    Se ao invés de você incrementar o n, fazendo n=n+1, você decrementar n=n-1, o N em algum momento será 0, concorda? Pois a cada vez que ele entra no laço while, é substraído 1 de N. E então seu while, uma hora vai falhar (0 > 0), será falso. Ai ele pula o while e continua com as instruções seguintes, fora e após o while.


    Será que deu pra ajudar? rsrs

    Michele Lozada
    Michele Lozada - 29/10/2022 19:54

    Oi Diego.


    Não sei se você já conseguiu descobrir o conteúdo sobre como funciona a estrutura while no Python. Se não, vou deixar o link de um video que explica esse assunto bem do princípio:: https://www.youtube.com/watch?v=oUXUVVP2_6E


    O nome do canal se chama Boson Treinamentos - quando estava aprendendo Python, eu sempre consultava os víideos desta playlist e ela me ajudou bastante (principalmente pela didática do professor e o fato dos vídeos serem diretos e sem enrolação).

    DI

    Diego Itiki - 29/10/2022 17:19

    Desculpa, mas não entendi o laço WHILE. ainda fiquei confuso. tem algum lugar onde eu possa saber mais?


    DI

    Diego Itiki - 29/10/2022 16:12

    Muito obrigado vou tentar algo aqui, com suas dicas

    Abraços

    Renan Siqueira
    Renan Siqueira - 29/10/2022 02:58

    Opa, boa noite!

    Antecipadamente, peço desculpas caso essa ajuda aqui esteja errada.

    Parece que seu while está infinito. Dentro dele vc está incrementando o n ao invés de decrementar, pra quando o n for igual 0, a condição do while falhar.

    E acho que tem outro erro na condição do seu if interno(o segundo). Vou dar uns exemplos com valores fictícios:

    a = "abcdefghijkl" 
    b = "ijkl"
    

    O a tem length 12, o b tem length 4. Substituindo os valores nesse seu if a[len(a)+len(b):], ficaria:

    if a[16:] == b
    

    Acontece que o índice 16 não existe em a. Deveria ser a[8:], não acha? Que conta vc poderia fazer, ao invés de a[len(a) + len(b):], pra pegar o indice 8 até o fim da string a, e não o indice 16? rsrs

    No python você também pode selecionar elementos de uma lista de trás para frente com o sinal de subtração(-). Por ex a[-1:] pegaria a última letra,"l", da string a. Quer dizer que a[-4:], pegaria as 4 letras de trás pra frente da string a.

    Tenta ai, e qualquer coisa escreve de novo.

    Abs