associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Diferenças para "ExerciciosFuncoesSolucoes"

Diferenças entre as versões de 11 e 34 (23 versões de distância)
Revisão 11e 2010-11-28 19:10:48
Tamanho: 1831
Editor: Jorge
Comentário:
Revisão 34e 2020-08-13 01:38:42
Tamanho: 10824
Comentário:
Deleções são marcadas assim. Adições são marcadas assim.
Linha 4: Linha 4:
 * Exercício 1
v{{{#valor = []
def nesima(n):
    for i in range(1,10): #para 9 elementos
        if i < 10:
            valor.append(n+i)
            print(valor)
n = int(input(''))
nesima(n)
}}}

 * Exercício 1
 {{{#!python
def exercicio_1(n):
    for i in range(n):
        i += 1
        print str(i) * i

 }}}

 Proposta por ThiagoSeixas
Linha 17: Linha 37:

 * Exercício 1
 {{{#!python
 def exercicio_1(n):
     x=1
     while x<=n:
        y=0
        while y<x:
            print '%i' %x,
            y+=1
        x+=1
        print
 }}}

 Proposta por [[https://www.python.org.br/wiki/lhzefe|Lhzefe]]


 * Exercício 1
Linha 26: Linha 64:
 {{{#!python
 def exercicio2(n):
     for i in range(1, n+1):
         for j in range(i):
             print j, # print a line with 0 1 ... i
         print # print a new line

 }}}

 Proposta por HenriqueBaggio
{{{#!python
def imprimeLinha(numero):
    for n in range(1, numero + 1):
        print((' {} ').format(n), end='')
    print()

def imprimeSequencia(numero):
    for numero in range(numero + 1):
        imprimeLinha(numero)


numero = input('Digite um número: ')
imprimeSequencia(int(numero))


 }}}


 Proposta por Vinicius Almeida
Linha 46: Linha 93:
 {{{#!python
Linha 54: Linha 102:
 }}}
Linha 58: Linha 108:

 
 {{{#!python
Linha 63: Linha 112:
 }}}
Linha 64: Linha 115:

 * Exercício 6.
{{{#!python
def hora(h, m):
    b = h / 12
    if b <= 1:
        hh = str(h)
        print('Sua hora: '+ hh + ':', end='')
    elif b > 1 and b < 2:
        hhh = str(h - 12)
        print('Sua hora: '+ hhh + ':', end='')
    else:
        print('Formato de hora invalido')
    if b <= 1 and m <= 60:
        print(m, 'a.m')
    elif b > 1 and m <= 60:
        print(m, 'p.m')
    else:
        print('Formato de minutos invalidos')

while True:
    print('digite 666 para sair')
    h = int(input('Informe a hora:'))
    if h == 666:
        break
    m = int(input('Informe os minutos: '))
    hora(h, m)
}}}

Proposta por [[https://www.python.org.br/wiki/Leo Araujo|Leo Araujo]]

 * Exercício 7
{{{#!python
qtPrest = []
listaVc = []
ct = 0
def funcVP(VP, NumDias):
    Vpm = VP * 1.03
    valorC = round(Vpm *((1 + 0.001) ** NumDias), 2)
    listaVc.append(valorC)
    print('Valor corrigido:', valorC)
    global ct
    ct += 1
    qtPrest.append(ct)

while True:
    VP = float(input('Digitr o valor da prestação: (0 para sair) '))
    if VP == 0:
        break
    NumDias = int(input('Quantos dias que está em atraso: '))
    funcVP(VP, NumDias)
print('Quantidade de prestações pagas: ', ct)
print('Valor total de prestações pagas no dia: R$', round(sum(listaVc)), 2)
}}}

Proposta por [[https://www.python.org.br/wiki/Leo Araujo|Leo Araujo]]

 * Exercício 7. Faça um programa que use a função valorPagamento para determinar o valor a ser pago por uma prestação de uma conta. O programa deverá solicitar ao usuário o valor da prestação e o número de dias em atraso e passar estes valores para a função valorPagamento, que calculará o valor a ser pago e devolverá este valor ao programa que a chamou. O programa deverá então exibir o valor a ser pago na tela. Após a execução o programa deverá voltar a pedir outro valor de prestação e assim continuar até que seja informado um valor igual a zero para a prestação. Neste momento o programa deverá ser encerrado, exibindo o relatório do dia, que conterá a quantidade e o valor total de prestações pagas no dia. O cálculo do valor a ser pago é feito da seguinte forma. Para pagamentos sem atraso, cobrar o valor da prestação. Quando houver atraso, cobrar 3% de multa, mais 0,1% de juros por dia de atraso.
 {{{#!python
 __author__ = 'JonasAlves'

 def valorPagamento(vp, da):
 if da < 1:
  valor = vp
  print(valor)
  return valor
 else:
  valor = (vp + vp * 0.03 + 0.01 * da)
  print(valor)
  return valor

 valor = []
 vp = 0
 da = 0
 qp = 0
 valortotal = 0

 while True:
 qp += 1
 vp = float(input('Qual o valor da prestacao? '))
 da = int(input('Quantos dias esta em atraso? '))
 if vp == 0:
  break
 valor.append(valorPagamento(vp, da))

 qp -= 1
 for i in range(qp):
    valortotal += valor[i]

 print('Relatorio do dia, foram pagas %d prestacoes no valor: ' %qp, valor)
 print('Valor total de prestacoes pagas: ', valortotal)

 }}}
Linha 71: Linha 215:
 * Exercício 9:Faça uma função que retorne o reverso de um número inteiro informado. Por exemplo: 127 -> 721.
 {{{#!python
def exercicio_9(n):
    inverte=str(n)
    print inverte[::-1]
 }}}
 
 Proposta por ThiagoSeixas
Linha 82: Linha 234:
 Proposta por HenriqueBaggio

 {{{#!python
 def reverso(n):
     str(n)[::-1]
 }}}
 Proposta por IuriSilvio
 * Exercício 10
{{{#!python
from random import randint
k = 0

def craps():
    k = randint(2,13)
    if k == 7 or k == 11:
        print('Você é o mestre!! Ganhou!!', k)
    elif k == 2 or k == 3 or k == 12:
        print('Craps!!! Você perdeu!', k)
    elif k in range(4,6) or k in range(8,10):
        print('Esse é o seu numero vamos jogar!! Numero:', k)
        print('Digite D para jogar o dado: ')
        z = 0
        while k != z:
            print('Digite D para jogar o dado:')
            s = input()
            if s == 'D':
                z = randint(2,13)
                print('Seu numero foi: ', z)
                if z == 7:
                    print('Voce Perdeu!!!')
                    break
        if z != 7:
            print('Voce Ganhou!!!')
craps()
 }}}
Proposta por [[https://www.python.org.br/wiki/Leo Araujo|Leo Araujo]]

 * Exercício 11:
 {{{#!python
def dma(d,m,a):
    dia = d
    mes = m
    ano = a
    
    if dia <=31:
    meses=['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outrubro','Novembro','Dezembro']
        mesPorextenso = meses[m-1]
        if mesPorextenso == 'Fevereiro' and dia > 28 and ano%4==1:
            print("Fevereiro só tem 28 dias em anos não bissextos!")
        elif mesPorextenso == 'Fevereiro' and dia>=30:
            print("Fevereiro só tem 29 ou 28 dias!")

        else:
            print("%d de %s de %i"%(d,mesPorextenso,ano))

    else:
        print("Dia inválido")

 }}}
 * Exercício 12: Construa uma função que receba uma string como parâmetro e devolva outra string com os carateres embaralhados. Por exemplo: se função receber a palavra python, pode retornar npthyo, ophtyn ou qualquer outra combinação possível, de forma aleatória. Padronize em sua função que todos os caracteres serão devolvidos em caixa alta ou caixa baixa, independentemente de como foram digitados.
 {{{#!python
 import random

 def exercicio_12(s):
     embaralha = random.sample(s, len(s)) # String vira lista
     a = ''.join(embaralha) # lista vira string
     print (a)
 }}}
 
 Proposta por ThiagoSeixas


 * Exercício 13
 {{{#!python

 def valor_por_omissao(valor):
     if valor=='':
         return int(1)
     else:
         return faixa_minima_maxima(int(valor))

 def faixa_minima_maxima(valor):
     if valor<1:
         return 1
     elif valor>20:
         return 20
     else:
         return valor

 def cria_linha(linha):
     l='+'
     for x in range(linha):
         l+='-'
     l+='+'
     print l

 def cria_coluna(linha, coluna):
     for y in range(coluna):
         c='|'
         c+= ' '*linha
         c+='|'
         print c

 def desenha_moldura(linha, coluna):
     cria_linha(linha)
     cria_coluna(linha, coluna)
     cria_linha(linha)

 linha=raw_input('Diga quantos +----+, entre 1 e 20: ')
 coluna=raw_input('Diga quantos | |, entre 1 e 20: ')
 desenha_moldura(valor_por_omissao(linha), valor_por_omissao(coluna))
 }}}
 Proposta por [[https://www.python.org.br/wiki/lhzefe|Lhzefe]]

* Exercício 14. Um quadrado mágico é aquele dividido em linhas e colunas, com um número em cada
  posição e no qual a soma das linhas, colunas e diagonais é a mesma.
  Elabore uma função que identifica e mostra na tela todos os quadrados mágicos com as
  características acima. Dica: produza todas as combinações possíveis e verifique a
  soma quando completar cada quadrado. Usar um vetor de 1 a 9 parece ser mais simples
  que usar uma matriz 3x3.
 {{{#!python
 def gera_combinacoes(lista, n):
    # gera tupla com todas as combinações possíveis da soma de três números da lista
    # que seja iguais a 15.
    for i in lista:
        for j in lista:
            if n + i + j == 15 and (n != i and n != j and i != j):
                combinacoes.append((n, i, j))

 
 def gera_quadro(comb, L1):
    linha1 = L1
    for i in range(len(comb)):
        linha2 = comb[i]
        for j in range(len(comb)):
            linha3 = comb[j]
            
                    
            if (linha1[0] + linha2[0] + linha3[0] == 15) and\
               (linha1[1] + linha2[1] + linha3[1] == 15) and\
               (linha1[2] + linha2[2] + linha3[2] == 15) and\
               (linha1[0] + linha2[1] + linha3[2] == 15) and\
               (linha1[2] + linha2[1] + linha3[0] == 15):

                if (linha1[0] not in linha2) and\
                   (linha1[1] not in linha2) and\
                   (linha1[2] not in linha2):

                    print(linha1)
                    print(linha2)
                    print(linha3)
                    print()
                

 lista = [1, 2, 3, 4, 5, 6, 7, 8, 9]
 combinacoes = []

 for n in range(1,10):
    gera_combinacoes(lista, n)

 print()

 for L1 in combinacoes:
    gera_quadro(combinacoes, L1)
 }}}
 
 Proposta por JoelNogueira

Exercícios com Funções: Proposta de Soluções

Esta página contém algumas propostas de soluções para os exercícios da Lista 6: Funções.

  • Exercício 1

v{{{#valor = [] def nesima(n):

  • for i in range(1,10): #para 9 elementos
    • if i < 10:

      • valor.append(n+i) print(valor)

n = int(input()) nesima(n) }}}

  • Exercício 1
       1 def exercicio_1(n):
       2     for i in range(n):
       3         i += 1
       4         print str(i) * i
    

    Proposta por ThiagoSeixas

  • Exercício 1
       1  def exercicio1(n):
       2      for i in range(1, n+1):
       3          for j in range(i):
       4              print i,         # print j times the number i in the same line 
       5          print                # print a new line
    

    Proposta por HenriqueBaggio

  • Exercício 1
       1  def exercicio_1(n):
       2      x=1
       3      while x<=n:
       4         y=0
       5         while y<x:
       6             print '%i' %x,
       7             y+=1
       8         x+=1
       9         print 
    

    Proposta por Lhzefe

  • Exercício 1
       1  def ex1(n):
       2      for i in range(1, n+1): 
       3          print((str(i)+" ")*i)
    

    Proposta por RogerioDuarte

  • Exercício 2

   1 def imprimeLinha(numero):
   2     for n in range(1, numero + 1):
   3         print(('  {} ').format(n), end='')
   4     print()
   5 
   6 def imprimeSequencia(numero):
   7     for numero in range(numero + 1):
   8         imprimeLinha(numero)
   9 
  10 
  11 numero = input('Digite um número: ')
  12 imprimeSequencia(int(numero))
  • Proposta por Vinicius Almeida
  • Exercício 3
       1  def exercicio3(a, b, c):
       2      return a + b + c
    

    Proposta por IuriSilvio

  • Exercício 4
       1  def pn(x):
       2      if x<0:
       3          return "N"
       4      elif x>0:
       5          return "P"
       6      else:
       7         return "ZERO"
    
    by Jorge
  • Exercício 5
       1  def somaimposto(taxaimposto,custo):
       2     return (0.01*taxaimposto)*custo + custo
       3  
    
    by Jorge
  • Exercício 6.

   1 def hora(h, m):
   2     b = h / 12
   3     if b <= 1:
   4         hh = str(h)
   5         print('Sua hora: '+ hh + ':', end='')
   6     elif b > 1 and b < 2:
   7         hhh = str(h - 12)
   8         print('Sua hora: '+ hhh + ':', end='')
   9     else:
  10         print('Formato de hora invalido')
  11     if b <= 1 and m <= 60:
  12         print(m, 'a.m')
  13     elif b > 1 and m <= 60:
  14         print(m, 'p.m')
  15     else:
  16         print('Formato de minutos invalidos')
  17 
  18 while True:
  19     print('digite 666 para sair')
  20     h = int(input('Informe a hora:'))
  21     if h == 666:
  22         break
  23     m = int(input('Informe os minutos: '))
  24     hora(h, m)

Proposta por Leo Araujo

  • Exercício 7

   1 qtPrest = []
   2 listaVc = []
   3 ct = 0
   4 def funcVP(VP, NumDias):
   5     Vpm = VP * 1.03
   6     valorC = round(Vpm *((1 + 0.001) ** NumDias), 2)
   7     listaVc.append(valorC)
   8     print('Valor corrigido:', valorC)
   9     global ct
  10     ct += 1
  11     qtPrest.append(ct)
  12 
  13 while True:
  14     VP = float(input('Digitr o valor da prestação: (0 para sair) '))
  15     if VP == 0:
  16         break
  17     NumDias = int(input('Quantos dias que está em atraso: '))
  18     funcVP(VP, NumDias)
  19 print('Quantidade de prestações pagas: ', ct)
  20 print('Valor total de prestações pagas no dia: R$', round(sum(listaVc)), 2)

Proposta por Leo Araujo

  • Exercício 7. Faça um programa que use a função valorPagamento para determinar o valor a ser pago por uma prestação de uma conta. O programa deverá solicitar ao usuário o valor da prestação e o número de dias em atraso e passar estes valores para a função valorPagamento, que calculará o valor a ser pago e devolverá este valor ao programa que a chamou. O programa deverá então exibir o valor a ser pago na tela. Após a execução o programa deverá voltar a pedir outro valor de prestação e assim continuar até que seja informado um valor igual a zero para a prestação. Neste momento o programa deverá ser encerrado, exibindo o relatório do dia, que conterá a quantidade e o valor total de prestações pagas no dia. O cálculo do valor a ser pago é feito da seguinte forma. Para pagamentos sem atraso, cobrar o valor da prestação. Quando houver atraso, cobrar 3% de multa, mais 0,1% de juros por dia de atraso.
       1  __author__ = 'JonasAlves'
       2 
       3  def valorPagamento(vp, da):
       4         if da < 1:
       5                 valor = vp
       6                 print(valor)
       7                 return valor
       8         else:
       9                 valor = (vp + vp * 0.03 + 0.01 * da)
      10                 print(valor)
      11                 return valor
      12 
      13  valor = []
      14  vp = 0
      15  da = 0
      16  qp = 0
      17  valortotal = 0
      18 
      19  while True:
      20         qp += 1
      21         vp = float(input('Qual o valor da prestacao? '))
      22         da = int(input('Quantos dias esta em atraso? '))
      23         if vp == 0:
      24                 break
      25         valor.append(valorPagamento(vp, da))
      26 
      27  qp -= 1
      28  for i in range(qp):
      29     valortotal += valor[i]
      30 
      31  print('Relatorio do dia, foram pagas %d prestacoes no valor: ' %qp, valor)
      32  print('Valor total de prestacoes pagas: ', valortotal)
    
  • Exercício 8
       1  def exercicio8(n):
       2      s = str(n)
       3      return len(s)
    
  • Exercício 9:Faça uma função que retorne o reverso de um número inteiro informado. Por exemplo: 127 -> 721.

       1 def exercicio_9(n):
       2     inverte=str(n)
       3     print inverte[::-1]
    

    Proposta por ThiagoSeixas

  • Exercício 9: A ideia nesse exercicio é que, para um dado digito numa posição i do número de entrada, ele terá o seu valor multiplicado por 10**i no número de saída.
       1  def reverso(n):
       2      s = str(n)       # converte o numero para uma string
       3      l = 0
       4      for x in range(len(s)):
       5          l += int(s[x]) * (10**x)
       6      return l
    
  • Exercício 10

   1 from random import randint
   2 k = 0
   3 
   4 def craps():
   5     k = randint(2,13)
   6     if k == 7 or k == 11:
   7         print('Você é o mestre!! Ganhou!!', k)
   8     elif k == 2 or k == 3 or k == 12:
   9         print('Craps!!! Você perdeu!', k)
  10     elif k in range(4,6) or k in range(8,10):
  11         print('Esse é o seu numero vamos jogar!! Numero:', k)
  12         print('Digite D para jogar o dado: ')
  13         z = 0
  14         while k != z:
  15             print('Digite D para jogar o dado:')
  16             s = input()
  17             if s == 'D':
  18                 z = randint(2,13)
  19                 print('Seu numero foi: ', z)
  20                 if z == 7:
  21                     print('Voce Perdeu!!!')
  22                     break
  23         if  z != 7:
  24             print('Voce Ganhou!!!')
  25 craps()

Proposta por Leo Araujo

  • Exercício 11:
       1 def dma(d,m,a):
       2     dia = d
       3     mes = m
       4     ano = a
       5     
       6     if dia <=31:
       7     meses=['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outrubro','Novembro','Dezembro']
       8         mesPorextenso = meses[m-1]
       9         if mesPorextenso == 'Fevereiro' and dia > 28 and ano%4==1:
      10             print("Fevereiro só tem 28 dias em anos não bissextos!")
      11         elif mesPorextenso == 'Fevereiro' and dia>=30:
      12             print("Fevereiro só tem 29 ou 28 dias!")
      13 
      14         else:
      15             print("%d de %s de %i"%(d,mesPorextenso,ano))
      16 
      17     else:
      18         print("Dia inválido")
    
  • Exercício 12: Construa uma função que receba uma string como parâmetro e devolva outra string com os carateres embaralhados. Por exemplo: se função receber a palavra python, pode retornar npthyo, ophtyn ou qualquer outra combinação possível, de forma aleatória. Padronize em sua função que todos os caracteres serão devolvidos em caixa alta ou caixa baixa, independentemente de como foram digitados.
       1  import random
       2 
       3  def exercicio_12(s):
       4      embaralha = random.sample(s, len(s)) # String vira lista
       5      a = ''.join(embaralha) # lista vira string
       6      print (a)
    

    Proposta por ThiagoSeixas

  • Exercício 13
       1  def valor_por_omissao(valor):
       2      if valor=='':
       3          return int(1)
       4      else:
       5          return faixa_minima_maxima(int(valor))
       6 
       7  def faixa_minima_maxima(valor):
       8      if valor<1:
       9          return 1
      10      elif valor>20:
      11          return 20
      12      else:
      13          return valor
      14 
      15  def cria_linha(linha):
      16      l='+'
      17      for x in range(linha):
      18          l+='-'
      19      l+='+'
      20      print l
      21 
      22  def cria_coluna(linha, coluna):
      23      for y in range(coluna):
      24          c='|'
      25          c+= ' '*linha
      26          c+='|'
      27          print c
      28 
      29  def desenha_moldura(linha, coluna):
      30      cria_linha(linha)
      31      cria_coluna(linha, coluna)
      32      cria_linha(linha)
      33 
      34  linha=raw_input('Diga quantos +----+, entre 1 e 20: ')
      35  coluna=raw_input('Diga quantos |    |, entre 1 e 20: ')
      36  desenha_moldura(valor_por_omissao(linha), valor_por_omissao(coluna))
    

    Proposta por Lhzefe

* Exercício 14. Um quadrado mágico é aquele dividido em linhas e colunas, com um número em cada

  • posição e no qual a soma das linhas, colunas e diagonais é a mesma. Elabore uma função que identifica e mostra na tela todos os quadrados mágicos com as características acima. Dica: produza todas as combinações possíveis e verifique a soma quando completar cada quadrado. Usar um vetor de 1 a 9 parece ser mais simples que usar uma matriz 3x3.
  •    1  def gera_combinacoes(lista, n):    
       2     #  gera tupla com todas as combinações possíveis da soma de três números da lista 
       3     #  que seja iguais a 15.
       4     for i in lista:
       5         for j in lista:            
       6             if n + i + j == 15 and (n != i and n != j and i != j):
       7                 combinacoes.append((n, i, j))
       8 
       9  
      10  def gera_quadro(comb, L1):
      11     linha1 = L1    
      12     for i in range(len(comb)):
      13         linha2 = comb[i]
      14         for j in range(len(comb)):
      15             linha3 = comb[j]
      16             
      17                     
      18             if (linha1[0] + linha2[0] + linha3[0] == 15) and\
      19                (linha1[1] + linha2[1] + linha3[1] == 15) and\
      20                (linha1[2] + linha2[2] + linha3[2] == 15) and\
      21                (linha1[0] + linha2[1] + linha3[2] == 15) and\
      22                (linha1[2] + linha2[1] + linha3[0] == 15):     
      23 
      24                 if (linha1[0] not in linha2) and\
      25                    (linha1[1] not in linha2) and\
      26                    (linha1[2] not in linha2):
      27 
      28                     print(linha1)
      29                     print(linha2)
      30                     print(linha3)
      31                     print()
      32                 
      33 
      34  lista = [1, 2, 3, 4, 5, 6, 7, 8, 9]
      35  combinacoes = []
      36 
      37  for n in range(1,10):    
      38     gera_combinacoes(lista, n)
      39 
      40  print()
      41 
      42  for L1 in combinacoes:
      43     gera_quadro(combinacoes, L1)
    

    Proposta por JoelNogueira