Você está na página 1de 34

' D

Repetições

Repetições
Seria tão legal repetir várias
vezes as mesmas linhas de
código, mas isso é um sonho...
Imprimindo de 1 a 3
• Forma simples
print (1)
print (2)
print (3)

• Usando uma variável


X= 1
print (X)
X = 2
print (X)
X= 3
print (X)
Imprimindo de 1 a 3
• Incrementando a variável
X= 1
print (X)
X= X + 1
print (X)
X= X + 1
print (X)
• Usando while
X = 1
while x <= 3:
print (x)
X = X + 1
Imprimindo de 1 a 3
X = 1
print (x) while x <= 3:
x=x+1 print (x)
X = X + 1

Quando o programa chega Se a condição é verdadeira


no while pela primeira vez ele sobe no looping
ele verifica a condição

x=1
x <= 3 ?

No final do bloco do loop o


programa volta para a
condição de novo
Contadores
• Agora imprima de 1 até um número digitado
pelo usuário
fim = int (input ("Digite o último número: "))
X = 1
while x <= fim:
print (x)
X = X + 1
Contadores
• Imprimir os números pares entre 0 e um
número fornecido usando if
fim= int(input("Digite o último número: "))
X = 0
while x <= fim:
if x % 2 == O:
print (x)
X = X + 1
Contadores
•Imprimir os números pares entre 0 e um
número fornecido sem utilizar o if
fim = int (input ("Digite o último número: "))
X = 0
while x <= fim:
print (x)
X = X + 2
Contadores
• Modifique o programa anterior para imprimir
de 1 até o número digitado pelo usuário, mas
dessa vez apenas os números ímpares
• Reescreva o programa anterior para escrever
os 10 primeiros múltiplos de 3
Acumuladores
• A diferença entre um contador e um acumulador é
que nos contadores o valor adicionado é constante e,
nos acumuladores, variável
• Cálculo da soma de dez números inteiros
n = 1
soma= O
while n <= 10:
x = int (input ("Digite o %d número: " %n))
soma= soma+ x
n = n + 1
print ("Soma: %d" %soma)
Acumuladores
• Calcule a média de 10 números inteiros

n =1

soma= O
while n <= 10:

x = int (input ("Digite o %d número: " %n))


soma= soma+ x
n = n + 1

print ("Média: %5.2£" %(soma/10))


Acumuladores
• Calcule o fatorial de dez
i = 1
fat= 1
while i<= 10:
fat= fat* i
i = i + 1
print ("Fat(10) = %d" %fat)
Acumuladores
• Calcule o fatorial de um número inteiro n
i = 1
fat= 1
n = int (input ("Digite n: "))
while i<= n:
fat= fat* i
i = i + 1
print ("Fat(%d) = %d" %(n, fat))
Interrompendo a repetição
• Calcule a soma de números inteiros até ser
digitado zero
soma= O
while True: ,
x = int(input("Digite o numero (0 sai): "))
if X== O:
break
soma= soma+ x
print ("Soma: %d" %soma)
Interrompendo a repetição
• Calcule a média de números até ser digitado
zero
soma= O
n = O
while True:
x = int(input("Digite o número (0 sai): "))
if X== O:
break
else:
n = n + 1
soma= soma+ x
print ("Média: %5.2£" %(soma/n))
Repetições aninhadas
• Imprima as tabuadas de 1 a 10
tabuada= 1
while tabuada<= 10:
n = 1
print ("Tabuada %d" %tabuada)
while n <= 10:
print ("%dx %d = %d"
%(tabuada, n, tabuada* n))
n = n + 1

tabuada= tabuada+ 1
O loop FOR
Executa um bloco de código para cada item de
uma seqüência
for <variable> in <sequence>:
• A seqüência pode ser uma seqüência de <indented code block >
caracteres, uma lista, … <non-indented code block>
• O Bloco de código deve ser identado

for word in ['stop', 'desktop', 'post', 'top']:


if 'top' in word:
print(word)
print('Done.')
word = 'stop'

word = 'desktop' >>>


stop
word = 'post' desktop
top
Done.

word = 'top'
Introduction to Computing Using Python

A função interna range()


A função range() é usada para iterar sobre uma seqüência de números em um
intervalo especificado
Para iterar sobre os n números 0, 1, 2,..., n-1
• for i in range(n):

Para iterar sobre os n números i, i + 1, i + 2,..., n-1


• for i in range(i, n):

Para iterar sobre os n números i, i + c, i + 2C, i + 3C,..., n-1


• for i in range(i, n):
>>> for i in range(2,
range(4):16,
range(0):
range(1):
range(0, 3): 10):
2):
6): 4):
print(i)

>>>
2
0
1
>>>
3
6
4
12
2
4
10
8
>>>
3
5
14
12
>>>
Introduction to Computing Using Python

Exercício

Escreva loops for que imprimirão as seguintes sequências:

a) 0, 1, 2, 3, 4, 5, 6, 7, 8 , 9, 10
b) 1, 2, 3, 4, 5, 6, 7, 8, 9

c) 0, 2, 4, 6, 8

d) 1, 3, 5, 7, 9

e) 20, 30, 40, 50, 60


Introduction to Computing Using Python

Definindo novas funcões

Algumas funções incorporadas que vimos: >>> abs(-9)


9
>>> max(2, 4)
• abs(), max(), len(), 4
>>> lst = [2,3,4,5]
sum(), print()
>>> len(lst)
4
>>> sum(lst)
Novas funções podem ser definidas usando def 14
>>> print()

def: palavra-chave para definir a função >>> def f(x):


res = 2*x + 10
f: nome da função return x**2 + 10
x: nome da variável para o
>>> f(1)
argumento de entrada 11
>>> f(3)
def f(x): 19
res = x**2 + 10 >>> f(0)
return res 10

return: especifica a saída da função


Introduction to Computing Using Python

print() versus return

def f(x): def f(x):


res = x**2 + 10 res = x**2 + 10
return res print(res)

>>> f(2) >>> f(2)


14 14 f(2)
>>>
>>> 2*f(2) 14
28 >>> 2*f(2)
14
Traceback (most recent call last):
File "<pyshell#56>", line 1, in <module>
2*f(2)
TypeError: unsupported operand type(s) for *: 'int'
and 'NoneType'

A função retorna o valor de res que


pode ser usado em uma expressão A função imprime valor de res
Mas não retorna nada
Introduction to Computing Using Python

Definindo novas funções

O formato geral de uma definição de função é c


a

def <function name> (<0 or more variables>): b


<indented function body>

Vamos desenvolver a função hyp() que:


• Tomava dois números como entrada
• (comprimentos laterais a e b do triângulo )
• Retorna o comprimento da hipotenusa c

>>> hyp(3,4)
5.0
>>>
import math
def hyp(a, b):
res = math.sqrt(a**2 + b**2)
return res
Introduction to Computing Using Python

Exercício

Escreva a Função hello() que :


• Toma um nome (i.e., uma String) como entrada
• imprime uma mensagem de boas-vindas personalizada
• Observe que a função não retorna nada

>>> hello('Julie')
Welcome, Julie, to the world of Python.
>>>

def hello(name):
line = 'Welcome, ' + name + ', to the world of Python.'
Python.’
print(line)
Introduction to Computing Using Python

Exercício

Escreva a função rng() que:


tem uma lista de números como entrada
• Retorna o intervalo dos números na lista
• O intervalo é a diferença entre o número maior e menor na lista

>>> rng([4, 0, 1, -2])


6
>>>

def rng(lst):
res = max(lst) - min(lst)
return res
Introduction to Computing Using Python

Comentários e docstrings

Os programas Python devem ser documentados

Assim, o desenvolvedor que escreve/mantém o código


consegue compreender
• Assim, o usuário sabe o que o programa faz >>> help(f)
>>> help(f)
Help on function f in module __main__:
Help on function f in module __main__:

Comentários f(x)
f(x)

def f(x): >>> def f(x):


res = x**2 + 10 # resultado de computação 'returns x**2 + 10'
return res # e devolvê-lo res = x**2 + 10
return res

>>> help(f)
Docstring Help on function f in module __main__:

def f(x): f(x)


' retorna x * * 2 + 10 ' returns x**2 + 10
res = x**2 + 10 # resultado de computação
return res # e devolvê-lo >>>
Instrução de atribuição: um segundo Introduction to Computing Using Python

olhar
Uma variável não existe antes de ser atribuída
a b c d

3 [1, 2, 3]
'three' >>> a
3.3 Traceback (most recent call last):
File "<pyshell#66>", line 1, in
<module>
a
NameError: name 'a' is not defined
>>> a = 3
<variable> = <expression>
>>> b = 2 + 1.3
>>> c = 'three'
1. <expression> é avaliada e seu valor >>> d = [1, 2] + [3]

colocado em um objeto de tipo apropriado


2. Ao objeto é atribuído o nome <variable>
Introduction to Computing Using Python

Tipos mutáveis e imutáveis

a b c d

>>> a
3
3 [1, 7,
2, 3] >>> a = 6
'three' >>> a
3.3 6
6 >>> d
[1, 2, 3]
>>> d[1] = 7
O objeto (3) referido pela variável a não muda; >>> d
em vez disso, a refere-se a um novo objeto (6) [1, 7, 3]
Os inteiros são imutáveis

O objeto ([1, 2, 3]) referido por d muda


As listas são mutáveis
Introduction to Computing Using Python

Atribuição e mutabilidade

a b c d >>>
>>> aa
6
>>>
>>> bb
9 3.3
>>> b = a
>>> b
6
3 [1, 7, 9]
3] >>> a = 9
'three' >>> b
3.3 6
>>> c = d
6 >>> c
[1, 7, 3]
>>> d[2] = 9
ac e bd referem-se ao mesmo objeto inteiro
de lista >>> c
[1, 7, 9]

aAagora se refere
lista que a umanovo
c se refere objeto d
alterações; (9); b aindaao
refere-se se mesmo
refere ao objeto
objeto deantigo (6)modo
lista, de
Como
que eleos muda
inteiros são imutáveis, uma alteração em um não afeta o valor de b
Como as listas são mutáveis, uma alteração para d afeta c
Introduction to Computing Using Python

Trocando valores

a b tmp queremos: a b
Temos:

3 6 3 6

>>> a
3
>>> b
6
>>> tmp
a,
b =b a== b,
ba
>>> b = a
>>> a = tmp
Introduction to Computing Using Python

Passagem de parâmetro imutável

a x

shell Function call g(a)

3 5
>>> a = 3
>>> g(a)
def g(x):
>>>
x=5

Variável x dentro de g () refere-se ao objeto a refere-se a


A função g () não, e não pode, modificar o valor de um no shell interativo.
Como se executamos x = a
Isso é porque um refere-se a um objeto imutável.
Introduction to Computing Using Python

Passagem de parâmetro mutável

lst l

shell Function call h(lst)

[1,2,3]
[5,2,3]
>>> lst = [1,2,3]
>>> h(lst)
def h(l):
>>>
l[0] = 5

AVariável l dentro
função h h () refere-se
() modificou o valor ao
de objeto lst refere-se
lst no shell a
interativo.
Isto é porque lst e l referem-se a um objeto mutável.
Como se executamos l = lst
Introduction to Computing Using Python

Exercício

Exscreva a função swapFS() que:


Toma uma lista como entrada
• troca o primeiro e o segundo elemento da lista, mas somente se a lista
tiver pelo menos dois elementos
• A função não retorna nada
>>> mylst = ['one', 'two', 'three']
>>> swapFS(mylst)
>>> mylst
['two', 'one', 'three']
>>> mylst = ['one']
>>> swapFS(mylst)
>>> mylst
['one']
>>>

def swapFS(lst):
if len(lst) > 1:
lst[0], lst[1] = lst[1], lst[0]
“A vida é como
andar de bicicleta.
Para manter o
equilíbrio, é preciso
se manter em
movimento”.
Einstein.
,
fi> Copvrlght California Institute of Technolo91J. All rights reserved.
Commercial use or modification of this material ts prohibited.

Você também pode gostar