0% acharam este documento útil (0 voto)
13 visualizações

Python

Enviado por

tauanagoulart77
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
13 visualizações

Python

Enviado por

tauanagoulart77
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 57

Formação Emprego + Digital

Nº Processo 00007/D+/23

UFCD 9190
Introdução à programação aplicada à cibersegurança
2024
JOSÉ SILVA
05/04/2024
TLM:910 476 171
EMAIL: [email protected]
Introdução ao python
2024 – José Silva
Níveis das linguagens de programação
As linguagens de programação podem ser categorizadas em diferentes níveis de abstração, cada uma com as suas características
e aplicações:

1. Linguagens de baixo nível:


Linguagem de máquina: A linguagem nativa do processador, composta por instruções binárias (0s e 1s). É complexa e difícil de ser
utilizada por humanos;
Assembly: Uma linguagem simbólica que representa as instruções de máquina de forma mais legível. É mais fácil de aprender do
que a linguagem de máquina e exige conhecimento detalhado do hardware.

2. Linguagens de nível médio:


C: Uma linguagem procedural,(baseada em procedimentos, que são blocos de código que definem uma sequência de instrucções
a serem executadas), poderosa que oferece controlo preciso sobre o hardware e a memória. É utilizada para desenvolver sistemas
embedded, software de baixo nível (drivers) e jogos;
C++: Uma linguagem orientada para objectos, (baseada em objectos que são entidades que combinam dados e métodos. Os
dados são armazenados em atributos e os métodos definem as acções que o objecto pode realizar), que possui recursos
avançados legacy, polimorfismo e encapsulamento; É utilizada para desenvolver diversos tipos de software, como jogos ,
aplicações, sistemas operativos, etc..

3. Linguagens de alto nível:


Java: Uma linguagem orientada para objectos robusta e multiplataforma, popular para desenvolvimento web, aplicações
empresariais e mobile;
Python: Uma linguagem versátil e fácil de aprender, utilizada para web development, análise de dados, machine learning e
scripting;
JavaScript: Uma linguagem essencial para o desenvolvimento web front-end, que permite criar interfaces interactivas e dinâmicas.
4. Linguagens de quarta geração (4GL):
SQL: Uma linguagem declarativa (concentra-se no que fazer e não em como fazer. Ou seja, o programador descreve o que
deseja que o programa faça e a linguagem encarrega-se de determinar como fazê-lo), para gerir dados em bases de dados. É
utilizada para realizar consultas, inserir, actualizar e excluir dados;
RPG: Uma linguagem procedural para desenvolver aplicações de negócios, especialmente em sistemas financeiros.

5. Linguagens de quinta geração (5GL):


Prolog: Uma linguagem lógica (um sistema formal que define um conjunto de símbolos e regras para a construção de
fórmulas e a derivação de conclusões a partir de premissas - as linguagens lógicas são utilizadas para representar e manipular
conhecimento de forma precisa e rigorosa e são a base para sistemas de inteligência artificial), utilizada para programação
declarativa e inteligência artificial;
Lisp: Uma linguagem funcional (baseada em funções - as funções são unidades de código auto-contido que mapeiam um
conjunto de entradas para um conjunto de saídas), focada na manipulação de listas e símbolos, utilizada em pesquisa e
desenvolvimento de software.

Considerações:
A escolha da linguagem de programação ideal depende do contexto e das necessidades do projecto. Devem também ser
considerados factores como o desempenho, portabilidade, facilidade de aprendizagem e comunidade de programadores. É
importante ter o conhecimento de diferentes níveis de abstracção para escolher a linguagem mais adequada para cada
situação.

A cibersegurança é um campo amplo que abrange diversas áreas, desde a proteção de dados e sistemas até à investigação de
crimes informáticos. As linguagens de programação desempenham um papel fundamental em todas estas áreas, pois
permitem automatizar tarefas, analisar dados e desenvolver ferramentas de segurança.
As linguagens de programação mais importantes em cibersegurança são:

1. Python:
É uma linguagem versátil e fácil de aprender, com uma comunidade activa e ampla gama de bibliotecas para segurança;
É utilizada para automatizar tarefas, realizar análises de malware, escrever scripts de pentest e desenvolver ferramentas de
segurança.

2. C/C++:
São linguagens poderosas que oferecem controle preciso sobre o hardware e a memória;
São utilizadas para desenvolver ferramentas de baixo nível, como firewalls, sistemas de detecção de intrusão (IDS) e software de
análise forense.

3. JavaScript:
É a linguagem essencial para o desenvolvimento dos front-ends da web, mas também pode ser utilizada para desenvolver
ferramentas de segurança web, como scanners de vulnerabilidade e crawlers.

4. Bash:
É a linguagem de script padrão do Unix/Linux, utilizada para automatizar tarefas de segurança, como a criação de scripts de
análise de logs e configuração de firewalls.

5. SQL:
É a linguagem para gerenciar dados em bancos de dados, utilizada para analisar dados de segurança, como logs de eventos e
registros de auditoria.
O que é o Python?
O Python é uma das linguagens de programação mais populares do mundo. Criado no início da década
de 1990, o Python pode ser utilizado em várias aplicações, desde automatizar tarefas repetitivas,
escrever aplicações web ou até construir modelos de machine learning para implementar redes neurais.
Investigadores, matemáticos e cientistas de dados, em particular, utilizam o Python por causa de sua
sintaxe rica e fácil de entender e da ampla gama de pacotes de código aberto disponíveis. Os pacotes
são bibliotecas de código partilhado que estão disponíveis gratuitamente para qualquer utilizador.

O Python tem uma sintaxe simples e fácil de aprender, que enfatiza a legibilidade. Aplicações escritas em
Python podem ser executados em praticamente qualquer computador, incluindo aqueles que executam
Windows, macOS e distribuições populares do Linux. O ecossistema contém também um rico conjunto
de ferramentas de desenvolvimento para escrever, depurar e publicar aplicações Python.

Finalmente, o Python é suportado por uma comunidade activa de utilizadores que ajuda novos
programadores a aprender a maneira Pythonic, onde não apenas se obtém a sintaxe certa, mas se usa a
linguagem da maneira pretendida.
Ao contrário das linguagens compiladas (o código fonte escrito pelo programador é convertido em linguagem de máquina antes de ser executado pelo
computador) como o C++, o Python usa uma abordagem de interpretação para traduzir programação em código de máquina:

Escrever código Python: Escrever código Python usando um editor de texto ou IDE (Integrated Development Environment). Este código é legível por
humanos e concentra-se na lógica e funcionalidade do programa;

2. Executando o código: Quando executamos o programa Python, o interpretador Python entra em acção. O interpretador é um programa de software que
entende sintaxe e semântica Python;

3. Análise Lexical (Tokenização): O interpretador primeiro executa a análise lexical, que divide o código em unidades menores chamadas tokens. Estes
tokens podem ser palavras-chave (como ‘if', ‘to'), identificadores (nomes de variáveis, nomes de funções), operadores (+, -, *), literais (strings, números) etc.;

4. Análise de sintaxe (Parsing): O interpretador realiza a análise de sintaxe. Recolhe o fluxo de tokens e verifica se seguem as regras gramaticais da
linguagem Python. Isto garante que a estrutura do código está correcta e segue a sintaxe esperada;

5. Geração de código de bytes: Assumindo que a sintaxe é válida, o interpretador gera bytecode. Bytecode é uma representação intermédia de baixo nível
do programa Python. Não é um código de máquina específico de um processador específico, mas uma versão mais compacta e optimizada do código
original;

6. Python Virtual Machine (PVM): O interpretador Python interage com a Máquina Virtual Python (PVM). A PVM é uma camada de software que actua
como um ambiente de Runtime para executar bytecode Python; Um ambiente runtime, também conhecido como ambiente de execução, é o software que
permite a um programa ser executado num sistema operativo específico. Fornece os recursos e serviços necessários para que o programa funcione
correctamente, como gestão de memória, interpretação de código e acesso a bibliotecas;

7. Just-in-Time (JIT) Compilation (Opcional): Em algumas implementações Python, pode ser requerido um compilador Just-in-Time (JIT). O compilador JIT
pode traduzir dinamicamente secções de bytecode executadas com frequência em código de máquina específico para a arquitectura do processador, para
um desempenho ainda mais rápido;

8. Execução de código de máquina: Finalmente, a PVM interpreta as instruções de bytecode uma a uma. Faz a tradução dessas instruções de bytecode para
código de máquina que o hardware subjacente (CPU) entende. O código da máquina é então executado pelo CPU, executando as operações programadas
no código Python.
O que são variáveis em Python?
Variáveis são nomes atribuídos a dados que precisamos armazenar e manipular em programas. Por
exemplo, suponha que um programa precisa armazenar a idade de um utilizador. Para fazer isto,
podemos nomear esses dados userAge e definir a variável userAge utilizando a seguinte instrução:

userAge = 0

Depois de definirmos a variável userAge, o programa irá alocar uma determinada área do espaço de
armazenamento do seu computador para guardar estes dados. Podemos então aceder e modificar os
dados, referindo-nos a eles pelo seu nome, ou seja, userAge.

Sempre que declaramos uma nova variável, temos de lhe dar um valor inicial. Neste exemplo, demos o
valor 0. Podemos alterar este valor no nosso programa mais tarde. Também podemos definir várias
variáveis de uma só vez. Basta escrever userAge, userName = 30, ‘Peter’.

É equivalente a:
userAge = 30
userName = ‘Peter’
Nomear uma variável

Um nome de variável em Python só pode conter letras (a - z, A - B), números ou underscore ( _ ). No


entanto, o primeiro caractere não pode ser um número. Assim, podemos nomear variáveis como:
userName, user_name ou userName2 mas não 2userName.

Existem também alg umas palavras reservadas que não podemos utilizar como um nome de variável
porque já têm significados pré-atribuídos em Python. Estas palavras reservadas são palavras como
print, input, if, while etc.

Finalmente, os nomes das variáveis diferenciam maiúsculas de minúsculas. username não é o mesmo
que userName. Existem duas convenções ao nomear uma variável em Python. Podemos usar a notação
Camel case ou utilizar underscores. Camel case é a prática de escrever palavras compostas com mistura
de maiscúlas e minúsculas (e.g.istoEumaVariavel). Alternativamente, outra prática comum é utilizar
underscores ( _ ) para separar as palavras. Se preferirmos, podemos nomear as variáveis como:
isto_e_uma_variavel.
O sinal de atribuição
Note que o sinal = na instrução userAge = 0 tem um significado diferente do sinal = que
aprendemos em Matemática. Em programação, o sinal = é conhecido como um sinal de
atribuição. Isto significa que estamos a atribuir o valor do lado direito do sinal = à variável à
esquerda. Ou seja userAge = 0 será:

userAge <- 0.

As afirmações x = y e y = x têm significados muito diferentes em programação. Um exemplo


provavelmente esclarecerá isto.
Digite o seguinte código no seu editor e salve-o:
x = 5
y = 10
x = y
print ("x = ", x)
print ("y = ", y)
Agora execute o programa. Deve obter:

x = 10
y = 10

Embora x tenha um valor inicial de 5 (declarado na primeira linha), a terceira linha x = y atribui o valor
de y a x (x <- y), alterando assim o valor de x para 10 enquanto o valor de y permanece inalterado.

De seguida, modifique o programa alterando apenas uma instrução: altere a terceira linha de x = y para
y = x . Matematicamente, x = y e y = x têm o mesmo significado. No entanto, em programação tal não
sucede.

Execute o segundo programa. Agora deve obter:


x=5
y=5

Podemos ver que, neste exemplo, o valor x permanece como 5, mas o valor de y é alterado para 5. Isto
sucede porque a afirmação y = x atribui o valor de x a y (y <- x). y torna-se 5 enquanto x permanece
inalterado como 5.
Operadores Básicos

Além de atribuir a uma variável um valor inicial, também podemos realizar as operações matemáticas
normais com variáveis. Os operadores básicos em Python são + , - , /, //, % e * que representam
adicção, subtracção, multiplicação, divisão, floor division, módulo e expoente, respectivamente.

Exemplos:

Supondo que x = 5 e y = 2

Adicção: x + y = 7
Subtracção: x - y = 3
Multiplicação: x*y = 10
Divisão: x/y = 2.5
Floor Division: x//y = 2 (Arredonda a resposta para baixo para o número inteiro mais próximo)
Módulo: x%y = 1 (dá-nos o resto da divisão de 5 por 2)
Expoente: x**y = 25 (5 ao quadrado)
Mais operadores de atribuição

Existem mais alguns operadores de atribuição em Python (e na maioria das linguagens de programação).
Estes são operadores como +=,-= e *=.

Supondo que temos a variável x, com um valor inicial de 10. Se quisermos incrementar x por 2, podemos
escrever x = x + 2.

O programa avaliará primeiro a expressão à direita (x + 2) e atribuirá o valor da resposta à esquerda.


Então, eventualmente, a afirmação acima torna-se x <- 12.
Em vez de escrever x = x + 2, também podemos escrever x+=2 para exprimir o mesmo significado. O sinal
+= é, na verdade, uma abreviatura que combina o sinal de atribuição com o operador de adicção. Assim,
x+=2 significa simplesmente x = x + 2.
Da mesma forma, se quisermos fazer uma subtracção, podemos escrever x = x - 2 ou x-=2.
O mesmo funcionará para todos os 7 operadores mencionados acima.
Tipos de dados em Python
Alguns tipos de dados básicos em Python, são integer, float e string.

Integers (números inteiros)


Integers são números inteiros sem partes decimais, como -5, -4, -3, 0, 5, 7 etc. Para declarar um integer em Python, basta escrever
variableName = initial value .
Exemplo:
userAge = 20, mobileNumber = 12398724

Float
Float refere-se a números que têm partes decimais, como 1.234, -0.023, 12.01. Para declarar um float em Python, escrevemos
variableName = valor inicial .
Exemplo:
userHeight = 1,82, userWeight = 67,2

String
String refere-se ao texto. Para declarar uma cadeia de caracteres, podemos escrever variableName = 'valor inicial' (aspas simples)
ou variableName = “valor inicial” (aspas duplas).
Exemplo:
userName = 'Peter', userSpouseName = "Janet", userAge = '30'
No último exemplo, porque escrevemos userAge = '30', userAge é uma cadeia de caracteres. Em contraste, se escrevermos
userAge = 30 (sem aspas), userAge é um integer.

Podemos combinar várias substrings usando o sinal de concatenação (+). Por exemplo, "Peter" + "Lee" é equivalente à string
"PeterLee".
Type Casting em Python
Por vezes, em programação, é necessário converter de um tipo de dados para outro, como de um integer (número
inteiro) para uma string (cadeia de caracteres). Isto é conhecido como type casting.

Existem três funções embutidas em Python que nos permitem fazer type casting. Estas são as funções int(), float()
e str().

A função int() em Python recebe um float ou uma string apropriada convertendo-a num integer. Para alterar um float
para um integer, podemos digitar int(5.712987). Obteremos 5 como resultado (qualquer coisa depois do ponto
decimal é removido). Para alterar uma string para um integer, podemos digitar int("4") e teremos 4.

No entanto, não podemos digitar int ("Olá") ou int("4.22321"). Obteremos um erro em ambos os casos.

A função float() recebe um inteiro ou uma cadeia de caracteres apropriada alterando-a para um float. Por exemplo,
se digitarmos float(2) ou float("2") e teremos 2.0. Se digitarmos float("2.09109"), obteremos 2.09109, que é
um float e não uma string, uma vez que as aspas são removidas.

A função str(), por outro lado, converte um integer ou um float numa string. Por exemplo, se digitarmos str(2.1),
obteremos "2.1".

Agora que abordámos os três tipos de dados básicos em Python e o type casting, vamos passar para as lists, tuples e
dictionaries.
Lista
Lista refere-se a uma recolha de dados que estão normalmente relacionados. Em vez de armazenar esses
dados como variáveis separadas, podemos armazená-los como uma lista. Por exemplo, suponha que
nosso programa precisa armazenar a idade de 5 utilizadores. Em vez de armazená-los como user1Age,
user2Age, user3Age, user4Age e user5Age, faz mais sentido armazená-los como uma lista.

Para declararmos uma lista, escrevemos listName = [initial values]. Observe que usamos
parêntesis rectos [ ] ao declarar uma lista. Os valores são separados por uma vírgula.

Exemplo:
userAge = [21, 22, 23, 24, 25]
Também podemos declarar uma lista sem atribuir quaisquer valores iniciais a esta:
escrevemos listName = [ ].Teremos uma lista vazia sem itens.
Com o método append( ) poderemos adiccionar itens à lista.

Os valores individuais na lista são acessíveis pelos seus índices (index) que começam a partir do valor 0,
não 1. Esta é uma prática comum em quase todas as linguagens de programação, como o C e Java.
Assim, o primeiro valor tem um index de 0, o próximo tem um index de 1 e assim por diante. Por
exemplo, userAge[0] = 21, userAge[1] = 22 .
Tuple

Os Tuples são como listas, mas não podemos modificar os seus valores. Os valores iniciais são os valores
que permanecerão para o resto do programa. Um exemplo onde os tuples são úteis é quando o
programa precisa de armazenar os nomes dos meses do ano:

Para declararmos um tuple, escrevemos tupleName = (initial values).

Observe que usamos parêntesis curvos ( ) ao declarar um tuple. Os valores são separados por uma
vírgula.

Exemplo:

meses = (“Jan”, “Fev”, “Mar”, “Abr”, “Mai”, “Jun”, “Jul”, “Ago”, “Sep”, “Out”,
“Nov”, “Dez”)

Acedemos aos valores individuais de um tuple utilizando os seus index, como nas listas.

Logo, mesesDoAno[0] = “Jan”, mesesDoAno[-1] = “Dez”.


Diccionário
Diccionário é uma colecção de pares de dados relacionados. Por exemplo, se quisermos armazenar o
nome de utilizador e a idade de 5 utilizadores, podemos armazená-los num dicionário.

Para declarar um dicionário, escrevemos dictionaryName = {dictionary key : data}, com o


requisito de que as chaves do diccionário devem ser únicas (dentro de um diccionário). Ou seja, não
podemos declarar um diccionário assim: myDictionary = {“Pedro”:38, “Joao”:51, “Pedro”:13}.

Isto sucede porque "Peter" é usado como uma chave do diccionário duas vezes. Utilizamos chavetas { }
ao declarar um diccionário. Os pares de valores são separados por uma vírgula.

Exemplo:
userNameAndAge = {“Pedro”:38, “Joao”:51, “Joana”:13, “Paula”:“Not Available”}

Também podemos declarar um diccionário utilizando o método dict(). Para declararmos o diccionário
userNameAndAge acima, escrevemos userNameAndAge = dict(Pedro = 38, Joao = 51, Joana =
13, Paula = “Not Available”).

Quando utilizamos este método para declarar um diccionário, usamos parêntesis redondos ( ) em vez de
chavetas { } e não colocamos aspas nas chaves do diccionário.
Utilize o REPL
Por vezes, queremos experimentar um segmento de código sem ter de criar um ficheiro para o mesmo.
Para estas ocasiões, é uma boa ideia utilizar um programa interno chamado REPL, que permite digitar
instruções mais curtas e avaliar as mesmas.

O Python REPL
O Python suporta uma experiência de consola interactiva, que permite digitar comandos e ver os
resultados imediatamente. Esta experiência é por vezes referida como um "Read-Eval-Print-Loop", ou
REPL.

Para usar o REPL, digite python na sua consola. Receberá um prompt semelhante ao output abaixo, que
aguarda os comandos de entrada, ou seja os inputs:

Python 3.9.14 (main, Oct 29 2022, 22:18:10)


[GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
O que podemos fazer?
Com o REPL, podemos fazer a maioria das operações que faríamos com um ficheiro de código. Por
exemplo:
Executar e avaliar instruções
Podemos fazer com que o REPL avalie uma declaração assim:
>>> 1+1
2
>>>
Declarar variáveis e funções.
Também podemos criar variáveis e funções e o REPL lembrar-se-á que as mesmas existem, caso tentemos
utilizá-las mais tarde:
>>> PI = 3.14
>>> PI
3.14

Utilizar a ajuda
O REPL tem uma função de ajuda integrada que podemos utilizar para procurar palavras-chave e funções.
A sintaxe para esta função é:
help([object])
Onde [object] é uma função ou palavra-chave específica para a qual desejamos ajuda.
Consola de ajuda interactiva
Se não passarmos um argumento para a função de ajuda, o Python iniciará uma ajuda interactiva.
Podemos aceder à consola de ajuda interactiva digitando help(). Este comando listará algumas
instruções básicas sobre como usar o sistema de ajuda.

A partir daqui, podemos simplesmente digitar o elemento em que estamos interessados. Por exemplo,
digitando string obteremos informações sobre a string de tópico, que se parece com:

NAME
string - A collection of string constants.

MODULE REFERENCE
https://docs.python.org/3.9/library/string

The following documentation is automatically generated from the Python


source files. It may be incomplete, incorrect or include features that
are considered implementation detail and may vary between Python
implementations. When in doubt, consult the module reference at the
location listed above.
Variáveis e tipos de dados básicos em Python
As variáveis são um dos blocos de construção fundamentais dos programas escritos em Python. As variáveis
armazenam dados na memória. têm nomes e podem ser referenciadas por esses nomes. As variáveis também têm
tipos, que especificam que tipo de dados podem armazenar (como cadeias de caracteres →strings e integers) e
podem ser utilizadas em expressões que usam operadores (como + e -) para manipular os seus valores.
Variáveis

=
Em Python, uma variável é declarada e é-lhe atribuído um valor usando o operador de atribuição . A variável está do
lado esquerdo do operador e o valor que lhe é atribuído, que pode ser uma expressão como 2 + 2 e pode até incluir
outras variáveis, estará do lado direito. Por exemplo:

x = 1 # assign variable x the value 1


y = x + 5 # assign variable y the value of x plus 5
z = y # assign variable z the value of y

Estes exemplos atribuem números a variáveis, mas os números são apenas um dos vários tipos de dados suportados
pelo Python. Não há nenhum tipo declarado para as variáveis. Isto sucede porque o Python é uma linguagem
digitada dinamicamente, o que significa que o tipo de variável é determinado pelos dados atribuídos à mesma. Nos
exemplos acima, as variáveis x, y e z são integers, capazes de armazenar números inteiros positivos e negativos.

Como já vimos os nomes das variáveis diferenciam maiúsculas de minúsculas e podem usar qualquer letra, número
ou caractere de underscore ( _ ). No entanto, não podem começar com um número.
Trabalhar com números
A maioria dos programas manipula números. Os computadores tratam números inteiros e números decimais de
forma diferente. Considere o seguinte código:

x = 1 # integer
x = 1.0 # decimal (floating point)3

O Python cria integers a partir de um tipo de dados interno chamado int e decimais (números de vírgula flutuante)
como instâncias de float. A função built-in type() do Python devolve o tipo de dados de uma variável. O código a
seguir gera tipos de dados:

x = 1
print(type(x)) # outputs: <class 'int'>

x = 1.0
print(type(x)) # outputs: <class 'float’>

A adição do ".0" no final de "1" faz uma grande diferença na forma como a linguagem de programação trata um
valor. O tipo de dados afecta como o valor é armazenado na memória, como o processador (CPU) lida com os dados
ao avaliar expressões, como os dados se relacionam com outros dados e que tipos de operações podemos executar
com eles.
Trabalhar com booleanos
Outro tipo de dados comum é o tipo booleano, que contém o valor True ou False:

x = True
print(type(x)) # outputs: <class 'bool’>

Internamente, o booleano é tratado como um tipo especial de inteiro. Isto significa que, na memória do computador, um
valor booleano é armazenado como um número inteiro, mas com apenas dois valores possíveis: 0 para falso e 1 para
verdadeiro. Tecnicamente, True tem o valor de 1 e False tem o valor de 0. Normalmente, os booleanos não são utilizados
para realizar operações matemáticas; são utilizados para tomar decisões e realizar ramificações.

Trabalhar com strings (cadeias de caracteres)


Os números e as strings estão entre os tipos de dados mais utilizados. Uma cadeia de caracteres é uma colecção de zero ou
mais caracteres. As cadeias de caracteres geralmente são declaradas usando aspas simples, mas também podemos utilizar
aspas duplas:

x = 'This is a string’
print(x) # outputs: This is a string
print(type(x)) # outputs: <class 'str'>
y = "This is also a string“

Usando um literal de string vazio, como "" em Python


Usando um método ou função que cria uma string vazia
Atribuindo um valor nulo a uma variável de string 0 caracteres
Podemos adiccionar strings a outras strings — uma operação conhecida como "concatenação" — com o mesmo
operador que adicciona dois números:

x = 'Hello' + ' ' + 'World!'


print(x) # outputs: Hello World!

Imprimir na consola

Em Python, a função print , que é uma das mais de 60 funções incorporadas na linguagem, imprime texto no ecrã.
A instrução abaixo imprime "Hello World!" no ecrã:

print('Hello World!’)

O argumento passado para imprimir é uma string, que é um dos tipos de dados fundamentais em Python utilizados
para armazenar e gerir texto. Por padrão, a impressão produz um caractere de nova linha no final de cada linha,
portanto, as chamadas subsequentes para imprimir serão iniciadas na linha seguinte.
Exercício – Output
Neste exercício, usamos o REPL para declarar variáveis e executar instruções.
Experimente fazer a sua primeira instrução em Python.
O Python suporta uma experiência de consola interactiva, que permite digitar comandos e ver os
resultados imediatamente.

Na consola da Shell, digite python para iniciar o interpretador Python no modo interactivo.

Deverá ver uma saída semelhante a:


O prompt >>> é o interpretador à espera que digite um comando Python.

Digite a seguinte instrução no interpretador.

O interpretador deve devolver o texto e criar outro prompt aguardando o próximo comando:
Declarar e Imprimir variáveis
Com o REPL em execução, vamos criar variáveis.

Digite o seguinte código para declarar uma variável:

Digite o nome da variável PI para imprimir o seu valor:

O output deve mostrar o valor de PI:


Receber input do teclado
Alguns programas são interactivos. Suportar interactividade significa que temos um programa que é
executado de forma diferente dependendo da entrada (input) do utilizador . O utilizador que insere
dados num programa normalmente é um ser humano, mas também pode ser outro programa. Existem
assim várias maneiras de enviar entradas para um programa; Duas maneiras comuns são :

➢ Através de uma interface gráfica;


➢ Numa consola.

Input do utilizador
Para receber inputs do teclado , o Python fornece a função input(). A função input() lê o que o
utilizador digita no teclado devolvendo a leitura como uma string. Abaixo temos um exemplo que
combina input() e print() para capturar o nome do utilizador e exibi-lo no ecrã:
A string passada como um argumento para a função de entrada é o prompt que o utilizador verá. Neste
exemplo, pedimos ao utilizador para digitar o nome ( 'Enter your name'). Assim que o utilizador digitar um
nome e pressionar Enter, a função input devolve-o . O valor de retorno da função é o texto digitado pelo
utilizador e esse texto é atribuído à variável chamada name. A variável name é então utilizada como uma
entrada/input ou argumento para a função de impressão, que produzirá o nome que o utilizador inseriu.

Também podemos chamar a função input sem um parâmetro:

Este programa terá um comportamento quase igual ao anterior. A diferença é que a impressão adicciona
uma nova linha aceitando o input nessa linha.
Leitura de números como input
A função input devolve o valor digitado como uma string. Esta escolha faz sentido porque o utilizador
pode inserir o valor que quiser. Mesmo que o input seja um número válido, será devolvido como um
tipo de string da função de entrada. Por exemplo:

Executar este código e digitando o valor 5 devolverá <classe 'str'>, mesmo que o valor em si seja
numérico. Para transformar o valor numa variável inteira verdadeira, podemos utilizar a função int():

Este código produzirá <classe 'int'> para o valor 5. Podemos utilizar a função float da mesma
maneira se quisermos um componente fraccionário.
Importante
E se a entrada não for numérica e a passarmos para a função int()? Como seria de esperar, isto seria
um erro e causaria uma falha de Runtime. O programa terminará com esta declaração:

Converter números para strings


Podemos também seguir na direcção oposta. O método str() receberá um valor inteiro ou float e
transformar-lo-á numa string. Será necessário chamar o método str() se quisermos que o exemplo
do código abaixo funcione. A conversão garante que o inteiro, na sua forma de string, seja
concatenado com a string à esquerda.
Neste exercício, vamos construir uma calculadora. Uma calculadora recebe o input e apresenta o resultado no ecrã.
Inicie o REPL digitando python na consola da Shell/Comandos:

Deve obter uma saída semelhante a:

Insira o código seguinte no REPL:


Deve obter a seguinte saída:

Os caracteres ;\ , no final das duas primeiras instruções sinalizam que existem várias linhas de código. O
uso destes caracteres permite inserir todo o código, linha a linha. O código também é executado e,
como podemos ver, pede a primeira entrada.

Insira a primeira entrada digitando 2 e pressione ENTER.


Deve obter a seguinte saída:

Agora, insira a segunda entrada digitando 3 e pressione ENTER.


Deve obter a seguinte saída:
Um programa em Python
Para criar um programa em Python, precisamos de o armazenar num ficheiro. O ficheiro deve ter a extensão .py. A ideia de
um programa é fazer algo ou realizar uma tarefa. Para que o programa faça algo, teremos de adiccionar declarações ou
instruções para executar a tarefa. Por exemplo, uma instrução pode imprimir algum texto ou calcular algo. Um programa
exemplo, chamado python.py, pode ter esta aparência:

Executar um programa
Suponha que criou um programa que consiste em várias instruções. Pode iniciar o programa com o executável Python numa
consola. Uma consola é uma aplicação da linha de comandos que permite interagir com o sistema operativo. Para executar
um programa, digite o nome do programa executável Python, seguido pelo nome do seu programa. Aqui está um exemplo
de tal execução:

Executar o programa mostraria o seguinte resultado na consola:


A função print()
Uma das primeiras acções que provavelmente fará é imprimir numa consola. Na consola, podemos executar
comandos e programas. Também podemos inserir informações e mostrar informações como texto no ecrã.
Para gravar informações na consola, podemos utilizar a função print() e implementá-la como uma função
principal. Como é uma função principal, teremos acesso à mesma se o Python estiver instalado. Para usar print()
no seu programa, dê-lhe um argumento:

Executar o programa mostraria o seguinte resultado na consola:

Observe como o comando chama print() utilizando parêntesis. É assim que executamos uma função. Se
utilizássemos parêntesis rectos em vez de curvos o programa não funcionaria, como se pode ver executando o
programa novamente com o seguinte código:

Aqui está a saída:


Variáveis
Para chegar a qualquer objectivo em programação, precisamos entender que estamos a operar com dados. Como os
programas trabalham com dados, talvez seja necessário recordar um determinado valor durante toda a execução do
programa. Para isso, utilizamos variáveis. O exemplo a seguir faz um cálculo armazenando-o em variáveis:

Tipos de dados
Uma variável assume um tipo de dados. No programa anterior, a soma obtém o tipo int. No entanto, existem mais tipos de
dados. A seguir estão alguns exemplos que provavelmente encontrará:

Tipo Descrição Exemplo(s)

Número, com ou sem casas


Tipo numérico int, float, complex, no = 3
decimais

Tipo de texto String de caracteres str = "a literal string"

Tipo booleano Booleano continue = True


A seguir temos um segmento de código que mostra alguns dos tipos de dados anteriores:

Como saber que tipo de dados uma variável tem?

Operadores
Os operadores permitem executar várias operações em variáveis e nos seus valores. A ideia geral é que tenhamos um
lado esquerdo e um lado direito e um operador entre eles:

Este exemplo usa uma barra (/) para dividir o valor left_side pelo valor right_side.
Operadores aritméticos
Com operadores aritméticos, executamos cálculos como adicção, subtracção, divisão e multiplicação. Abaixo temos
um subconjunto de operadores aritméticos que podemos utilizar:

Tipo Descrição Exemplo

Operador de adicção que adiciona dois


+ valores 1+1

Operador de subtração que remove o


- valor do lado direito do do lado
esquerdo
1-2

Operador de divisão que divide o lado


/ esquerdo tantas vezes quantas o lado
direito especificar
10 / 2

* Operador de multiplicação 2*2


Operadores de atribuição
Podemos utilizar operadores de atribuição para atribuir valores a uma variável durante todo o ciclo de vida da
mesma. Abaixo temos alguns operadores de atribuição que podemos utilizar na criação de programas:

Operador Exemplo

x=2
= x passa a ter o valor 2.

x += 2
+= x sofre incrementos de 2. Se antes valia 2, agora tem o valor de 4.

x -= 2
-= x diminuído do valor 2. Se antes valia 2, agora tem o valor de 0.

x /= 2
/= x dividido por 2. Se antes valia 2, agora tem o valor de 1.

x *= 2
*= x multiplicado por 2. Se antes valia 2, agora tem o valor de 4.
Datas
Quando criamos um programa, pode ser necessária alguma interacção com datas. Uma data num programa
normalmente significa tanto a data do calendário como a hora. Podemos utilizar uma data em várias aplicações,
como por exemplo:

Ficheiro de backup: Usar uma data como parte do nome de um ficheiro de backup é uma boa maneira de indicar
quando um backup foi feito e quando precisará de ser efectuado novamente;
Condição: Podemos querer inserir uma lógica específica quanto a uma determinada data;
Métrica: As datas são utilizadas para verificar o desempenho no código para (por exemplo) medir o tempo necessário
para executar uma determinada função. Para trabalhar com uma data, temos de importar o módulo data:

Podemos chamar as funções com as quais desejamos trabalhar. Para obter a data actual, podemos chamar a função
today():

Para mostrar a data na consola, podemos usar a função print(). A função print() utiliza vários tipos de dados
como entrada. Para mostrar a data actual:
Conversão de tipo de dados
Se quisermos utilizar uma data com algo, normalmente uma string, para mostrar a data de hoje na consola, poderemos
encontrar um problema:

O que recebemos é um erro:

+
A última linha da mensagem informa qual é o problema. Tentámos utilizar o operador e combinar dois tipos de dados
diferentes, uma string e um valor não string. Para o código funcionar, temos de converter a data para uma string. A
conversão pode ser feita com a função str():

A saída terá esta aparência:


Conversão de tipos de dados

ERRO
O primeiro programa
Suponha que queremos criar código para executar algumas funções. Comecemos por exibir a data de hoje. A seguir, vamos
adiccionar código para converter parsecs para anos-luz.

Exibir a data de hoje


Adiccione o código para exibir a data de hoje, lembre-se que pode utilizar o objecto data da biblioteca datetime para aceder
a informações do calendário:

Construir um conversor de unidades


Agora passemos para a segunda aplicação, converter parsecs para anos-luz. Um parsec é equivalente a 3,26 anos-luz, logo
teremos de multiplicar o valor parsecs por esse valor para determinar os anos-luz.
Crie uma variável chamada parsecs e defina-a como 11. Adiccione o código para executar o cálculo apropriado e armazenar
o resultado numa variável chamada anos-luz. Finalmente, imprima o resultado no ecrã para que exiba uma mensagem
semelhante à seguinte:
11 parsecs is ___ lightyears

Saída desejada
Quando executar o programa, deverá obter o seguinte resultado:
Obter Input
Até agora, aprendemos várias construções da linguagem de programação Python. Também construimos alguns programas. No
entanto, os programas operam com base em dados e esses dados vêm de algum lugar. Vamos ver de perto como recolher
inputs da linha de comando e do utilizador.

Input de linha de comando


Quando iniciamos um programa utilizando o python3, damos-lhe o nome do ficheiro para o executar. Também podemos dar-lhe
um conjunto de argumentos: dados a que o programa terá acesso quando estiver em execução:

No código anterior, a string "2023-01-01" pode ser utilizada como instrução para o programa backup.py iniciar um backup a
partir dessa data. O que obtemos utilizando argumentos de linha de comandos é flexibilidade. O programa pode comportar-se
de forma diferente dependendo do input externo.

Argumentos de linha de comando


Como é que os comandos são capturados no lado da codificação? Utilizando o módulo sys, podemos recuperar os argumentos
de linha de comando e utilizá-los no nosso programa. Observe o seguinte código:
sys.argv é uma array ou uma estrutura de dados que contém vários itens. A primeira posição, indicada como 0 na matriz,
contém o nome do programa. A segunda posição, 1, contém o primeiro argumento. Suponha que o programa backup.py
contém o código de exemplo:

O programa produz o seguinte resultado:

Arrayaaaa array

Input do utilizador
Outra maneira de passar dados para o programa é aceitar dados do input do utilizador. Podemos programar para que o
programa diga ao utilizador para inserir informações. Salvamos os dados inseridos no programa e agimos sobre esses dados.
Para capturar informações do utilizador, usa-se a função input():
Suponha que o programa input.py contém o código de exemplo:

A execução do programa convida-o a introduzir o seu nome, por exemplo:

Depois de inserir um valor e pressionar Enter, a saudação é devolvida:


Trabalhar com números

A função input() armazena um resultado como uma string , portanto, o código a seguir pode não fazer o que desejamos:

Executar este programa convida a inserir o primeiro número, digamos 12:

Depois de pressionarmos Enter, podemos digitar o segundo número, digamos 12:


Premindo Enter obtém-se o seguinte resultado:

Provavelmente desejava que este programa lhe respondesse com 24 em vez de 1212. Então, o que é que correu mal?
A explicação é que first_number e second_number são strings. Para que o cálculo funcione correctamente, temos de
converter as strings para números/integers usando a função int(). Modificando a última linha do programa para usar a
função int(), resolvemos o problema:

Executar novamente o programa com os mesmos valores devolve 24 como resposta:


Criação de aplicações reutilizáveis
Ter um programa com valores codificados limita a sua flexibilidade. No programa que construimos para converter parsecs
para anos luz, queremos agora a capacidade de especificar um valor para parsecs. Vamos criar um programa que possa
aceitar o input do utilizador.

Aceitar o input do utilizador


No exercício anterior, criámos código para converter parsecs em anos luz e exibir os resultados:

Usando o código como base, actualizamos como o valor parsecs é definido. Começamos por criar uma variável chamada
parsecs_input e definimo-la como o resultado do input, o que deve solicitar ao utilizador inserir o valor de parsecs.
Depois convertemos parsecs_input para um número inteiro utilizando int armazenando-o em parsecs. Finalizamos
executando o cálculo e exibindo o resultado:
Lógica booleana em Python

Introdução
Os Booleanos são um tipo comum de dados em Python. Como já vimos, o modo como os valores booleanos são
armazenados na memória do computador pode variar dependendo da linguagem de programação. Algumas utilizam 1 para
verdadeiro e 0 para falso, enquanto outras utilizam palavras-chave específicas como true e false, ou seja, o seu valor só
pode ser uma de duas opções: verdadeiro ou falso. Entender como usar valores booleanos é fundamental, porque
precisamos deles para escrever lógica condicional.

Cenário: Imprimir mensagens de aviso


Suponha que tem de criar um programa que identifique se um pedaço de detritos espaciais é perigoso para uma nave
espacial. Se o objecto for maior do que um tamanho específico e estiver dentro do alcance da nave, terá de ser realizada uma
manobra para evitar uma colisão. Caso contrário, a nave pode colidir com o detrito.

Usaremos palavras-chave e operadores booleanos para escrever vários tipos de expressões condicionais e determinar a
reacção da nave.

Vamos executar código sob determinadas condições com instruções if, else, e elif. Podemos combinar lógica condicional
e criar condições mais complexas utilizando operadores and e or.

Vamos utilizar a lógica condiccional para criar programas orientados por decisões.
Para expressar a lógica condiccional em Python, usamos instruções if. Quando escrevemos uma instrução if, utilizamos
também outro conceito, os operadores matemáticos. O Python suporta os operadores lógicos comuns da matemática:
equals, not equals, less than, less than or equal to, greater than e greater than or equal to. Em lógica
matemática os operadores são exibidos utilizando símbolos, que é como também são representados em Python:

•Equals: a==b
•Not Equals: a!= b
•Less than: a<b
•Less than or equal to: a<=b
•Greater than: a>b
•Greater than or equal to: a>=b
Expressões de teste
Temos de utilizar uma instrução if para executar o código somente se uma determinada condição for satisfeita. Começamos
por escrever uma instrução if e verificamos a condição utilizando uma expressão de teste. De seguida, determinamos se a
instrução é avaliada como True ou False. Se for True, o próximo bloco de código indentado será executado:

Neste exemplo, a < b é a expressão de teste. O programa avalia a


expressão de teste e executa o código dentro da instrução if
somente se a expressão de teste for True. Avaliando a expressão,
saberemos que ela é False, portanto, qualquer código escrito na
instrução if não será executado.
Escrever instruções if
Usamos uma instrução if se quisermos executar código somente se uma determinada condição for satisfeita. A sintaxe de
uma instrução if é sempre:

if expressao_teste:

# instrução a executar

Por exemplo:

Output: 93

Em Python, o corpo de uma instrução if deve ser indentado. Qualquer código após uma expressão de teste que não
esteja indentado será sempre executado:

Neste exemplo, o output é 44 porque a expressão de teste é False e a instrução


print(b) não está indentada ao mesmo nível da instrução if.

Output: 44
O que são instruções ‘else’ e ‘elif’?

E se quisermos que o programa execute código quando uma expressão de teste for False? E se quisermos incluir outra
expressão de teste? O Python tem outras palavras-chave que podemos utilizar para tornar as instruções if mais complexas:
else e elif. Quando utilizamos if, else e elif combinados, podemos escrever programas complexos com várias
expressões de teste e instruções para executar.

Trabalhar com ‘else’


Com uma instrução if, o corpo do programa será executado somente se a expressão de teste for True. Para adiccionarmos
mais código que será executado quando a expressão de teste for False, temos de adicionar uma instrução else.
Vamos adaptar um exemplo do slide anterior:

Neste exemplo, se a não for maior ou igual a b, nada acontece.

Digamos que queremos imprimir b se a expressão de teste for False:

Output: 93
Se a expressão de teste for False, o código no corpo da instrução if será ignorado e o programa continuará a ser executado a
partir da instrução else. A sintaxe de uma declaração if/else é sempre:

if expressao_teste:

# instrução a executar 3

else:

# instrução a executar

Trabalhar com elif


Em Python, a palavra-chave elif é a abreviatura de else if. A utilização de elif permite adiccionar várias
expressões de teste ao programa. As instruções serão executadas na ordem em que são escritas, portanto, o programa
inserirá uma instrução elif somente se a primeira instrução if for False. Por exemplo:

a = 27
b = 93
Falso logo
if a <= b:
print("a é menor ou igual a b")
elif a == b:
print("a é igual a b")
Output: a é menor ou igual a b Output: a diferente de b
A sintaxe de uma instrução if/elif é :
if expressao_teste:
# instrução a ser executada
elif expressao_teste:
# instrução a ser executada

Combinar instruções if, elif, e else


Podemos combinar instruções if, elif e else para criar programas com lógica condicional complexa. Lembre-se
de que uma instrução elif é executada somente quando a condição if é false. Observe também que um bloco if
pode ter apenas um bloco, mas pode ter vários blocos elif. Vejamos um exemplo com instruções if, elif e else:

a = 27 if expressao_teste:
b = 93
# instrução a ser executada
if a < b:
elif expressao_teste :
print("a é menor do que b") # instrução a ser executada
elif a > b: elif expressao_teste :
print("a é maior que b") # instrução a ser executada
else: else:
print ("a é igual a b") # instrução a ser executada

Você também pode gostar