MC-102 — Aula 07
Comandos Repetitivos

Introdução

Exercício 1

Exercício 1

  n=int(input('Entre com o numero: '))
  for i in range(2,n+1):
      if n % i == 0 :
          print(i)

o central aqui é usar o range para gerar os números que vão tentar dividir o n

Exercício 2

Exercício 2

Exercício 2

Exercício 2

def produto_escalar(l1,l2):
  if len(l1) != len(l2):
      return 0
  s=0.0
  for i in range(len(l1)):
      s = s + l1[i]*l2[i]
  return s

Assim que voce descobre que a resposta deve ser 0, de um return desta resposta. O return termina a função e os comandos abaixo do if (neste caso s=0.0) não são executados.

Exercício 3

Exercício 3

def sleiafim():
  l = []
  while True:
     x = input('Nome: ')
     if x == '':
        return l
     l.append(x)

def nleian(n):
   l = []
   for i in range(n):
     d = float(input('Nota: '))
     l.append(d)
   return l

nomes = sleiafim()
n = len(nomes)
notas = nleian(n)

for i in range(n):
   if notas[i]<0.5: 
      print(nome[i])

Exercício 4

Exercício 4

def sleiafim():
  l = []
  while True:
     x = input('Nome: ')
     if x == '':
        return l
     l.append(x)

def nleian(n):
   l = []
   for i in range(n):
     d = float(input('Nota: '))
     l.append(d)
   return l

Exercício 4

nomes = sleiafim()
n = len(nomes)
notas = nleian(n)

ma = 0.0
for i in range(n):
   if notas[i] > ma:
      ma = notas[i]
      pos = i 

print('o aluno ',nomes[pos],'tirou a maior nota:',notas[pos])

Exercício 5

Exercício 5

VERSAO INCORRETA

def ordenada(l):
   for i in range(len(l)):
     if l[i]>l[i+1]:
        return False
   return True

Exercício 5

Há um problema com o código acima, que não tem a ver com a ideia central. O programa funciona para não ordenadas, mas dá erro para ordenadas.

>>> ordenada([2,3,7,4,12])
False
>>> ordenada([2,3,7,14,112])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in ordenada
IndexError: list index out of range

def ordenada(l):
   for i in range(len(l)-1):
     if l[i]>l[i+1]:
        return False
   return True

O problema é que para o ultimo elemento da lista não da para compara-lo com o próximo.

Exercício 6

Exercício 6

def palindromico(l):
   n = len(l)
   meio = n // 2
   for i in range(meio):
      if not l[i] == l[n-i-1]:
         return False
   return True