1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Alguém que me ajude a resolver

Discussão em 'Programação' iniciada por FlypSims, 9 de Outubro de 2019. (Respostas: 8; Visualizações: 439)

  1. FlypSims

    FlypSims Power Member

    Escreva uma função em Python
     
    Última edição: 9 de Outubro de 2019
  2. bruxo00

    bruxo00 Power Member

    O teu problema é com a lógica ou com a syntaxe? Eu cheira-me que é mais problema com preguiça, mas vou dar-te uma ajuda:

    Código:
    def dias_mes(mes, ano):
        if mes == 2:
            if isBisexto(ano):
                return 29
            else:
                return 28
        elif mes % 2 != 0 and [resto das verificações aqui]:
            return 31
        else:
            return 30
    
    
    def isBisexto(ano):
        if ano % 100 != 0 and ano % 4 == 0 or ano % 400 == 0:
            return 1
        else:
            return 0
    
    
    print(dias_mes(2, 1984)) 
    print(dias_mes(2, 1900)) 
    print(dias_mes(2, 2000))
    print(dias_mes(3, 2000)) 
    print(dias_mes(11, 2000)) 
     
  3. bruxo00

    bruxo00 Power Member

    @FlypSims afinal é python ou é C? Aquele código que tu mandaste não é python.

    Como assim? Estás a falar do meu código? As funções claramente retornam valores.
     
  4. FlypSims

    FlypSims Power Member

    Estou a programar em Python , estou a iniciar programação e não estou a compreender.

    não o teu ainda não utilizei
     
  5. bruxo00

    bruxo00 Power Member

    Código:
    def dias_mes(mes, ano):
        if mes == 2:
            if isBisexto(ano):
                return 29
            else:
                return 28
        elif mes % 2 != 0 and mes <= 7 or mes % 2 == 0 and mes >= 8:
            return 31
        else:
            return 30
    
    def isBisexto(ano):
        if ano % 100 != 0 and ano % 4 == 0 or ano % 400 == 0:
            return 1
        else:
            return 0
    
    print(dias_mes(2, 1984)) 
    print(dias_mes(2, 1900)) 
    print(dias_mes(2, 2000))
    print(dias_mes(3, 2000)) 
    print(dias_mes(11, 2000))
    Tens aqui o código completo, mas fazes bem em tentar perceber. O que é que não entendes?
     
  6. FlypSims

    FlypSims Power Member

    Neste caso é entender a logica da função
     
  7. bruxo00

    bruxo00 Power Member

    Neste caso específico não tens muita lógica associada ao problema. O enunciado já te dá a papinha feita, apenas tens que traduzir português para python. Se ajudar, escrever o código em português estruturado.

    Se o mês for 2, então o número de dias será 29 ou 28, consoante o ano seja bissexto ou não, respetivamente.

    if mes == 2:
    if isBisexto(ano):
    return 29
    else:
    return 28

    ______________________________________________________________________________

    Um ano é bissexto se for divisível por 4 e não for divisível por 100, ou se for divisível por 400.

    if ano % 100 != 0 and ano % 4 == 0 or ano % 400 == 0:
    return 1

    ______________________________________________________________________________

    Os restantes meses têm 31 dias se forem ímpares e menores ou iguais a 7, ou se forem pares e maiores ou iguais a 8. Caso contrário têm 30 dias.

    elif mes % 2 != 0 and mes <= 7 or mes % 2 == 0 and mes >= 8:
    return 31
    else:
    return 30
     
  8. FlypSims

    FlypSims Power Member

    De facto no enunciado esta toda a informação, é saber interpretar, assim descreveste faz todo sentido e muito mais compreensível.

    obrigad0
     
  9. bruxo00

    bruxo00 Power Member

    @FlypSims o que o problema pede é que cries uma função, tu não estás a fazer isso, basicamente estás a fazer programação estruturada, e não é esse o objetivo. A única coisa que tens de fazer é criar uma função. O valor de n é hard coded, ou seja, só o alteras se alterares o código, por isso não precisas de input nenhum porque o valor já lá está e não muda. O exercício pede para não haver prints para começares a distinguir as diferenças entre procedimentos e funções. O isinstance serve para verificar o tipo de determinado valor. Neste caso, a tua função vai retornar um inteiro. O isinstance vai verificar se o valor que a função retorna é inteiro, e como vai ser, vai retornar true. Também aplicas isto para criares verificares se n é inteiro ou não.

    Código:
    def soma_n(n):
        soma = 0
    
        if not isinstance(n, int):
            raise ValueError('soma_n: O limite tem de ser um inteiro.')
       
        while (n != 0):
            if n < 0:
                soma += n
                n += 1
            else:
                soma += n
                n -= 1
    
        return soma
       
    isinstance(soma_n(1), int)