Variáveis
Tipos
Comandos Básicos
Exemplos:
msg = " A media dos numeros é %4.2f" %(8656656.6164134)
print(msg)
print("%f + %f = %4.1f" %(15, 9.578421, 15+9.578421 ))
print("%d + %d = %d" %(5, 7.578421, 5+7.578421 ), end="!!!")
Em Python, ao construir uma sequência de comandos, devemos colocá-los um por linha abaixo do outro, mantendo-os na mesma tabulação.
Um bloco de comando que possui um ou mais comandos é camado de suite
Uma estrutura de seleção com um ramo if é utilizada quando se deseja executar um comando (ou uma suite) apenas no caso de determinada condição ser satisfeita.
Exemplo do uso:
dinheiro = 50000
if dinheiro>10000:
imps = dinheiro * 0.1
multa = dinheiro * 0.15
print( "Valor do Imposto:", imps, "e da multa:", multa)
Para condições compostas pode ser feita a condição utilizando:
A estrutura de dois ramos if-else é utilizada quando deseja-se executar uma entre duas suites, dependendo de como foi avaliada a condição (como True ou False).
Exemplo de uso:
x=10
if x>0:
print(x, "é maior do que zero.")
else:
else(x, "é menos ou igual a zero.")
Veja o exemplo a seguir:
"""
Calcula ajuste de dinheiro, se tempo < 1 mantém , se tempo < 10 faz uma coisa, se tempo >= 10 faz outra:
"""
dinheiro = 1000.50
tempo = 20
if tempo<1:
print("Seu dinheiro continua:", dinheiro)
else:
if tempo<10:
dinheiro = dinheiro * 1.1
else:
dinheiro = dinheiro * 1.2
print("Seu dinheiro apos o ajuste:", dinheiro)
As estruturas de seleção if-elif e if-elif-else tem uso quando deseja-se executar uma entre várias suites, dependendo do resultado da condição avaliada.
veja o exemplo a seguir com uso do if-elif :
""
Faremos um comando que funciona como calculadora.
""
valores = [5,9] #Poderiamos pedir que o usuario informasse com:
#valores=input("Digite dois valores: ").split()
x = int(valores[0])
y = int(valores[1])
op = "+" #Poderiamos pedir que o usuario informasse
if op=="+":
resultado = x+y
elif op=="-":
resultado = x-y
elif op=="*":
resultado = x*y
elif op=="/":
resultado = x/y
elif op=="**":
resultado = x**y
print(x,op,y,"=",resultado)
veja o exemplo a seguir com uso do if-elif-else :
""
Faremos um comando que funciona como calculadora.
""
valores = [5,9] #Poderiamos pedir que o usuario informasse com:
#valores=input("Digite dois valores: ").split()
x = int(valores[0])
y = int(valores[1])
op = "+" #Poderiamos pedir que o usuario informasse
if op=="+":
resultado = x+y
elif op=="-":
resultado = x-y
elif op=="*":
resultado = x*y
elif op=="/":
resultado = x/y
elif op=="**":
resultado = x**y
else:
resultado = None
if resultado == None:
print(op, "Operador inexistente!!")
else:
print(x,op,y,"=",resultado)
A estrutura de repetição indefinida while deve ser utilizada quando se deseja executar zero ou mais vezes uma suite enquanto a condição estipulada for verdadeira.
Exemplo de uso:
i=1
while i<=10:
print(i, end=" ")
i=i+1
print()
A estrutura de repetição definida **for* deve ser utilizada quando se deseja, um determinado número de vezes, executar uma mesma suite, enumerado ou nao por uma lista de valores.
Exemplo de uso:
for i in [2,3,4,5,6,7,8,9]:
print(i, end=" ")
print()
Para criar uma lista para repetições for:
Exemplo:
print(range(7))
Exemplo:
print(range(7,20))
Exemplo:
print(range(9,50,3))
São suites, comandos e/ou estruturas de controle, ao qual atribuímos um nome e após a sua execução obtemos um valor.
A utilização de funções permite que o programa possa ser desenvolvido e testado separadamente, além de permitir a reutilização de algumas partes em diferentes pontos do programa.
Sendo assim, é possível montar programas mais complexos a partir de funções menores já desenvolvidas e testadas.
A função deve ser declarada da seguinte forma:
def nomeEscolhido(_lista de parâmetros_)
suite do corpo da funcao
onde:
Caso uma função possa ser aplicada a diferentes valores de entrada, esta função deve conter parâmetros em sua definição.
Da mesma maneira que por valor, a função pode receber ou retornar outra função definida previamente
Chama-se de função recursiva quando a função possui no seu corpo uma chamada a ela própria
Exemplo, no cálculo de fatorial:
def fat(n):
if n==0:
return 1
else:
return n*fat(n-1) #Aqui esta a chamada recursiva
Um vetor é um agregado de elementos (também chamados de valores) de um mesmo tipo.
Imagine um vetor, do qual para a seleção de elementos dentro desse vetor, podemos utilizar um índice ou seletor do elemento que indica sua posição ou ordem.
vetor=[4,3,2,1]
print(vetor[0])
print(vetor[3])
Um vetor pode ser simples ou estruturado
#Utilizando o range()
soma = 0
for i in range(3):
soma = soma + vetor[i]
#Utilizando o len()
soma = 0
for i in range(len(itens)):
soma = soma + itens[i]
Exemplo de leitura:
#Leitura de todos os valores de uma vez:
valores = input("Digite os valores na mesma linha: ").split()
#Leitura um de cada vez:
valores=[None]*10
for i in range(len(valores)):
valores[i] = input("Digite um valor: ")
Exemplo de escrita:
#Todos de uma vez:
numeros= [4,6,2,5,1,25,12,32]
print(numeros)
#Escrita um de cada vez:
numeros= [4,6,2,5,1,25,12,32]
for x in numeros:
print(x, end=" ")
print() #Para pular uma linha
A matriz 2D é um vetor de vetores, vejamos um exemplo:
aposta = [[" ","X"," "],
[" "," ","X"],
[" ","X"," "],
["X"," "," "],
[" ","X"," "],
[" "," ","X"],
[" ","X"," "]]
print(aposta)
Para acessar os elementos desse vetor:
aposta = [[" ","X"," "],
[" "," ","X"],
[" ","X"," "],
["X"," "," "],
[" ","X"," "],
[" "," ","X"],
[" ","X"," "]]
aposta #Representa uma matriz de 7 linhas por 3 colunas
aposta[0] #Representa a primeira linha da matriz
aposta[0][0] #Representa o caractere da primeira linha da primeira coluna
Em python, vetores e matrizes são implementados por listas, uma forma alteranativa é utilizando a operação que anexa um valor ao final de uma lista: append().
Um objeto do tipo str representa uma cadeia de caracteres, de tamnho e valor imutáveis, veja um exemplo de declaração e atribuição:
nome = "Ana"
print(len(nome)) # confima o comprimento ou quantidade de caracteres na string
#Se:
nome = "Ana"
#Então:
print(nome[0])
print(nome[1])
print(nome[2])
O operador +, quando aplicado a dois Strings a e b retorna uma String concatenada das Strings a e b
Retornando uma “nova” sub-String de uma String:
nomeString[posicao inicial : posicao final+1]
Uma sequência ordenada de zero ou mais referências a objetos. Tuplas suportam o mesmo fatiamento, o mesmo acesso por iteradores e o mesmo desempacotamento que Vetores e Strings. São imutáveis e pode ser vazia.
Exemplo:
vazio = tuple()
print(vazio)
Mais exemplos, agora de tuplas não vazias:
val = ("abacaxi", 500, 4.99)
print(val)
#ou ainda:
val = "abacaxi", 500, 4.99
print(val)
Sendo assim, vetores e strings podem ser empacotados como tuplas através da funcao tuple(), veja:
trio = tuple([1,2,3]) # ou trio = (1,2,3)
print(trio)
letras = tuple("aeiou") # ou letras = ("a", "e", "i", "o", "u")
print(letras)
Seu conteúdo pode ser facilmente atribuído a variáveis por meio de desempacotamento, veja:
individuo, altura = ("Maria Jose", 139)
print(individuo)
print(altura)
#ou ainda:
(nome, idade) = ("Maria Jose", 139)
print(nome)
print(idade)
#Iterando sobre os itens de uma tupla:
tomDePele = ("Marrom", "Amarelo", "Azul", "Branco")
for cor in tomDePele:
print(cor)
v = ("morango", 500, 4.99, 500)
print(v.count(500)) #Retorna quantidade
v = ("morango", 500, 4.99, 500)
print(v.index(500)) #Retorna indice
Uma lista é uma sequencia ordenada pelo índice, de zero ou mais referências a objetos.
Características: * É uma estrutura de dado recursiva * Representada por uma sequência, fechada por colchetes ( [** e **]) * O primeiro elemento esta na posição zero * Lista são mutáveis, podem receber novos elementos, substituir ou remover antigos elementos
Exemplo:
#Declarando uma lista:
salada = []
#Incluindo valores:
salada = ["manda", "pera", "uva"]
Operações básicas para manipulação de listas:
Exemplo:
#Incluindo valores:
salada = ["manda", "pera", "uva"]
print(salada)
salada.append("banana")
print(salada)
salada.insert(2,"goiaba")
print(salada)
## ['manda', 'pera', 'uva']
## ['manda', 'pera', 'uva', 'banana']
## ['manda', 'pera', 'goiaba', 'uva', 'banana']
Criando uma lista de numeros aleatórios em um intervalo pre estabelecido pelo usuário:
#Exemplo 1
#subprogramas
def preencher(listaElems, qtd, min, max):
from random import randint #Requer pacote com funcao externa
for item in range(qtd):
listaElems.append(randint(min, max))
return None
#programa principal
qtdNumeros = int(input("A Lista deve ter quantos valores?"))
minimo = int(input("Menor valor da faixa:"))
maximo = int(input("Maior valor da faixa:"))
numeros = []
preencher(numeros, qtdNumeros, minimo, maximo)
print(numeros)
Exemplo:
saladaComposta = ["banana", "caju", "uva", "pera", "manga", "kiwi"]
print(saladaComposta)
saladaSimples = saladaComposta[1:4]
print(saladaSimples)
## ['banana', 'caju', 'uva', 'pera', 'manga', 'kiwi']
## ['caju', 'uva', 'pera']
Os indices fazem referências a novas listas contidas no seu interior
Veja um exemplo:
mercado = [["pera", 100, 4.9], ["manga", 20, 3.9], ["uva", 30,5.9], ["caju", 15.35]]
print(mercado)
## [['pera', 100, 4.9], ['manga', 20, 3.9], ['uva', 30, 5.9], ['caju', 15.35]]
Confira:
mercado = [["pera", 100, 4.9], ["manga", 20, 3.9], ["uva", 30,5.9], ["caju", 15.35]]
print(mercado)
mercado[1][2] *= 0.5 #Manga pela metade do preço
print(mercado)
mercado[3][1] -= 10 #caju com dez quilos a menos
print(mercado)
mercado.remove(["uva", 30,5.9]) #O produto uva é removido do mercado
print(mercado)
mercado.insert(1, ["kiwi", 200, 1.99]) #O produto kiwi é inserido
print(mercado)
## [['pera', 100, 4.9], ['manga', 20, 3.9], ['uva', 30, 5.9], ['caju', 15.35]]
## [['pera', 100, 4.9], ['manga', 20, 1.95], ['uva', 30, 5.9], ['caju', 15.35]]
## [['pera', 100, 4.9], ['manga', 20, 1.95], ['uva', 30, 5.9], ['caju', 5.35]]
## [['pera', 100, 4.9], ['manga', 20, 1.95], ['caju', 5.35]]
## [['pera', 100, 4.9], ['kiwi', 200, 1.99], ['manga', 20, 1.95], ['caju', 5.35]]
Três operações primitivas do paradigma de programação funcional na lisguagem Lisp (List Processing):
Exemplo (trivial):
def car(dados):
return dados[0]
def cdr(dados):
return dados[1:len(dados)]
def cons(item, dados):
return [item] + dados
Utilizando as operações seletoras car e cdr, vejamos uma função recursiva que some o conteúdo de uma lista de numeros:
def soma(dados):
if dados==[]:
return 0
else:
return car(dados) + soma(cdr(dados))
Programas interativos sao diferentes de manusear arquivos
arquivos podem ser texto
O arquivo texto é um sequencia de caracteres organizadas em linhas
em python, a leitura de arquivos é feito da seguinte maneira:
dados = open(caminho do arquivo, "r") #r: leitura ;
#w: apenas escrita;
#a: escreve no final do arquivo
dados.close() # o arquivo nao sera mais utilizado
Aplicada sob um arquivo txt aberto, retorna uma linha completa, incluind o final da linha (* que pula a linha). Portando o inicio do leitor avança para a proxima linha, veja:
dados = open("exemplo.txt", "r")
linha = dados.readline()
print(linha, end="")
dados.close()
Veja:
dados_abrir=input("Digite o nome do arquivo que deseja visualizar: ")
dados = open(dados_abrir, "r")
linha = dados.readline()
while linha != "":
print(linha, end="")
linha=dados.readline()
dados.close()
Outra maneira:
dados_abrir=input("Digite o nome do arquivo que deseja visualizar: ")
dados = open(dados_abrir, "r")
for linha in dados:
print(linha, end="")
dados.close()
Funciona apenas para pequenos arquivos, veja:
dados_abrir = input("Digite o nome do arquivo:")
dados=open(dados_abrir, "r")
linhas = dados.readlines()
for linha in linhas:
print(linha, end"")
dados.close()
dados=open("teste.txt", "w")
dados.write("qualquercoisa")
Veja:
dados=open("teste.txt", "w")
dados.write("qualquercoisa\n")
Mais um exemplo:
arquivo = input("Digite o nome do arquivo que sera criado:")
qnt_linhas = int(input("Quantas linhas:"))
dados = open(arquivo, "w")
for i in range(qnt_linhas):
nova=input("linha"+str(i+1)+":")
dados.write(nova+"\n")
dados.close()
Veja:
nome=input("Diga o nome do arquivo que deseja anexar")
arquivo=open(nome, "a")
noma_linha = input("Diga a nova linha:")
arquivo.write(nova_linha + "\n")
arquivo.close()