3027
Comentário:
|
← Revisão 47e 2024-07-31 13:32:45 ⇥
16880
|
Deleções são marcadas assim. | Adições são marcadas assim. |
Linha 4: | Linha 4: |
* Exercício 1 {{{#!python def exercicio_1(n): for i in range(n): i += 1 print str(i) * i }}} Proposta por ThiagoSeixas |
|
Linha 31: | Linha 41: |
Proposta por Lhzefe | Proposta por [[https://www.python.org.br/wiki/lhzefe|Lhzefe]] |
Linha 42: | Linha 52: |
* Exercício 2 valor = [] def nesima(n): for i in range(1,10): #para 9 elementos if i < 10: valor.append(n+i) print(valor) Por Diel Jr |
|
Linha 44: | 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 * Exercício 2 {{{#!python def nesimo_numero(n): for i in range(1, n + 1): for j in range(1,i+1): print(j, end=' ') print() nesimo_numero(10) }}} Proposta por StarKiller |
Linha 87: | Linha 130: |
* 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 6. {{{#!python listpm = [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23] listam = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 00] def conversorhorario(): h = int(input('Digite a hora: ')) m = int(input('Digite os minutos: ')) if h in listam: print(f'São {h}:{m} AM') elif h in listpm: idx = listpm.index(h) print(f'São {listam[idx]}:{m} PM') elif h > 23 and m > 59: print('Hora não reconhecida.') conversorhorario() }}} Proposta por [[https://github.com/NetoEu|EuTone]] * Exercício 7 {{{#!python def valorPagamento(): diario = [] while True: val = float(input('Valor da prestação: ')) atr = int(input('Dias atrasados: ')) multa = 0.03 multa_dia = 0.001 * atr total = int(val+(val*multa_dia)+(val*multa)) print(f'O valor a ser pago é R${total}.') diario.append(total) continuar = input('Cotinuar? S/N: ').upper() if continuar == 'N': break print(f'As prestações pagas de hoje foram {diario}') print('Encerrado') valorPagamento() }}} Proposta por [[https://github.com/NetoEu|EuTone]] * 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 93: | Linha 276: |
* 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 103: | Linha 294: |
Proposta por HenriqueBaggio {{{#!python def reverso(n): str(n)[::-1] }}} Proposta por IuriSilvio |
* Exercício 9: {{{#!python def reverso(): num = int(input('Digite um número: ')) rev = str(num) print(num, rev[::-1]) reverso() }}} Proposta por [[https://github.com/NetoEu|EuTone]] * 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 10 - Foi criado uma função interna para jogar os dados e no final apresenta a quantidade de vezes que ganhou e perdeu. {{{#!python from random import randint def craps(): #Função para jogar os dados def jogar(): dado1 = randint(1, 6) dado2 = randint(1, 6) print(f'DADO AMARELO {dado1} e DADO AZUL {dado2} e SOMA {dado2 + dado1}') return dado1 + dado2 cont = ganho = perda = 0 while True: a = input('jogar: ') if a in "nN": break valor = jogar() if cont == 0 and valor == 7 or valor == 11: print('come-out roll GANHOOOOUUU') ganho += 1 cont = 0 elif cont == 0 and valor == 2 or valor == 3 or valor == 12: print('come-out roll PERDEEEEUUUU') cont = 0 perda += 1 elif cont == 0: passLine = valor cont = 1 print('jogue mais uma vez') continue elif cont == 1: if passLine == valor: print('Pass line GANHOOOOUUU') ganho += 1 else: print('PERDEEEEUUUU \nTenta novamente') perda += 1 cont = passLine = 0 print('-*' * 15) print('OBRIGADO POR SE DIVERTIR COM CRAPS EM NOSSO CASSINO') print(f'você ganhou {ganho} e perdeu {perda}') craps() }}} Proposta por JeandroBrito * 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") }}} {{{#!python def dataExtenso(data): meses = [(), ['janeiro', 31], ['fevereiro', 29], ['março', 31], ['abril', 30], ['maio', 31], ['junho', 30], ['julho', 31], ['agosto', 31], ['setembro', 30], ['outubro', 31], ['novembro', 30], ['dezembro', 31]] data = data.split('/') dia, mes, ano = int(data[0]), int(data[1]), int(data[2]) if mes == 2: meses[mes][1] = anoBissexto(ano) if 0 < mes < 13 and 0 < dia <= meses[mes][1]: print(f'{dia} de {meses[mes][0]} de {ano}') else: print('NULL') #verifica se ano é bissexto def anoBissexto(ano): if ano % 400 == 0 or ano % 4 == 0 and ano % 100 != 0: return 29 else: return 28 dataExtenso('29/2/2020') dataExtenso('29/2/2021') }}} Proposta por JeandroBrito * 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 |
Linha 152: | Linha 489: |
Proposta por Lhzefe | Proposta por [[https://www.python.org.br/wiki/lhzefe|Lhzefe]] * Exercício 13 {{{#!Python 3.8.5 def primeria_linha_coluna(linha, coluna): contC = 0 contL = 0 c = '' l = '' while (contL < linha) and (contC < coluna): if contL == 0: l = '+' for i in range(coluna): c += '-' l = '+' contL += 1 contC += 1 print(l+c+l) def outras_linhas(linha, coluna): contC = 0 contL = 0 c = '' l = '' while contL < linha: if contL == 0: l = '|' for i in range(linha): c += ' ' l = '|' contL += 1 contC += 1 print(l+c+l) def ultima_linha(linha, coluna): contL = 0 contC = 0 l = '' c = '' while (contL < linha) and (contC < coluna): if contL == 0: l = '+' for i in range(coluna): c += '-' l = '+' contL += 1 contC += 1 print(l+c+l) linha = int(input('Informe o número de linhas: ')) coluna = int(input('Informe o número de colunas: ')) primeria_linha_coluna(linha, coluna) outras_linhas(linha, coluna) ultima_linha(linha, coluna) }}} Proposto por Diel Junior * 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ício 14. {{{#!python from itertools import combinations, permutations def validaTabela(tabela): # Verifica se a tabela é válida if sum(tabela[:3]) == sum(tabela[3:6]) == sum(tabela[6:10]): if sum(tabela[::3]) == sum(tabela[1::3]) == sum(tabela[2::3]): if sum(tabela[::4]) == sum(tabela[2:8:2]): print(tabela, ' valida ') return 1 else: return 0 else: return 0 else: return 0 def gera(tab): #gerar as matrizes possíveis cont = 0 validos = 0 for i in permutations(tab,9): cont += 1 validos += validaTabela(i) print(f'total de verificações {cont} e matriz válidas {validos}') tabela = [1,2,3,4,5,6,7,8,9] gera(tabela) }}} Proposta por JeandroBrito |
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
Proposta por ThiagoSeixas
- Exercício 1
Proposta por HenriqueBaggio
- Exercício 1
Proposta por Lhzefe
- Exercício 1
Proposta por RogerioDuarte
* Exercício 2 valor = []
def nesima(n):
- for i in range(1,10): #para 9 elementos
if i < 10:
- valor.append(n+i) print(valor)
Por Diel Jr
- Exercício 2
- Proposta por Vinicius Almeida
* Exercício 2
Proposta por StarKiller
- Exercício 3
Proposta por IuriSilvio
- Exercício 4 by Jorge
- Exercício 5 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 6.
1 listpm = [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
2 listam = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 00]
3
4 def conversorhorario():
5 h = int(input('Digite a hora: '))
6 m = int(input('Digite os minutos: '))
7 if h in listam:
8 print(f'São {h}:{m} AM')
9 elif h in listpm:
10 idx = listpm.index(h)
11 print(f'São {listam[idx]}:{m} PM')
12 elif h > 23 and m > 59:
13 print('Hora não reconhecida.')
14
15 conversorhorario()
Proposta por EuTone
- Exercício 7
1 def valorPagamento():
2 diario = []
3
4 while True:
5 val = float(input('Valor da prestação: '))
6 atr = int(input('Dias atrasados: '))
7 multa = 0.03
8 multa_dia = 0.001 * atr
9 total = int(val+(val*multa_dia)+(val*multa))
10 print(f'O valor a ser pago é R${total}.')
11 diario.append(total)
12
13 continuar = input('Cotinuar? S/N: ').upper()
14 if continuar == 'N':
15 break
16
17 print(f'As prestações pagas de hoje foram {diario}')
18 print('Encerrado')
19
20 valorPagamento()
Proposta por EuTone
- 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
Exercício 9:Faça uma função que retorne o reverso de um número inteiro informado. Por exemplo: 127 -> 721.
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.
* Exercício 9:
Proposta por EuTone
- 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 10 - Foi criado uma função interna para jogar os dados e no final apresenta a quantidade de vezes que ganhou e perdeu.
1 from random import randint
2 def craps():
3 #Função para jogar os dados
4 def jogar():
5 dado1 = randint(1, 6)
6 dado2 = randint(1, 6)
7 print(f'DADO AMARELO {dado1} e DADO AZUL {dado2} e SOMA {dado2 + dado1}')
8 return dado1 + dado2
9
10 cont = ganho = perda = 0
11 while True:
12 a = input('jogar: ')
13 if a in "nN": break
14 valor = jogar()
15
16 if cont == 0 and valor == 7 or valor == 11:
17 print('come-out roll GANHOOOOUUU')
18 ganho += 1
19 cont = 0
20 elif cont == 0 and valor == 2 or valor == 3 or valor == 12:
21 print('come-out roll PERDEEEEUUUU')
22 cont = 0
23 perda += 1
24 elif cont == 0:
25 passLine = valor
26 cont = 1
27 print('jogue mais uma vez')
28 continue
29 elif cont == 1:
30 if passLine == valor:
31 print('Pass line GANHOOOOUUU')
32 ganho += 1
33
34 else:
35 print('PERDEEEEUUUU \nTenta novamente')
36 perda += 1
37 cont = passLine = 0
38 print('-*' * 15)
39 print('OBRIGADO POR SE DIVERTIR COM CRAPS EM NOSSO CASSINO')
40 print(f'você ganhou {ganho} e perdeu {perda}')
41
42 craps()
Proposta por JeandroBrito
- 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")
1 def dataExtenso(data):
2 meses = [(), ['janeiro', 31], ['fevereiro', 29], ['março', 31], ['abril', 30],
3 ['maio', 31], ['junho', 30], ['julho', 31], ['agosto', 31], ['setembro', 30],
4 ['outubro', 31], ['novembro', 30], ['dezembro', 31]]
5
6 data = data.split('/')
7 dia, mes, ano = int(data[0]), int(data[1]), int(data[2])
8 if mes == 2:
9 meses[mes][1] = anoBissexto(ano)
10 if 0 < mes < 13 and 0 < dia <= meses[mes][1]:
11 print(f'{dia} de {meses[mes][0]} de {ano}')
12 else:
13 print('NULL')
14
15 #verifica se ano é bissexto
16 def anoBissexto(ano):
17 if ano % 400 == 0 or ano % 4 == 0 and ano % 100 != 0:
18 return 29
19 else:
20 return 28
21
22 dataExtenso('29/2/2020')
23 dataExtenso('29/2/2021')
Proposta por JeandroBrito
- 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.
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 13
1 def primeria_linha_coluna(linha, coluna):
2 contC = 0
3 contL = 0
4 c = ''
5 l = ''
6 while (contL < linha) and (contC < coluna):
7 if contL == 0:
8 l = '+'
9 for i in range(coluna):
10 c += '-'
11 l = '+'
12 contL += 1
13 contC += 1
14 print(l+c+l)
15
16 def outras_linhas(linha, coluna):
17 contC = 0
18 contL = 0
19 c = ''
20 l = ''
21 while contL < linha:
22 if contL == 0:
23 l = '|'
24 for i in range(linha):
25 c += ' '
26 l = '|'
27 contL += 1
28 contC += 1
29 print(l+c+l)
30
31 def ultima_linha(linha, coluna):
32 contL = 0
33 contC = 0
34 l = ''
35 c = ''
36 while (contL < linha) and (contC < coluna):
37 if contL == 0:
38 l = '+'
39 for i in range(coluna):
40 c += '-'
41 l = '+'
42 contL += 1
43 contC += 1
44 print(l+c+l)
45
46
47
48 linha = int(input('Informe o número de linhas: '))
49 coluna = int(input('Informe o número de colunas: '))
50
51 primeria_linha_coluna(linha, coluna)
52 outras_linhas(linha, coluna)
53 ultima_linha(linha, coluna)
Proposto por Diel Junior
* 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
* Exercício 14.
1 from itertools import combinations, permutations
2
3
4 def validaTabela(tabela): # Verifica se a tabela é válida
5 if sum(tabela[:3]) == sum(tabela[3:6]) == sum(tabela[6:10]):
6 if sum(tabela[::3]) == sum(tabela[1::3]) == sum(tabela[2::3]):
7 if sum(tabela[::4]) == sum(tabela[2:8:2]):
8 print(tabela, ' valida ')
9 return 1
10 else: return 0
11 else: return 0
12 else:
13 return 0
14
15
16 def gera(tab): #gerar as matrizes possíveis
17 cont = 0
18 validos = 0
19 for i in permutations(tab,9):
20 cont += 1
21 validos += validaTabela(i)
22 print(f'total de verificações {cont} e matriz válidas {validos}')
23
24 tabela = [1,2,3,4,5,6,7,8,9]
25
26 gera(tabela)
Proposta por JeandroBrito