Alg Prog Python II
Alg Prog Python II
1 4. Python
[1]: ['False',
'None',
'True',
'and',
'as',
'assert',
'async',
'await',
'break',
'class',
'continue',
'def',
'del',
'elif',
'else',
'except',
'finally',
'for',
'from',
'global',
'if',
'import',
'in',
1
'is',
'lambda',
'nonlocal',
'not',
'or',
'pass',
'raise',
'return',
'try',
'while',
'with',
'yield']
[44]: ['ArithmeticError',
'AssertionError',
'AttributeError',
'BaseException',
'BlockingIOError',
'BrokenPipeError',
'BufferError',
'BytesWarning',
'ChildProcessError',
'ConnectionAbortedError',
'ConnectionError',
'ConnectionRefusedError',
'ConnectionResetError',
'DeprecationWarning',
'EOFError',
'Ellipsis',
'EnvironmentError',
'Exception',
'False',
'FileExistsError',
'FileNotFoundError',
'FloatingPointError',
'FutureWarning',
'GeneratorExit',
'IOError',
'ImportError',
'ImportWarning',
'IndentationError',
'IndexError',
'InterruptedError',
'IsADirectoryError',
2
'KeyError',
'KeyboardInterrupt',
'LookupError',
'MemoryError',
'ModuleNotFoundError',
'NameError',
'None',
'NotADirectoryError',
'NotImplemented',
'NotImplementedError',
'OSError',
'OverflowError',
'PendingDeprecationWarning',
'PermissionError',
'ProcessLookupError',
'RecursionError',
'ReferenceError',
'ResourceWarning',
'RuntimeError',
'RuntimeWarning',
'StopAsyncIteration',
'StopIteration',
'SyntaxError',
'SyntaxWarning',
'SystemError',
'SystemExit',
'TabError',
'TimeoutError',
'True',
'TypeError',
'UnboundLocalError',
'UnicodeDecodeError',
'UnicodeEncodeError',
'UnicodeError',
'UnicodeTranslateError',
'UnicodeWarning',
'UserWarning',
'ValueError',
'Warning',
'WindowsError',
'ZeroDivisionError',
'__IPYTHON__',
'__build_class__',
'__debug__',
'__doc__',
'__import__',
'__loader__',
3
'__name__',
'__package__',
'__spec__',
'abs',
'all',
'any',
'ascii',
'bin',
'bool',
'breakpoint',
'bytearray',
'bytes',
'callable',
'chr',
'classmethod',
'compile',
'complex',
'copyright',
'credits',
'delattr',
'dict',
'dir',
'display',
'divmod',
'enumerate',
'eval',
'exec',
'filter',
'float',
'format',
'frozenset',
'get_ipython',
'getattr',
'globals',
'hasattr',
'hash',
'help',
'hex',
'id',
'input',
'int',
'isinstance',
'issubclass',
'iter',
'len',
'license',
'list',
4
'locals',
'map',
'max',
'memoryview',
'min',
'next',
'object',
'oct',
'open',
'ord',
'pow',
'print',
'property',
'range',
'repr',
'reversed',
'round',
'set',
'setattr',
'slice',
'sorted',
'staticmethod',
'str',
'sum',
'super',
'tuple',
'type',
'vars',
'zip']
[2]: x = 20
print ('Inteiro', x, '\n')
print ('Vírgula Flutuante convertida de inteiro', float(x), '\n')
x=2.00034567
print ('Vírgula Flutuante', x, '\n')
x = complex(2 ,3)
print ('Complexo', x, '\n')
x = "a"
print ('Caracter', x,'\n')
x = "Estatística"
print ('Texto',x, '\n')
print ('Texto caracter na 2º posiçao',x[1])
5
Inteiro 20
Complexo (2+3j)
Caracter a
Texto Estatística
Arithmetics
‘+’ operador da adição
‘-’ operador da subtração
’*’ operador da multiplicação
‘/’ operador da divisão
‘%’ operador de módulo
‘//’ operador de divisão e conversão em inteiro aproximado (Floor)
** operador de potência (2 ** 3 -> 23)
20
6
[4]: a=5; b=4
print (a/b)
1.25
625
Relacionais
Relational
‘==’ operador de comparação de equivalência
‘!=’ operador da comparação de não equivalência
‘<’ operador menor que
‘>’ operador maior que
‘<=’ operador menor ou igual que
‘>=’ operador maior ou igual que
[10]: z=1
z == 1
[10]: True
[12]: z=1
z != 1
[12]: False
[14]: z=0
z < 1
[14]: True
7
[24]: z=1
z > 1
[24]: False
[17]: z=1
z <= 1
[17]: True
[26]: z=1
z >= 1
[26]: True
[21]: True
[25]: x=3
y=2
z=1
z > y or z<x
[25]: 1
[28]: y=2
z=1
not (z > y)
[28]: True
[30]: x=3
y=2
z=1
not(z > y and z>x)
8
[30]: True
[33]: idade = 22
idade > 21 and idade < 25
[33]: True
[35]: # OU, em alternativa o python permite escrever a condição anterior desta forma
idade = 22
21 < idade < 25
idade > 21 or idade < 25
[35]: True
E: 1
9
0b1
Ou: 1
0b1
Xor: 0
0b0
Negação: 0
0b0
0b100
0b1
[57]: a=1
print(a)
-1
10
2 4.3 Funções
#int('1110',2)
[64]: 98
[66]: chr(65)
11
[66]: 'A'
3.0.3 Simplificação:
3.0.4 Mathematical Simplification:
round() Arredonda o número com x casa decimais round(x, 2)
complex() Definição de um número complexo
abs() Obter o valor absoluto, caso complexo devolve a parte real
divmod(x,y) Devolve o quociente e o resto
isinstance(x,classe) Devolve verdadeiro caso o valor pertença a uma classe
pow(x,potência, terceirovalor para obter o módulo do resultado) Devolve a solução da
potência x elevado y
range(x, y, z) constrói um conjunto de números entre x e y com um salto de z
[71]: # round()
print ("round: ", round(5.6231))
print ("round 2 casas: ",round(4.55892, 2))
# complex()
c = complex (5.6231, 2)
print ("complex(): ", c)
# abs()
print ("abs(): ",abs(c))
# divmod(x,y)
print ("divmod(): ",divmod(5,2))
#isinstance(x,classe)
print ("isinstance(): ",isinstance(5,int))
print ("isinstance(): ",isinstance(5.0,int))
print ("isinstance(): ", isinstance(5,(int, float)))
# pow(x,y)
print ("pow(): ",pow(5,2))
# pow(x,y, z)
print ("pow(): ",pow(2,2,6))
# range(x,y, z)
print(list(range(5, 25, 5)))
round: 6
round 2 casas: 4.56
12
complex(): (5.6231+2j)
abs(): 5.968186794161189
divmod(): (2, 1)
isinstance(): True
isinstance(): False
isinstance(): True
pow(): 25
pow(): 4
[5, 10, 15, 20]
Introduza a idade: 15
idadecom30 = int(idade) + 30
A sua idade é: 15
A sua idade daqui a 30 anos: 45
[75]: type(idade)
[75]: str
print(programming_language, type(programming_language))
13
3.1 4.5 Decisão
3.2 4.5 Decision
3.2.1 if-then (com alternativa vazia)
3.2.2 if-then-else
[5]: a = int(input("1.º Valor:"))
b = int(input("2.º Valor:"))
if a > b:
max = a
print("O 1.º valor é o maior")
else:
max = b
print("O 2.º valor é o maior")
print("O valor maior é = " + str(max))
1.º Valor: 12
2.º Valor: 1
O 1.º valor é o maior
O valor maior é = 12
1.º Valor: 12
14
2.º Valor: 12
3.º Valor 12
O maior valor de 12, 12, 12 é 12
Nome: António
Horas extras: 12
Horas em falta
Horas em falta: 3
hIndice 10.0
O premio para o António é 100
count = 12
while (count > -1):
print ('Contador:', count)
count -= 1
15
Contador: 12
Contador: 11
Contador: 10
Contador: 9
Contador: 8
Contador: 7
Contador: 6
Contador: 5
Contador: 4
Contador: 3
Contador: 2
Contador: 1
Contador: 0
Terminou ciclo!
Current Letter : P
Current Letter : y
Current Letter : t
Current Letter : h
Current Letter : o
Current Letter : n
Terminou ciclo!
16
3
5
7
9
11
13
15
17
19
21
23
25
27
29
31
33
35
37
39
41
43
45
47
49
51
53
55
57
59
61
63
65
67
69
71
73
75
77
79
81
83
85
87
89
91
93
95
97
17
99
Terminou ciclo!
i = 2
while(i < 100):
j = 2
while(j <= (i/j)):
if not(i%j): break
j = j + 1
if (j > i/j) : print( i, " é primo!")
i = i + 1
2 é primo!
3 é primo!
5 é primo!
7 é primo!
11 é primo!
13 é primo!
17 é primo!
19 é primo!
23 é primo!
29 é primo!
31 é primo!
37 é primo!
41 é primo!
43 é primo!
47 é primo!
53 é primo!
59 é primo!
61 é primo!
67 é primo!
71 é primo!
73 é primo!
79 é primo!
83 é primo!
89 é primo!
97 é primo!
Terminou ciclo!
18
[16]: #Os ciclos podem ser interrompidos com a instrução 'break'
var = 10 # 2º exemplo
while var > 0:
print( 'Valor da variável atual :', var)
var -= 1
if var == 5:
break
Letra atual : P
Letra atual : y
Letra atual : t
Valor da variável atual : 10
Valor da variável atual : 9
Valor da variável atual : 8
Valor da variável atual : 7
Valor da variável atual : 6
Terminou ciclo!
var = 10 # 2º exemplo
while var > 0:
var = var -1
if var == 5:
continue
print( 'Valor da variável atual :', var)
print ("Terminou ciclo!")
Letra atual : P
Letra atual : y
Letra atual : t
Letra atual : o
Letra atual : n
Valor da variável atual : 9
Valor da variável atual : 8
19
Valor da variável atual : 7
Valor da variável atual : 6
Valor da variável atual : 4
Valor da variável atual : 3
Valor da variável atual : 2
Valor da variável atual : 1
Valor da variável atual : 0
Terminou ciclo!
20
return n * fatorial(n - 1)
fatorial(3)
[19]: 6
3 * factorial(2)
3 * (2 * factorial(1))
3 * (2 * (1 * factorial(0)))
3 * (2 * (1 * 1))
3 * (2 * 1)
3*2
6
As funções recursivas são constituídas por duas partes distintas:
1. Uma parte básica, também chamada caso terminal, a qual constitui a versão mais simples
do problema para o qual a solução é conhecida. No caso da função fatorial esta parte corre-
sponde ao caso em que n = 0.
2. Uma parte recursiva, também chamada caso geral, na qual o problema é definido em termos
de uma versão mais simples de si próprio. No caso da função fatorial, isto corresponde ao
caso em que n > 0.
O algoritmo apresentado para o cálculo do máximo divisor comum afirma que:
1. O máximo divisor comum entre um número e zero é o próprio número.
2. Quando dividimos um número por um menor, o máximo divisor comum entre o resto da
divisão e o divisor é o mesmo que o máximo divisor comum entre o dividendo e o divisor.
Este algoritmo corresponde claramente uma definição recursiva. Podemos aplicar directamente o
algoritmo, dado origem à seguinte função que calcula o máximo divisor comum:
The recursive functions are composed by two parts:
1. Basic part or terminal case which is the simple known version of the solution. In this case of
factorial it’s when n=0.
2. The other part is the recursive or general case which the simplest version of itself. In this
case is when n > 0.
The algorithm proposed to obtain the common maximum divisor (c.m.d.) states that:
1. The c.m.d. between a number and zero is the number itself.
2. When we divide the number by another and it’s minor, the c.d.m between the remain of the
division by it’s divider is the same of the c.d.m. of the dividend and the divisor.
The described algorithm it’s clearly a recursive definition. Thus, we can apply directly the logic to
the following function of c.d..m.:
21
[1]: def mdc (m, n):
if n == 0:
return m
else:
return mdc(n, m % n)
#Programa mdc
print('Introduza o 1º número:')
a=int(input())
print('Introduza o 2º número:')
b=int(input())
m_d_c = mdc(int(a),int(b))
print("máximo divisor comum é:" + str(m_d_c))
Introduza o 1º número:
7
Introduza o 2º número:
3
máximo divisor comum é:1
22
Na estrutura tuplo é possível guardar dados de vários tipo no mesmo.
Note-se que o último tuplo apenas tem um elemento. A definição sintática de um tuplo exige que
um tuplo com um elemento contenha esse elemento seguido de uma vírgula, pelo que (1) não
corresponde a um tuplo em Python, mas sim (1, ).
Os tuplos são imutáveis pelo que não é possível alterar os valores dos seus elementos.
When the tuple () hasn’t elements it’s called empty tuple.
The following entities represent tuples in Python:
(1, 2, “three”)
(2, True)
(1, ).
In the tuple striucture it’spossible to store values from different types.
Note that the last example only has on element. According to the syntax of the tuple when it has
one element only it has to be with a comma. thus (1) doesn’t represent a tuple it should be like (1,
).
The tuples are immutable so its values cannot be changed.
10
10
Para acedermos a um elemento de um tuplo é necessário indicar o seu índice. Nota: os índices
começam em (0. . . n), no caso de índice positivo ou (n..0) no caso de índice negativo.
To get access to an element of a tuple we need its index. Note: The index begin with (0. . . n) when
it is positive or (n..0) in case of negative.
[4]: print(notas[0])
print(notas[3])
15
12
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-4-747a74b5607c> in <module>
3 print(notas[3])
4
23
----> 5 print(notas[6]) # IndexError: tuple index out of range - o índice 6 não␣
,→existe!!!
[5]: #quando se trata do índice negativo, obtemos o elemento do final do tuplo para o␣
,→início
print(notas[-5])
print(notas[-1])
15
12
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-5-c1dbc09e5d5f> in <module>
5 print(notas[-1])
6
----> 7 print(notas[-6]) # IndexError: tuple index out of range - o índice -6 não␣
,→existe!!!
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-17-48a8c6517cdc> in <module>
24
8
9 # não é possível atribuir valores aos elementos dos tuplos
---> 10 a[0] [1] = 4 #'tuple' object does not support item assignment
[18]: a = (1,2,3)
b= (4,5,6)
print (a+b)
(1, 2, 3, 4, 5, 6)
[22]: c = a+b
c[3:5]
[22]: (4, 5)
[89]: a*3
[89]: (1, 2, 3, 1, 2, 3, 1, 2, 3)
[25]: print (3 in a)
print (4 in a)
25
True
False
[26]: print(len(a))
(1, 2)
(3,)
(1, 2, 3)
Embora não seja possível alterar o valor dos elementos, o conteúdo da variável a é
substituído pelo a+b
Besides the immutability of the tuples we can substitute the content of a previous tuple
variable with another set of elements a+b has follow:
[20]: a = a+b
print(a)
(1, 2, 3, 4, 5, 6)
book=(1,"nome", "tema")
ind,tit,tema=book
tit
[8]: 'nome'
Iteração em tuplos
Problema:
Elabore um programa em python que some o valor dos elementos de um tuplo
26
it, soma=0, 0
Soma: 184
for el in t1:
ifel[0]>vint
soma+=el
print("Soma:", soma)
Soma: 184
for el in t1:
soma+=el
print("Soma:", soma)
Soma: 2500
27
<expressão>::= <Tuplo> | <Range()> | <dicionário> | <lista> <div class="alert alert-block alert-
success">
Syntax:
<structure "List"> ::= [] | [<elemento>]
<elementos> ::= [<element> ] | [<element>, <elements>]
<element>::= <expression>
<expression>::= <Tuple> | <Range()> | <dictionary> | <list> A lista[] tem o nome de lista vazia.
As seguintes entidades representam listas em Python [1, 2, 3], [2, (1, 2)], [’a’]. Em oposição aos
tuplos, uma lista de um elemento não contém a virgula ex.:(1,).
Tal como no caso dos tuplos, os elementos de uma lista podem ser, por sua vez, outras listas, pelo
que a seguinte entidade ´e uma lista em Python [1, [2], [[3]]].
some list lista[] is called empty list.
The following lements are lists in Python [1, 2, 3], [2, (1, 2)], [’a’]. In lists of one element does not
require a comma like the tuples eg.:(1,).
As in Tuples the elements could be another lists like this list in Python [1, [2], [[3]]].
28
[29]: lst1 = [1, 2, 3]
lst2 = [[4, 5]]
lst = lst1 + lst2
print(lst)
print(len(lst))
print(lst[3])
print(lst[3][0])
lst[2] = 'a'
print(lst)
lst.remove("a")
print(lst)
lst1.sort()
print(lst1)
del(lst[1])
print(lst)
del(lst[1:])
print(lst)
1 in lst
lst.append(2)
print(lst)
[31]: #Definição de lista l1, este identificador l1 passa a apontar no endereço da␣
,→memória para os dados[1, 2, 3, 4]
l1 = [1, 2, 3, 4]
#Definição de lista l2 = L1, estes identificadores passam a apontar no endereço␣
,→da memória para os dados[1, 2, 3, 4]
l2 = l1
print(l1)
print(l2)
# Ao alterarmos o valor do segundo elemento da lista para l2 e uma vez que l1␣
,→aponta para o mesmo endereço de l2, temos:
l2[1] = 'a'
print(l2)
print(l1)
#l1 deixa de apontar para o endereço de memória da lista e passa a apontar para␣
,→o endereço onde foi guardado o valor 10
l1=10
29
print(l1)
print(l2)
[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 'a', 3, 4]
[1, 'a', 3, 4]
10
[1, 'a', 3, 4]
30
[11]: dict1 = {'a':3, 'b':2, 'c':4}
dictMat = {'Mat1':{Dens:1.7, Fragi:0.02, p3:'A'}, 'Mat2':{Dens:2.2, Fragi:0.22,␣
,→p3:'C'}
dens=2.0=>Material2
dict2 = {'9':12}
dict3 = {1:'c', 'b':4} #Nota as chaves e os valores de um dicionário podem ser␣
,→de tipos diferentes.
dict4 = {chr(56+1):12}
dict5 = {(1, 2):'amarelo', (2, 1):'azul'}
dict6 = { '9':12, 1:2}
print(dict1)
print(dict2)
print(dict2['9'])
print(dict3)
print(dict3[1])
print(dict3['b'])
print(dict4)
print(dict5)
print(dict5[(1,2)])
print(dict6)
31
Operação Sintaxe valor
copy() <dicionario>.copy() Cria uma cópia do dicionário
fromkeys() <dicionario>.fromkeys(<list>) Cria um dicionário de uma sequência de
chaves e valores
get() <dicionario>.get(<key>) Obtêm o valor que correponde à chave
has_key() <dicionario>.has_key(<key>) Verifica se a chave existe (Booleano)
items() <dicionario>.items() Obtêm os items, em lista, do dicionário
keys() <dicionario>.keys() Obtêm as chaves, em lista, do dicionário
values() <dicionario>.values() Obtêm os valores, em lista, do dicionário
update() <dicionario>.update(<dicionário2>) Acrecenta o dicionário2 ao dicionário
[14]: print(len(dict1))
print(len(dict2))
del(dict1[ 'c'])
print(dict1.items())
print(dict1.keys())
print(dict1.values())
print(dict2.fromkeys([1,2,3,4]))
dict2[9]=12
print(dict2)
3
2
dict_items([('a', 3), ('b', 2)])
dict_keys(['a', 'b'])
dict_values([3, 2])
{1: None, 2: None, 3: None, 4: None}
{'9': 12, 9: 12}
4 4.8 Ficheiros
https://docs.python.org/3/tutorial/inputoutput.html (7.2. Reading and Writing Files)
32
4.1.1 Tipos de ficheiros
• Binários
• Texto
File is a structured type of information composed by a sequence of elements of the same type of
data which is used to store permanently in the secondary memory.
To process files we need a reference in the python context.
The reading access to the file data is allways sequencial: line by line until the end of the file (EOF)or
character by character until the end of the line (EOL).
As we read a book line by line sequentilly.
The kind of access that ww’ll perform with the file is define in the open of the file:
• Read
33
• Write
– Write and Rewrite (Clear the previous content of the file)
– Add after the previous content of the file (Append)
• Read and Write
Modo Ação
‘r’ abre o ficheiro para leitura (default)
‘w’ abre o ficheiro para reescrita, apaga o conteúdo anterior
‘x’ Cria o ficheiro para escrita, falha se o ficheiro já existir
‘a’ abre o ficheiro para escrita após o conteúdo anterior
‘b’ abre o ficheiro em modo binário
‘t’ abre o ficheiro em modo texto (default)
‘+’ abre o ficheiro para leitura/escrita
buffering::= <valor>
valor::= {0,1, \>0} 0 - desativado, apenas em modo binário; 1 - Ativo buffer de uma linha para o
encoding::= <tipo de codificação> Exemplo: UTF8, entre outros
errors::= <Tipo de tratamento do erro>
Tipo de tratamento do erro::= {'strict', 'ignore', 'replace', 'surrogateescape', 'xmlcharrefrepl
surrogateescape: Substituí erros de byte code por carateres de escape UTF. (Apenas na escr
xmlcharrefreplace: Substituí erros de xml por carateres de erro xml. (Apenas na escrita de f
namereplace: Carateres não reconhecidos são substituídos por "\N{..." (Apenas na escrita de
newline (apenas para ficheios do tipo texto)::=
Valoresnewline ::= {None, '', '\n', '\r', and '\r\n'}.
34
4.1.3 Ler um ficheiro de Texto caso 1
4.1.4 Read from file - Case 1
[13]: #Abrir o ficheiro para leitura e obter referência no python (f)
f = open("voostap.csv", "r")
lin=[]
#Percorrer linha a linha
while(f.readline()):
lin.append(line)
#for line in f:
# lin.append(line)
#Obter a separação pelo ;
passageiros=lin[1].split(";")
print(passageiros[0])
print(passageiros[1])
#Fechar o ficheiro
f.close()
1500
11/12/2020
f.close()
#voostap
Data
1500
03/12/2020
1000
04/12/2020
35
1500
05/12/2020
3000
06/12/2020
1500
07/12/2020
1500
08/12/2020
4500
09/12/2020
200
10/12/2020
1500
11/12/2020
1500
03/12/2020
36
4.1.8 Ler ficheiros de texto separados por vírgula (csv)
4.1.9 Read text file type (.csv)
lin=[]
37
for el in range(1,100):
lin.append( r.randrange(90, 180))
#print (lin)
#Percorrer linha a linha
for line in lin:
strtowrite=str(line) + ", " + str(dt.datetime.now().date()) + "\n"
#print(strtowrite)
f.write(strtowrite)
#Fechar o ficheiro, principalmente para abrir de outro modo
f.close()
173 - 2020-12-03
160 - 2020-12-03
133 - 2020-12-03
173 - 2020-12-03
174 - 2020-12-03
130 - 2020-12-03
174 - 2020-12-03
111 - 2020-12-03
135 - 2020-12-03
38
152 - 2020-12-03
116 - 2020-12-03
175 - 2020-12-03
170 - 2020-12-03
175 - 2020-12-03
112 - 2020-12-03
157 - 2020-12-03
123 - 2020-12-03
113 - 2020-12-03
176 - 2020-12-03
164 - 2020-12-03
116 - 2020-12-03
177 - 2020-12-03
161 - 2020-12-03
142 - 2020-12-03
96 - 2020-12-03
39
145 - 2020-12-03
157 - 2020-12-03
98 - 2020-12-03
172 - 2020-12-03
101 - 2020-12-03
135 - 2020-12-03
132 - 2020-12-03
176 - 2020-12-03
129 - 2020-12-03
99 - 2020-12-03
169 - 2020-12-03
158 - 2020-12-03
108 - 2020-12-03
148 - 2020-12-03
99 - 2020-12-03
113 - 2020-12-03
40
158 - 2020-12-03
119 - 2020-12-03
135 - 2020-12-03
129 - 2020-12-03
98 - 2020-12-03
102 - 2020-12-03
101 - 2020-12-03
166 - 2020-12-03
162 - 2020-12-03
128 - 2020-12-03
111 - 2020-12-03
115 - 2020-12-03
98 - 2020-12-03
114 - 2020-12-03
94 - 2020-12-03
129 - 2020-12-03
41
114 - 2020-12-03
96 - 2020-12-03
156 - 2020-12-03
99 - 2020-12-03
94 - 2020-12-03
96 - 2020-12-03
154 - 2020-12-03
145 - 2020-12-03
163 - 2020-12-03
105 - 2020-12-03
91 - 2020-12-03
106 - 2020-12-03
113 - 2020-12-03
109 - 2020-12-03
153 - 2020-12-03
160 - 2020-12-03
42
109 - 2020-12-03
138 - 2020-12-03
96 - 2020-12-03
168 - 2020-12-03
130 - 2020-12-03
162 - 2020-12-03
98 - 2020-12-03
134 - 2020-12-03
139 - 2020-12-03
128 - 2020-12-03
134 - 2020-12-03
136 - 2020-12-03
177 - 2020-12-03
123 - 2020-12-03
112 - 2020-12-03
119 - 2020-12-03
43
134 - 2020-12-03
141 - 2020-12-03
127 - 2020-12-03
131 - 2020-12-03
124 - 2020-12-03
134 - 2020-12-03
126 - 2020-12-03
116 - 2020-12-03
130 - 2020-12-03
140 - 2020-12-03
5 EXERCÍCIOS
6 EXERCISES
1. Escreva um programa em Python que pede ao utilizador que lhe forneça um inteiro correspon-
dente a um número de segundos e que calcula o número de dias correspondentes a esse número de
segundos. O número de dias é fornecido como um real. O programa termina quando o utilizador
fornece um número negativo. O seu programa deve possibilitar a seguinte interacção:
Escreva um número de segundos (um número negativo para terminar) ? 45 O número de dias
44
correspondente é 0.0005208333333333333 Escreva um número de segundos (um número negativo
para terminar) ? 6654441 O número de dias correspondente é 77.01899305555555 Escreva um
número de segundos (um número negativo para terminar) ? -1 »>
Escreva e execute o código em python na célula seguinte:2. Escreva um programa em Python que
lé 100 números e que diz qual o maior, o menor e a média dos números lidos.
Escreva e execute o código em python na célula seguinte:3. A conversão de temperatura em graus
Farenheit (F) para graus centígrados (C) e o contrário caso o utilizador opte por converter C em F.
Para tal, deve mostrar no ecrã as opções 1. F->C e 2 C->F, sendo que a conversão de C->F é dada
através da expressão:
C = 5 / 9 * (F-32).
Escreva e execute o código em python na célula seguinte:4. Escreva um programa em Python que
lê uma sequência de dígitos, sendo cada um do dígitos fornecido numa linha separada, e calcula
o número inteiro composto por esses dígitos, pela ordem fornecida. Para terminar a sequência de
dígitos é fornecido ao programa o inteiro 1.
Por exemplo, lendo os dígitos 1 5 4 5 8 -1, o programa calcula o número inteiro 15458.
Escreva e execute o código em python na célula seguinte:5. Escreva um programa em Python que
lê um número inteiro positivo e calcula a soma dos seus dígitos pares. Por exemplo, Escreva um
inteiro positivo ? 234567 Soma dos dígitos pares: 12
Escreva e execute o código em python na célula seguinte:6. Escreva um programa em Python que
lê um número inteiro positivo na base binária e produz o número correspondente em decimal.
Por exemplo,
Escreva um inteiro positivo na base dez ? 1111 O número em Decimal é 15 (10)
Escreva e execute o código em python na célula seguinte:
45
Escreva e execute o código em python na célula seguinte:10. Um número inteiro, n, diz-se triangu-
lar se existir um inteiro m tal que n = 1 + 2 + ... +(m1) + m. Escreva uma função chamada triangular
que recebe um número inteiro positivo n, e cujo valor é True apenas se o número for triangular. No
caso de n ser 0 deverá devolver False. Por exemplo, »> triangular(6) True »> triangular(8) False.
Escreva e execute o código em python na célula seguinte:
46
Por exemplo, »> juntos((1, 2, 2, 3, 4, 4)) 2 »> juntos((1, 2, 2, 3, 4)) 1
Escreva e execute o código em python na célula seguinte:19. Escreva uma função em Python
chamada juntao rdenados, querecebedoistuploscontendointeiros, ordenadosporordemcrescente, edevolveumtuplotambm
»> juntao rdenados((2, 34, 200, 210), (1, 23))(1, 2, 23, 34, 200, 210)
Escreva e execute o código em python na célula seguinte:
47
Escreva e execute o código em python na célula seguinte:27. Escreva uma função chamada veri-
ficaTiro que recebe um dicionário, tabuleiro que contêm as posições dos barcos de guerra, e um
tuplo correspondente a coordenadas (colunas de A a J e linhas de 1 a 10), tiroparaacertar, e de-
volve uma das seguintes respostas em formato de tuplo ("Água", "Porta Aviões":5, "Cruzador":4,
"Contratorpedeiro":3, "Rebocador":2) em que o número corresponde à capacidade de suporte de
tiros que ainda tem a embarcação.
Assumindo que: Porta aviões (5 espaços) está na horizontal inicia em B3 Cruzador (4 espaços) está
na vertical inicia em F2 Contratorpedeiro (3 espaços) está na vertical e inicia em B5 Rebocador (2
espaços) está na horizontal e inicia em I7
Por exemplo, tabuleiro1 = "Porta aviões" : "B3", "Cruzador" : F2, "Contratorpedeiro": "B5", "Rebo-
cador" : "I7" »> verificaTiro(tabuleiro1, (A,2)) ("Água", )
Escreva e execute o código em python na célula seguinte:
48