From 94b6487cbb08dfb79811604fe5211ff40a7e49d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Victor?= <118894607+joao-victor-costa-gomes@users.noreply.github.com> Date: Tue, 22 Aug 2023 21:50:37 -0300 Subject: [PATCH] Add files via upload MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Queria upar eles como se fosse uma pasta, mas quando passei para cá, ficou como se fosse um arquivo de cada. Por isso resolvi fazer esse pull request. --- ...03\241veis e atribui\303\247\303\265es.py" | 43 +++++ "Python b\303\241sico/002 - Strings.py" | 19 +++ "Python b\303\241sico/003 - Listas.py" | 89 ++++++++++ .../004 - Math e Fractions.py" | 57 +++++++ .../005 - Print, Input, Eval.py" | 45 +++++ ...6 - If, Else e Edenta\303\247\303\243o.py" | 31 ++++ "Python b\303\241sico/007 - For e Range.py" | 44 +++++ .../008 - Fun\303\247\303\265es.py" | 47 ++++++ .../009 - M\303\251todos Strings.py" | 52 ++++++ .../010 - Manipulando arquivos.py" | 90 ++++++++++ .../texto-grava\303\247\303\243o.txt" | 15 ++ .../texto-leitura.txt" | 6 + .../010 - Manipulando arquivos/texto3.txt" | 4 + "Python b\303\241sico/011 - Data e Hora.py" | 39 +++++ .../012 - Elif e La\303\247o acumulador.py" | 60 +++++++ .../013 - Listas bidimensionais.py" | 46 ++++++ .../014 - La\303\247o While.py" | 84 ++++++++++ .../015 - Dicion\303\241rios.py" | 68 ++++++++ "Python b\303\241sico/016 - Classe tuple.py" | 49 ++++++ "Python b\303\241sico/017 - Classe set.py" | 62 +++++++ .../018 - M\303\263dulo Random.py" | 73 +++++++++ ...19 - Vari\303\241veis Locais e Globais.py" | 70 ++++++++ "Python b\303\241sico/020 - Try e Except.py" | 154 ++++++++++++++++++ ...Namespaces de M\303\263dulos e Classes.py" | 45 +++++ ...22 - POO 01 (conceitos b\303\241sicos).py" | 98 +++++++++++ ...gumentos e padrozina\303\247\303\243o).py" | 53 ++++++ .../024 - POO 03 (operadores de classes).py" | 58 +++++++ .../025 - POO 04 (heran\303\247a).py" | 71 ++++++++ ...026 - POO 05 (modificadores de acesso).py" | 26 +++ 29 files changed, 1598 insertions(+) create mode 100644 "Python b\303\241sico/001 - Express\303\265es, vari\303\241veis e atribui\303\247\303\265es.py" create mode 100644 "Python b\303\241sico/002 - Strings.py" create mode 100644 "Python b\303\241sico/003 - Listas.py" create mode 100644 "Python b\303\241sico/004 - Math e Fractions.py" create mode 100644 "Python b\303\241sico/005 - Print, Input, Eval.py" create mode 100644 "Python b\303\241sico/006 - If, Else e Edenta\303\247\303\243o.py" create mode 100644 "Python b\303\241sico/007 - For e Range.py" create mode 100644 "Python b\303\241sico/008 - Fun\303\247\303\265es.py" create mode 100644 "Python b\303\241sico/009 - M\303\251todos Strings.py" create mode 100644 "Python b\303\241sico/010 - Manipulando arquivos.py" create mode 100644 "Python b\303\241sico/010 - Manipulando arquivos/texto-grava\303\247\303\243o.txt" create mode 100644 "Python b\303\241sico/010 - Manipulando arquivos/texto-leitura.txt" create mode 100644 "Python b\303\241sico/010 - Manipulando arquivos/texto3.txt" create mode 100644 "Python b\303\241sico/011 - Data e Hora.py" create mode 100644 "Python b\303\241sico/012 - Elif e La\303\247o acumulador.py" create mode 100644 "Python b\303\241sico/013 - Listas bidimensionais.py" create mode 100644 "Python b\303\241sico/014 - La\303\247o While.py" create mode 100644 "Python b\303\241sico/015 - Dicion\303\241rios.py" create mode 100644 "Python b\303\241sico/016 - Classe tuple.py" create mode 100644 "Python b\303\241sico/017 - Classe set.py" create mode 100644 "Python b\303\241sico/018 - M\303\263dulo Random.py" create mode 100644 "Python b\303\241sico/019 - Vari\303\241veis Locais e Globais.py" create mode 100644 "Python b\303\241sico/020 - Try e Except.py" create mode 100644 "Python b\303\241sico/021 - Namespaces de M\303\263dulos e Classes.py" create mode 100644 "Python b\303\241sico/022 - POO 01 (conceitos b\303\241sicos).py" create mode 100644 "Python b\303\241sico/023 - POO 02 (argumentos e padrozina\303\247\303\243o).py" create mode 100644 "Python b\303\241sico/024 - POO 03 (operadores de classes).py" create mode 100644 "Python b\303\241sico/025 - POO 04 (heran\303\247a).py" create mode 100644 "Python b\303\241sico/026 - POO 05 (modificadores de acesso).py" diff --git "a/Python b\303\241sico/001 - Express\303\265es, vari\303\241veis e atribui\303\247\303\265es.py" "b/Python b\303\241sico/001 - Express\303\265es, vari\303\241veis e atribui\303\247\303\265es.py" new file mode 100644 index 0000000..df5c77c --- /dev/null +++ "b/Python b\303\241sico/001 - Express\303\265es, vari\303\241veis e atribui\303\247\303\265es.py" @@ -0,0 +1,43 @@ +#EXPRESSÕES, VARIÁVEIS E ATRIBUIÇÕES +print("_____________________________________________________________________________") + +print("\nOPERADORES BÁSICOS: ") +print("\nSoma: 3+7 =",3+7) +print("\nSubtração: 10-4 =",10-4) +print("\nMultiplicação: 3*2 =",3*2) +print("\nPotenciação: 2**3 =", 3**2) +print("\nDivisão: 5/2 =",5/2) +print("\nDivisão (resultado inteiro): 5//2 =", 5//2) +print("\nDivisão (resto da divisão): 14%3 =", 14%3) +print("\nValor absoluto de um número: abs(-4.5) =", abs(-4.5)) +print("\nMaior valor: max(-4, 5, 70, 28, 415, -12) =", max(-4, 5, 70, 28, 415, -12)) +print("\nMenor valor: min(-4, 5, 70, 28, 415, -12) =", min(-4, 5, 70, 28, 415, -12)) + +print("\n_____________________________________________________________________________") + +print("\nEXPRESSÕES E OPERADORES BOOLEANOS:") +print("\nMaior que: 5>4 é", 5>4) +print("\nMenor que: 3<2 é", 3<2) +print("\nMaior ou igual: 6>=6 é", 6>=6) +print("\nMenor ou igual: 5<=4 é", 5<=4) +print("\nIgual a: 5==5 é ", 5 == 5) +print("\nDiferente de: 5!=5 é ", 5 != 5) +print("\nOU: True or False =", True or False) +print("\nE: True and False =", True and False) + +print("\n_____________________________________________________________________________") + +print("\nATRIBUIÇÕES:") +print("\nÉ possível atribuir e reescrever valores de variáveis a qualquer momento:") +print("\nx = 4") +x = 4 +print(x) +print("x = 7") +x = 7 +print(x) +print("y = x") +y=x +print(y) + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") diff --git "a/Python b\303\241sico/002 - Strings.py" "b/Python b\303\241sico/002 - Strings.py" new file mode 100644 index 0000000..91961a6 --- /dev/null +++ "b/Python b\303\241sico/002 - Strings.py" @@ -0,0 +1,19 @@ +#STRINGS +print("_____________________________________________________________________________") +print("\nCONSIDERANDO AS STRINGS:") +print("\ns1 = 'dog' \ns2 = 'cat' \ns3 = 'fish'") +s1 = 'dog' +s2 = 'cat' +s3 = 'fish' +print("\nPODEMOS...") + +print("\nI - Contatenar strings: s1 + s2 =", s1+s2) +print("\nII - Contatenar cópias de uma string n vezes: s1 * 5 =", s1*5) +print("\nIII - Verificar se é uma substring da string: 'og' in s1 =", 'og' in s1) +print("\nIV - Verificar se NÃO é uma substring da string: 'ag' not in s1 =", 'og' in s1) +print("\nV - Verificar o comprimento de uma string: len(s1) =", len(s1)) +print("\nVI - Verificar caractere no índice i da string: s1[0]=", s1[0], " s1[1]=", s1[1]," s1[2]=", s1[2]) +print("Lembre-se do 0 como sendo o primeiro número na programação") + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/003 - Listas.py" "b/Python b\303\241sico/003 - Listas.py" new file mode 100644 index 0000000..bab98c1 --- /dev/null +++ "b/Python b\303\241sico/003 - Listas.py" @@ -0,0 +1,89 @@ +#LISTAS +print("_____________________________________________________________________________") + +print("\nEm Python, listas são sequências de objetos, podendo esses serem números, strings ou outras listas.") + +print("\nlista = ['um', 2, [3, 4]]") +lista = ['um', 2, [3, 4], 5.0] +print("\nlista1 = [1, 2, 3, 4]") +lista1 = [1, 2, 3, 4] +print("\nlista2 = ['dog, 'cat, 'fish']") +lista2 = ['dog', 'cat', 'fish'] + +print("\nDo mesmo modo que funcionam com strings, esse comandos também funcionam com listas: ") +print("\n1 - x in lst - Verifica se um item x está na lista") +print("2 - x not in lst - Verifica se um item x NÃO está na lista") +print("3 - lstA + lstB - Contatena duas listas") +print("4 - lst * n, n * lst - Contatena n cópias da lista list") +print("5 - lst[i] - Item da lista no índice i") +print("6 - len(lst) - Número de elementos que tem na lista") +print("7 - min(lst) - Menor item da lista (MENOR STRING OU MENOR NÚMERO DA LISTA)") +print("8 - max(lst) - Maior item da lista (MAIOR STRING OU MAIOR NÚMERO DA LISTA)") +print("9 - sum(lst) - Soma os itens da lista (PARA NÚMEROS)") + +print("\n_____________________________________________________________________________") + +print("\nMÉTODOS DE LISTA") +print("\nMétodos - Função associada a um objeto ou uma classe") +print("Argumentos - Valor ou variável passada para uma função") + +print("\ncores = ['azul', 'vermelho', 'amarelo']") +cores = ['azul', 'vermelho', 'amarelo'] + +print("\nI - lst.append(item): Adiciona item ao final da lista") +print("\ncores.append('verde')") +print(cores) + +print("\nII - lst.count(item): Retorna número de vezes que item aparece na lista") +print("\ncores.count('azul')") +print(cores.count('azul'), "- azul só aparece 1 vez na lista") + +print("\nIII - lst.index(item): Retorna no índice da primeira ocorrência do item na lista") +print("\ncores.index('vermelho')") +print(cores.index('vermelho'), "- vermelho aparece no índice 1 da lista") + +print("\nIV - lst.insert(índice, item): Insere item na lista antes de índice") +print("\ncores.insert(0, 'preto')") +cores.insert(0, 'preto') +print(cores) + +print("\nV - lst.pop(): Remove o último item da lista, mas você pode escolher qual item, colocando o ÍNDICE COMO PARÂMETRO.") +print("\ncores.pop()") +cores.pop() +print(cores) + +cores.append('amarelo') +print("\nVI - lst.remove(item): Remove a primeira ocorrência do item na lista") +print("\ncores.remove('preto')") +cores.remove('preto') +print(cores) + +print("\nVII - lst.reverse(): Inverte a ordem dos itens na lista") +print("\ncores.reverse()") +cores.reverse() +print(cores) + +print("\nVII - lst.sort(): é usado para ordenar os elementos de uma lista em ordem crescente") +print("NÚMEROS - Do menor para o maior") +print("STRINGS - Ordem alfabética") + +print("\nnumeros = [5, 2, 8, 1, 9, 3]") +numeros = [5, 2, 8, 1, 9, 3] +numeros.sort() +print(numeros) + +print("\nfrutas = ['banana', 'maçã', 'laranja', 'abacaxi']") +frutas = ['banana', 'maçã', 'laranja', 'abacaxi'] +frutas.sort() +print(frutas) + +print("\nVII - lst.sorted(): Mesma função do .sort(), mas NÃO modifica a lista") +print('numeros = [5, 2, 8, 1, 9, 3, 7, 12, 20]') +print('numeros_ordenados = sorted(numeros)') +numeros = [5, 2, 8, 1, 9, 3, 7, 12, 20] +numeros_ordenados = sorted(numeros) +print(numeros_ordenados) +print(numeros) + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/004 - Math e Fractions.py" "b/Python b\303\241sico/004 - Math e Fractions.py" new file mode 100644 index 0000000..3572db0 --- /dev/null +++ "b/Python b\303\241sico/004 - Math e Fractions.py" @@ -0,0 +1,57 @@ +#STRINGS + +import math +import fractions + +print("_____________________________________________________________________________") +print("\nMÓDULO math - Biblioteca de constantes e funções matemáticas") + +print("\nmath.sqrt(x) - Calcula a raiz quadrada de x") +print("math.sqrt(49) =", math.sqrt(49)) + +print("\nmath.ceil(x) - Menor inteiro que é >= x") +print("math.ceil(2.31) =", math.ceil(2.31)) + +print("\nmath.floor(x) - Maior inteiro que é <= x") +print("math.floor(2.31) =", math.floor(2.31)) + +print("\nmath.cos(x) - Cosseno de x") +print("math.cos(0) =", math.cos(0)) + +print("\nmath.sin(x) - Seno de x") +print("math.sin(0) =", math.sin(0)) + +print("\nmath.log(x, base) - Log de x na base") +print("math.log(32, 2) =", math.log(32, 2)) + +print("\nmath.pi - Valor de pi") +print(math.pi) + +print("\nmath.e - Constante de Euler") +print(math.e) + +print("\n_____________________________________________________________________________") +print("\nMÓDULO fractions - Usado para representar frações e realizar aritmética racional") + +a = fractions.Fraction(3, 4) +print("\na = fractions.Fraction(3, 4) -->", a) + +b = fractions.Fraction(1, 2) +print("\nb = fractions.Fraction(1, 2) -->", b) + +print("\na + b =", a + b) +print("\na * b =", a * b) + +print("\n_____________________________________________________________________________") +print("\nBÔNUS: CONVERSÃO DE VARIÁVEIS") + +print("\nx = 4.5") +x = 4.5 +print("int(x) =", int(x)) + +print("\ny = 3") +y = 3 +print("float(y) =", float(y)) + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/005 - Print, Input, Eval.py" "b/Python b\303\241sico/005 - Print, Input, Eval.py" new file mode 100644 index 0000000..9c1e0d1 --- /dev/null +++ "b/Python b\303\241sico/005 - Print, Input, Eval.py" @@ -0,0 +1,45 @@ +#PRINT, INPUT, EVAL +print("_____________________________________________________________________________") + +print("\nprint() - Função que imprime na tela toda informação dada a ela, podendo ser uma string, operações ou váriaveis") +print("(Como eu estive fazendo aqui desde o início)") + +print("\nx = 10") +print('print("x = 10")') +x=10 +print(x) + +print('\nprint("Bem vindo ao mundo do Python")') +print("Bem vindo ao mundo do Python") + +print("\n_____________________________________________________________________________") + +print("\ninput() - Função que exibe uma mensagem(ou não) e recebe um parâmetro do usuário.") + +print('\nnome = input("Digite seu primeiro nome: )') +print("A variável 'nome' recebe uma STRING do usuário. Sim, o input() só recebe STRING") + +x = input("\nDigite 5 para você ver: ") +print("x == 5 -->", x == 5) +print("x == '5' -->", x == '5') +print("( Se você quiser informar um valor que não seja uma string, você usa o eval() )") + +print("\n_____________________________________________________________________________") + +print("\neval() - Função que normalmente é colocada junto com o input() para avaliar o dado em uma não string") + +print("\neval('3')") +print(eval('3')) + +print("\neval('3 + 4')") +print(eval('3 + 4')) + +print("\neval('len([1, 2, 3, 4]')") +print(eval('len([1, 2, 3, 4])')) + +x = eval(input("\nDigite novamente 5 para você ver: ")) +print("x == 5 -->", x == 5) +print("x == '5' -->", x == '5') + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/006 - If, Else e Edenta\303\247\303\243o.py" "b/Python b\303\241sico/006 - If, Else e Edenta\303\247\303\243o.py" new file mode 100644 index 0000000..8ccdc84 --- /dev/null +++ "b/Python b\303\241sico/006 - If, Else e Edenta\303\247\303\243o.py" @@ -0,0 +1,31 @@ +#IF, ELSE E ENDENTAÇÃO +print("_____________________________________________________________________________") + +print("\nIF - É uma condicional, se sua condição for atendida, executa seu comando, se não, não executa") +print("\nELSE - Se a condição do if não for atendida e existir um else, o comando do else é executado") + +print("\nif temperatura > 25:") +print(' print("Está quente!")') +print("\nelse:") +print(' print("Não está quente!")') + +print("\n_____________________________________________________________________________") +print("\nLEMBRE DE ENDENTAR O CÓDIGO CORRETAMENTE") +print("\nOlhe a diferença dos códigos abaixo:") + +print("\nif temperatura > 25") +print(' print("Está quente!")') +print('print("Fim do programa")') + +print("\nif temperatura > 25") +print(' print("Está quente!")') +print(' print("Fim do programa")') + +print('\nNo primeiro código o "Fim do programa" aparecerá independente do if. No segundo código, ele faz parte do if.') + +print("\n_____________________________________________________________________________") + +print("\nBONÛS: Tudo que vem depois de # é ignorado pelo interpretador.") + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/007 - For e Range.py" "b/Python b\303\241sico/007 - For e Range.py" new file mode 100644 index 0000000..23243db --- /dev/null +++ "b/Python b\303\241sico/007 - For e Range.py" @@ -0,0 +1,44 @@ +#FOR E RANGE +print("_____________________________________________________________________________") + +print("\nFOR - É um laço de repetição, aqui está um exemplo do uso dele: ") + +print("\nfor x in name:") +print(" print(x)") + +print("\nx - é uma variável criada para o laço for") +print("name - pode ser qualquer coisa, uma string, uma lista, etc.") + +lista = [1, 3, 5, 7, 11, 13] +nome = "batata" + +print("\nFor em uma lista:") +for x in lista: + print(x) + +print("\nFor em uma string:") +for y in nome: + print(y) + +print("\n_____________________________________________________________________________") + +print("RANGE - Normalmente utilizado junto com o laço for e é usado para criar uma sequência de inteiros") + +print("\nrange(n) - Sequência de n valores começando do 0") +print("range(início, fim) - Sequência de números começando de início e terminando antes do fim") +print("range(início, fim, passo) - Sequência de números começando de início e terminando antes do fim, somando passo valores") + +print("\nfor a in range(6):") +for a in range(6): + print(a) + +print("\nfor b in range(1, 6):") +for b in range(1, 6): + print(b) + +print("\nfor c in range(0, 10, 2):") +for c in range(0, 10, 2): + print(c) + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/008 - Fun\303\247\303\265es.py" "b/Python b\303\241sico/008 - Fun\303\247\303\265es.py" new file mode 100644 index 0000000..9ccdc1d --- /dev/null +++ "b/Python b\303\241sico/008 - Fun\303\247\303\265es.py" @@ -0,0 +1,47 @@ +#FUNÇÕES +print("_____________________________________________________________________________") + +print("\nDEF - Utilizado para definir funções, aqui um exemplo de como usá-lo:") + +print("\ndef função(x):") +print(" return x + 5") + +print("\nSe você quiser invocá-la para qualquer valor, é só usar função(5)") + +print("\n_____________________________________________________________________________") +print("\nExemplo de função que calcula o quadrado de uma valor") + +print("\ndef quadrado(x):") +print(" return x**2") + +def quadrado(x): + return x**2 + +print("\nPassando 2 como parâmetro: ", quadrado(2)) +print("Passando 3 como parâmetro: ", quadrado(3)) +print("Passando 4 como parâmetro: ", quadrado(4)) +print("Passando 5 como parâmetro: ", quadrado(5)) + +print("\n_____________________________________________________________________________") +print("\nRETURN VS PRINT") + +print("\nreturn - Irá retornar o valor resultante como uma NÃO STRING sem imprimí-lo na tela") + +print("\nprint - Irá retornar o valor resultante como uma STRING imprimindo-o na tela") + +print("(Se quiser usar um ou outro vai depender do caso)") + +print("\n_____________________________________________________________________________") + +print("\nDOCSTRINGS - Basicamente, você pode colocar uma string dentro de uma função para especificar o que aquela esse função faz. Como coloque na função abaixo (veja abrindo por um editor):") + +def cubo(x): + 'Função que calcula o cubo de um número' + return x**3 + +print("\nQuando você quiser consultar esse docstring, é só utilizar help(nome da função)\n") +help(cubo) + + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/009 - M\303\251todos Strings.py" "b/Python b\303\241sico/009 - M\303\251todos Strings.py" new file mode 100644 index 0000000..79a50d7 --- /dev/null +++ "b/Python b\303\241sico/009 - M\303\251todos Strings.py" @@ -0,0 +1,52 @@ +#MÉTODOS DE STRINGS +print("_____________________________________________________________________________") +print("\nASPAS TRIPLAS (''' ''') - São usadas para definir uma string de várias linhas,") + +jogos = ''' +dark souls é um jogo de fantasia medieval. +bloodborne é um jogo de horror cósmico e temática gótica. +sekiro é um jogo que se passa em um cenário de japão feudal. +''' + +print("\nComo exemplo, veja o texto que atribui à variável jogos: ") +print(jogos) + +print("\n_____________________________________________________________________________") +print("\nMÉTODOS USADOS EM STRINGS:") + +print('\ns = "palavra"') +s = "palavra" + +print("\ns.captitalize() - Cópia da string com primeiro caractere com letra maiúscula (NÃO MODIFICA).") +print(s.capitalize()) + +print('\njogos.count("jogo") - Número de vezes que a substring "jogo" aparece no texto jogos.') +print(jogos.count('jogo')) + +print("\ns.lower() - Cópia da string com os caracteres em minúsculo (NÃO MODIFICA).") +print(s.lower()) + +print("\ns.upper() - Cópia da string com os caracteres em minúsculo (NÃO MODIFICA).") +print(s.upper()) + +print("\njogos.replace('jogo', 'game') - Substitui todas as ocorrências de uma substring por outra (NÃO MODIFICA).") +print("(Nesse caso, substitui 'jogo' por 'game')") +print(jogos.replace('jogo', 'game')) + +print("\njogos.find('jogo') - Índice da primeira ocorrência da substring 'jogo' na string jogos.") +print(jogos.find('jogo')) + +print('\nfrase = "Batata cozida é muito bom"') +frase = "Batata cozida é muito bom" + +print("\nfrase.split() - Uma lista de substrings da string frase usando o delimitador ',' por padrão.") +print(frase.split()) + +print("\nstr.makestrans e frase.translate(tabela) - Apenas veja a funcionalidade: ") + +print("\ntabela = str.maketrans('abcdefghijklmnopqrstuvwxyz', 'defghijklmnopqrstuvwxyzabc')") +tabela = str.maketrans('abcdefghijklmnopqrstuvwxyz', 'defghijklmnopqrstuvwxyzabc') +print("\nfrase.translate(tabela) --->",frase.translate(tabela)) + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/010 - Manipulando arquivos.py" "b/Python b\303\241sico/010 - Manipulando arquivos.py" new file mode 100644 index 0000000..068b759 --- /dev/null +++ "b/Python b\303\241sico/010 - Manipulando arquivos.py" @@ -0,0 +1,90 @@ +#MANIPULANDO ARQUIVOS +print("_____________________________________________________________________________") + +print("\nMANIPULAÇÃO DE ARQUIVOS") + +print('\narquivo = open("caminho", "modo")') + +print('\nNo meu caso, o CAMINHO é "/010 - Manipulando arquivos/texto-leitura.txt"') + +modos = '''r - modo de leitura (padrão) +w - modo de gravação (se o arquivo já existir, seu conteúdo é apagado) +a - modo de acréscimo (o conteúdo é acrescentado ao final do arquivo) +r+ - modo de leitura e gravação +t - modo de texto (padrão) +b - modo binário''' + +print("\nEm relação aos MODOS, temos o seguintes:\n") +print(modos) + +print("\n_____________________________________________________________________________") +print("\nLEITURA DE ARQUIVOS") + +print("\nABRINDO O ARQUIVO (Lembre-se de criar uma variável):") +print('arquivo = open("/010 - Manipulando arquivos/lista-leitura.txt", "r")') + +arquivo = open("/010 - Manipulando arquivos/texto-leitura.txt", "r") +print("\nVERIFICAR SE É POSSÍVEL LER ARQUIVO:") +print("arquivo.readable() -->", arquivo.readable()) +arquivo.close() + +arquivo = open("/010 - Manipulando arquivos/texto-leitura.txt", "r") +print("\narquivo.read() - Lê arquivo até o final e retorna como uma string") +print(arquivo.read()) +arquivo.close() + +arquivo = open("/010 - Manipulando arquivos/texto-leitura.txt", "r") +print("\narquivo.readline() - Lê arquivo de linha em linha e retorna a linha correspondente como uma string") +print(arquivo.readline()) +print(arquivo.readline()) +print(arquivo.readline()) +arquivo.close() + +arquivo = open("/010 - Manipulando arquivos/texto-leitura.txt", "r") +print("\narquivo.readlines() - Lê arquivo até o final e retorna uma lista de linhas como uma string") +print(arquivo.readlines()) +arquivo.close() + +print("\nFECHANDO ARQUIVO:") +print("arquivo.close()") + +obs = '''OBS: Você deve está se perguntando porque está cheio de "arquivo = open(...)" e +"arquivo.close()" no código, digamos que só é possível fazer essa leitura uma +vez, por isso que repeti inúmeras vezes essas linhas no código. Com meu +conhecimento atual, foi isso que entendi, posso estar errado.''' +print("\n", obs) + +print("\n_____________________________________________________________________________") +print("\nGRAVAÇÃO EM ARQUIVOS") + +arquivo = open("/010 - Manipulando arquivos/texto-gravação.txt", "a") + +print('arquivo.write("Elden Ring") - Acabei de adicionar "Elden Ring" no arquivo com esse comando') + +arquivo.write("\nElden Ring") +arquivo.close() + +print("\nOBS: Também posso usar o modo 'w' pra fazer isso, mas esse processo apagaria tudo de meu arquivo") + +print("\n_____________________________________________________________________________") +print("\nOBS: Escrevi outros textos no código, recomendo ler eles também") +print("\n_____________________________________________________________________________") + +# print("\n_____________________________________________________________________________") +# print("\nCRIANDO NOVO ARQUIVO") + +# arquivo = open("/010 - Manipulando arquivos/texto3.txt", "x") + +# print('arquivo.write("\nDark Souls I\nDark Souls II\nDark SoulsIII") - Criei um novo arquivo e adicionei esses itens com esse comando') +# arquivo.write("\nDark Souls I\nDark Souls II\nDark Souls III") + +# arquivo.close() + +# print("\n_____________________________________________________________________________") +# print("REMOVENDO ARQUIVOS") + +# import os +# os.remove("Estudo de Python/texto3.txt") + +input("\nPressione qualquer tecla para fechar...") + diff --git "a/Python b\303\241sico/010 - Manipulando arquivos/texto-grava\303\247\303\243o.txt" "b/Python b\303\241sico/010 - Manipulando arquivos/texto-grava\303\247\303\243o.txt" new file mode 100644 index 0000000..45c3655 --- /dev/null +++ "b/Python b\303\241sico/010 - Manipulando arquivos/texto-grava\303\247\303\243o.txt" @@ -0,0 +1,15 @@ +Demon Souls +Dark Souls I +Dark Souls II +Bloodborne +Dark Souls III +Sekiro + +Elden Ring +Elden Ring +Elden Ring +Elden Ring +Elden Ring +Elden Ring +Elden Ring +Elden Ring \ No newline at end of file diff --git "a/Python b\303\241sico/010 - Manipulando arquivos/texto-leitura.txt" "b/Python b\303\241sico/010 - Manipulando arquivos/texto-leitura.txt" new file mode 100644 index 0000000..ce82ef5 --- /dev/null +++ "b/Python b\303\241sico/010 - Manipulando arquivos/texto-leitura.txt" @@ -0,0 +1,6 @@ +Demon Souls +Dark Souls I +Dark Souls II +Bloodborne +Dark Souls III +Sekiro \ No newline at end of file diff --git "a/Python b\303\241sico/010 - Manipulando arquivos/texto3.txt" "b/Python b\303\241sico/010 - Manipulando arquivos/texto3.txt" new file mode 100644 index 0000000..65dfa2e --- /dev/null +++ "b/Python b\303\241sico/010 - Manipulando arquivos/texto3.txt" @@ -0,0 +1,4 @@ + +Dark Souls I +Dark Souls II +Dark Souls III \ No newline at end of file diff --git "a/Python b\303\241sico/011 - Data e Hora.py" "b/Python b\303\241sico/011 - Data e Hora.py" new file mode 100644 index 0000000..99e36e9 --- /dev/null +++ "b/Python b\303\241sico/011 - Data e Hora.py" @@ -0,0 +1,39 @@ +#DATA E HORA +print("_____________________________________________________________________________") + +import time +print("\nMÓDULO TIME - Modulo que fornece várias funções relacionadas a tempo.") + +print("\ntime.localtime() - Fornece o horário atual.") +print(time.localtime()) + +print("\ntime.strftime() - Fornece o horário no formato desejado.") +print('time.strftime("diretiva", time.localtime())') + +print("\nLista de diretivas: ") + +lista = '''%A - Dia da semana completo. +%a - Dia da semana abreviado. +%B - Nome do mês completo. +%b - Nome do mês abreviado. +%d - Dia do mês. +%H - Horas (00 e 23). +%I - Horas (1 e 12). +%M - Minutos. +%p - AM ou PM. +%S - Segundos. +%y - Ano (0 e 99). +%Y - Ano (número de 4 digitos). +%Z - Nome do fuso horário. ''' + +print(lista) + +print("\n_____________________________________________________________________________") + +data = time.strftime("%A, %d de %B de %Y", time.localtime()) +horario = time.strftime("%H:%m:%S", time.localtime()) + +print("DATA: ", data, "\nHORÁRIO: ", horario) + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") diff --git "a/Python b\303\241sico/012 - Elif e La\303\247o acumulador.py" "b/Python b\303\241sico/012 - Elif e La\303\247o acumulador.py" new file mode 100644 index 0000000..a271310 --- /dev/null +++ "b/Python b\303\241sico/012 - Elif e La\303\247o acumulador.py" @@ -0,0 +1,60 @@ +#ELIF +print("\_____________________________________________________________________________") +print('\nelif - Funciona como uma "terceira ou mais condicional" dentro de um bloco com if.') + +print("\nExemplo do funcionamento de elif: \n") + +texto = '''if temperatura <= 20: + print("Tá muito frio.") +elif 20 < temperatura <= 25: + print("Tá um pouco frio.") +elif 25 < temperatura <= 30: + print("Temperatura estável") +elif 30 < temperatura <= 35: + print("Tá quente viu.") +elif temperatura > 35: + print("Literalmente Mossoró.")''' + +print(texto) + +#LAÇO ACUMULADOR +print("\n_____________________________________________________________________________") + +print("\nLAÇO ACUMULADOR DE SOMA:") + +lista = [4, 5, -1, 12, 8] +soma = 0 + +for i in lista: + soma = soma + i + +texto1 = '''lista = [4, 5, -1, 12, 8] +soma = 0 + +for i in lista: + soma = soma + i''' + +print("\n" + texto1) + +print("\nSoma dos valores da lista = ", soma) + +print("\nLAÇO ACUMULADOR DE MULTIPLICAÇÃO:") + +lista = [4, 5, -1, 12, 8] +multiplicação = 1 + +for j in lista: + multiplicação = multiplicação * j + +texto2 = '''lista = [4, 5, -1, 12, 8] +multiplicação = 1 + +for i in lista: + multiplicação = multiplicação * i''' + +print("\n"+ texto2) + +print("\nMultiplicação dos valores da lista = ", multiplicação) + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/013 - Listas bidimensionais.py" "b/Python b\303\241sico/013 - Listas bidimensionais.py" new file mode 100644 index 0000000..9286ee6 --- /dev/null +++ "b/Python b\303\241sico/013 - Listas bidimensionais.py" @@ -0,0 +1,46 @@ +#LISTAS BIDIMENSIONAIS +print("_____________________________________________________________________________") +print("\nLISTAS BIDIMENSIONAIS - É possível fazer listas bidimensionais no Python a partir do seguinte formato:") + +matriz = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] + +texto = '''\nmatriz = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] onde... +matriz[linha][coluna]''' +print(texto) + +print("\nIMPRIMINDO A MATRIZ:") +def imprimir_matriz(matriz): + for linha in matriz: + print(linha) +imprimir_matriz(matriz) + +print("\nIMPRIMINDO OS ITENS DA MATRIZ:") +def imprimir_itens(matriz): + for linha in matriz: + for item in linha: + print(item, end=' ') + print() +imprimir_itens(matriz) + +print("\nSOMANDO DUAS MATRIZES:") + +matrizes = '''matriz1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] +matriz2 = [[4, 3, 2], [1, 0, -1], [-2, -3, -4]] +''' +print(matrizes) + +matriz1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] +matriz2 = [[4, 3, 2], [1, 0, -1], [-2, -3, -4]] +matriz3 = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] + +def soma(matriz1, matriz2, matriz3): + for i in range(3): + for j in range(3): + matriz3[i][j] = matriz1[i][j] + matriz2[i][j] + +soma(matriz1, matriz2, matriz3) +imprimir_matriz(matriz3) + + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/014 - La\303\247o While.py" "b/Python b\303\241sico/014 - La\303\247o While.py" new file mode 100644 index 0000000..d6b6453 --- /dev/null +++ "b/Python b\303\241sico/014 - La\303\247o While.py" @@ -0,0 +1,84 @@ +#LAÇO WHILE +print("_____________________________________________________________________________") +print('''\nLAÇO WHILE - Usado, principalmente, para repetições. Se a sua condição for verdadeira, +o bloco de código endentado pe executado, se não, ele pula pra instrução não edentada.''') + +print("\nFORMATO DA INSTRUÇÃO WHILE:") +print('''\nwhile : + +''') + + +def pares(limite): + lista_pares = [] + num = -2 + while num < limite: + num = num + 2 + lista_pares.append(num) + return lista_pares + +print("\nNúmeros pares: ", pares(10)) + +def ímpares(limite): + lista_ímpares = [1] + num = 1 + while num < limite: + num = num + 2 + lista_ímpares.append(num) + return lista_ímpares + +print("\nNúmeros ímpares: ", ímpares(10)) + +def fibbonaci(limite): + lista_fibbonaci = [1, 1] + anterior = 1 + atual = 1 + while atual <= limite: + anterior, atual = atual, atual+anterior + lista_fibbonaci.append(atual) + return lista_fibbonaci + +print("\nFibbonaci: ", fibbonaci(10)) + +print('\nOBS: Se quiser fazer um laço infinito, basta fazer "while True:".') + +print("\n_____________________________________________________________________________") +print("\nBREAK - Interrompe a instrução de iteração mais próxima.") + +print("\nNesse exemplo, com o BREAK, ele para de imprimir a linha da tabela quando encontra um 0:") +print("\ntabela = [[4, 0, 7], [2, 1, 0], [0, 0, 8]]") +tabela = [[4, 0, 7], [2, 1, 0], [0, 0, 8]] +def sem_zero(tabela): + for linha in tabela: + for item in linha: + if item == 0: + break + print(item, end = ' ') + print() +sem_zero(tabela) + +print('''\nPASS- Não faz nada (sem zoas). Usado nas raras ocasiões que você +quer que um que um bloco de código não faça nada. Exemplo:''') + +print('''\nn = 3 +if n % 2 == 0: + pass +else: + print(n)''') + +print('''\nCONTINUE - Continua a instrução inicia uma nova iteração da instrução de iteração mais próxima.''') + +print("\nNesse exemplo, com o CONTINUE, ele só deixa de imprimir o 0 e não deixa de imprimir a linha:") +print("\ntabela = [[4, 0, 7], [2, 1, 0], [0, 0, 8]]") +tabela = [[4, 0, 7], [2, 1, 0], [0, 0, 8]] +def sem_zero(tabela): + for linha in tabela: + for item in linha: + if item == 0: + continue + print(item, end = ' ') + print() +sem_zero(tabela) + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/015 - Dicion\303\241rios.py" "b/Python b\303\241sico/015 - Dicion\303\241rios.py" new file mode 100644 index 0000000..f523936 --- /dev/null +++ "b/Python b\303\241sico/015 - Dicion\303\241rios.py" @@ -0,0 +1,68 @@ +#DICIONÁRIOS +print("\_____________________________________________________________________________") +print('''\nDICIONÁRIO - Às vezes, utilizar listas em Python não é funcional, por isso que essa +lingauagem possuí uma contêiner imbutido chamado dicionário, onde podemos atribuir +valores à chaves fornecidas pelo usuário.''') + +texto1 = '''\nempregado = { +'050.181.570-98' : ['Albert Wesker'], +'007.423.325-74' : ['Chris Redfield'], +'049.242.407-65' : ['Jill Valentine'] +}''' + +print(texto1) + +empregado = { +'050.181.570-98' : ['Albert Wesker'], +'007.423.325-74' : ['Chris Redfield'], +'049.242.407-65' : ['Jill Valentine'] +} + +print("\nempregado['007.423.325-74'] --> ", empregado['007.423.325-74']) +print("empregado['049.242.407-65'] -->", empregado['049.242.407-65']) +print("empregado['050.181.570-98'] -->", empregado['050.181.570-98']) + +print("\n_____________________________________________________________________________") + +print("PROPRIEDADES DA CLASSE DICIONÁRIO - Também podemos fazer o mesmo nesse seguinte formato...") + +print("\nvariável = {:, : , ..., : }") + +print("\ndias = {'seg':'segunda-feira', 'ter':'terça-feira', 'qua':'quarta-feira', 'qui':'quinta-feira', 'sex':'sexta-feira'}") + +dias = {'seg':'segunda-feira', 'ter':'terça-feira', 'qua':'quarta-feira', 'qui':'quinta-feira', 'sex':'sexta-feira'} + +print("\ndias['seg'] --> {0}\ndias['ter'] --> {1}\ndias['qua'] --> {2}\ndias['qui'] --> {3}\ndias['seg'] --> {4}".format(dias['seg'], dias['ter'], dias['qua'], dias['qui'], dias['sex'])) + +print('\nTAMBÉM É POSSÍVEL MODIFICAR OU ADICIONAR NOVOS VALORES') + +print('''\ndias['sáb'] = 'sábado' +dias['sex'] = 'SEXTA-FEIRA''') + +dias['sáb'] = 'sábado' +dias['sex'] = 'SEXTA-FEIRA' +print() +print(dias) + +print("\n_____________________________________________________________________________") +print('\nMÉTODOS DE DICIONÁRIO') + +print('\ndias.items() - ', dias.items()) + +print('\ndias.keys() - ', dias.keys()) + +print('\ndias.values() - ', dias.values()) + +print("\nd.get(chave) - dias.get('qua') -->", dias.get('qua')) + +dias.pop('sáb') +print("\nd.pop(chave) - dias.pop('sáb') -->", dias) + +print("\nfds = {'sab':'sábado', 'dom' : 'domingo'}") +fds = {'sab':'sábado', 'dom' : 'domingo'} +print("\ndias.update(fds)") +dias.update(fds) +print("\ndias =", dias) + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/016 - Classe tuple.py" "b/Python b\303\241sico/016 - Classe tuple.py" new file mode 100644 index 0000000..a96e5f2 --- /dev/null +++ "b/Python b\303\241sico/016 - Classe tuple.py" @@ -0,0 +1,49 @@ +#CLASSE TUPLE +print("_____________________________________________________________________________") + +print('''\nTUPLAS - Tuplas são estruturas de dados permitem armazenar vários valores +relacionados em uma única variável. Elas são semelhantes às listas, mas são +IMUTÁVEIS, o que significa que uma vez criada NÃO É POSSÍVEL... + +- Adicionar elementos indivíduais da tupla +- Remover elementos indivíduais da tupla +- Alterar elementos indivíduais da tupla''') + +print('''\nDIFERENTE DAS LISTAS, AS TUPLAS SÃO DELIMITADAS POR PARENTÊSES: + +tupla = (1, 2, 3, 4, 5) +lista = [1, 2, 3, 4, 5]''') + +tupla = (1, 2, 3, 4, 5) +lista = [1, 2, 3, 4, 5] + +print("\nMANIPULAÇÃO DE TUPLAS:") +print("\nVerificando itens: tupla[1] --> ", tupla[1]) +print("Modificando itens: tupla[1] = 7 --> ", TypeError) +print("Adicionando: tupla[5] = 6 --> ", TypeError) + +print("\n_____________________________________________________________________________") +print("USOS DAS TUPLAS - Utilizando objetos tupla, podemos...") + +print("\nRETORNAR MAIS DE UMA VALOR EM UMA FUNÇÃO:") + +def soma_e_média(notas): + soma = sum(notas) + media = sum(notas)/3 + return (soma, media) +notas = [9.0, 8.0, 10.0] + +print("Soma e média das notas = [8.0, 9.0, 7.5] -->", soma_e_média(notas)) + +print("\nUSAR UMA TUPLA COMO CHAVE DE UM DICIONÁRIO:") + +empregado = { + ('Albert, Wesker') : '050.181.570-98', + ('Chris, Redfield') : '007.423.325-74', + ('Jill, Valentine') : '049.242.407-65' +} + +print("Passando tupla ('Albert, Wesker') como chave -->", empregado[('Albert, Wesker')]) + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/017 - Classe set.py" "b/Python b\303\241sico/017 - Classe set.py" new file mode 100644 index 0000000..37cdc2a --- /dev/null +++ "b/Python b\303\241sico/017 - Classe set.py" @@ -0,0 +1,62 @@ +print("\n_____________________________________________________________________________") + +print('''SET - Um objeto set é uma coleção de elementos únicos e não ordenados. Isso significa +que um set NÃO pode conter elementos duplicados, ele também REORDENA os elementos.''') + +print("\nOBJETOS DA CLASSE SET SÃO DELIMITADAS POR CHAVES:") + +print("\nconjunto1 = {1, 2, 4, 5, 5, 3}") +conjunto1 = {1, 2, 4, 5, 5, 3} +print("conjunto1 -->", conjunto1) + +print("\nÉ POSSÍVEL USAR ELE PARA REMOVER DUPLICATAS DE UMA LISTA:") + +print("\nlista = [23, 19, 18, 21, 18, 20, 21, 23, 22, 23, 19, 20]") +lista = [23, 19, 18, 21, 18, 20, 21, 23, 22, 23, 19, 20] +print("lista = list(set(lista))") +lista = list(set(lista)) +print("lista -->", lista) + +print("_____________________________________________________________________________") +print("OPERAÇÕES COM SET") + +print("\nFora os operadores lógicos báscios (in, not in, ==, !=, <, <=), também temos:") + +conjuntoI = {1, 2, 3, 4, 5} +conjuntoII = {4, 5, 6, 7, 8} + +print('''\nconjuntoI = {1, 2, 3, 4, 5} +conjuntoII = {4, 5, 6, 7, 8}''') + +print("\nUNIÃO( | ) - Une os elementos de cada objeto set.") +print("conjutoI | conjuntoII -->", conjuntoI | conjuntoII) + +print("\nINTERSEÇÃO( & ) - Elementos em comum dos dois objetos set.") +print("conjutoI & conjuntoII -->", conjuntoI & conjuntoII) + +print("\nDIFERENÇA( - ) - Oque tem no conjuntoI e não tem no conjuntoII.") +print("conjutoI - conjuntoII -->", conjuntoI - conjuntoII) + +print("\nDIFERENÇA( ^ ) - Elementos tem no conjuntoI ou no conjuntoII, mas NÃO EM AMBOS") +print("conjutoI ^ conjuntoII -->", conjuntoI ^ conjuntoII) + +print("\n_____________________________________________________________________________") +print("MÉTODOS COM SET") + +print("\nnomes = {'Pedro', 4, 'Ana', 'Paula', 'Jorge'}") +nomes = {'Pedro', 4, 'Ana', 'Paula', 'Jorge'} + +nomes.add('Patrícia') +print("\nnomes.add('Patrícia') - Adiciona um elemento ao conjunto.") +print("nomes -->", nomes) + +nomes.remove(4) +print("\nnomes.remove(4) - Remove um elemento do conjunto.") +print("nomes -->", nomes) + +nomes.clear() +print("\nnomes.clear() - Apaga todos os elementos do conjunto.") +print("nomes -->", nomes) + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/018 - M\303\263dulo Random.py" "b/Python b\303\241sico/018 - M\303\263dulo Random.py" new file mode 100644 index 0000000..3d5704b --- /dev/null +++ "b/Python b\303\241sico/018 - M\303\263dulo Random.py" @@ -0,0 +1,73 @@ +#MÓDULO RANDOM +print("_____________________________________________________________________________") +import random + +print("\nI - random.randrange(x, y) - Gera um valor aleátorio entre x (incluindo x) e y (não incluindo y).") + +print("\nEscolhendo um int aleátorio entre 1 e 7:") + +def randint(): + contador = 0 + while contador != 5: + num = random.randrange(1,7) + contador += 1 + print(num) + +randint() + +print("\nII - random.uniform(x, y) - Gera um valor aleátorio n do tipo float de modo que x <= n <= y.") + +print("\nEscolhendo um float aleátorio entre 1 e 2:") + +def randfloat(): + contador = 0 + while contador != 5: + num = random.uniform(1,2) + contador += 1 + print(num) + +randfloat() + +print("\nIII - random.choice(list) - Escolhe de forma aleatória um item do contêiner list.") + +print("\nlista = ['maça', 'banana', 'uva', 'abacaxi', 'laranja', 'ameixa', 'pera', 'pêssego']") +lista = ['maça', 'banana', 'uva', 'abacaxi', 'laranja', 'ameixa', 'pera', 'pêssego'] + +print("\nEscolhendo um item aleátorio de lista:") + +def randstring(list): + contador = 0 + while contador != 5: + item = random.choice(list) + contador += 1 + print(item) + +randstring(lista) + +print("\nIV - random.sample(list, k) - Fornece uma amostra aleátoria do contêiner list com k itens.") + +print("\nlista = ['maça', 'banana', 'uva', 'abacaxi', 'laranja', 'ameixa', 'pera', 'pêssego']") +lista = ['maça', 'banana', 'uva', 'abacaxi', 'laranja', 'ameixa', 'pera', 'pêssego'] + +print("\nEscolhendo 3 itens aleátorios da lista:") + +def randsample(list): + contador = 0 + while contador != 5: + item = random.sample(list, 3) + contador += 1 + print(item) + +randsample(lista) + +print("\nV - random.shuffle(list) - Embaralha os itens do contêiner list.") + +print("\nvalores = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]") +valores = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + +print("\nrandom.shuffle(valores) -->", random.shuffle(valores)) +print("random.shuffle(valores) -->", random.shuffle(valores)) +print("random.shuffle(valores) -->", random.shuffle(valores)) + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/019 - Vari\303\241veis Locais e Globais.py" "b/Python b\303\241sico/019 - Vari\303\241veis Locais e Globais.py" new file mode 100644 index 0000000..ff11032 --- /dev/null +++ "b/Python b\303\241sico/019 - Vari\303\241veis Locais e Globais.py" @@ -0,0 +1,70 @@ +#VARIÁVEIS LOCAIS E GLOBAIS +print("_____________________________________________________________________________") +print('''Variáveis LOCAIS - Declaradas dentro do escopo de um função. +Variáveis GLOBAIS - Declaradas fora do escopo de uma função''') + +def dobro(y): + x = 2 + return y*x + +x = 0 + +print('''\ndef dobro(y): + x = 2 #Todas as referências de x na função dobro são locais + return y*x + +x = 0 #Já aqui, temos uma variável global''') + +print("\ndobro(3) =", dobro(3)) +print("valor de x =", x) + +print("\n(Com isso, vemos que as variáveis locais são visíveis apenas para o código dentro da função.)") + +print("\n_____________________________________________________________________________") +print('''\nIMPORTANTE - Se uma variável for usada dentro de uma função, mas nenhum +valor é atribuído à ela, e essa mesma variável for declarada globalmente +com um valor, a função utilizará desse valor quando for trabalhar com a +variável em questão. + +EXEMPLO:''') + +def multiplicar(y): + return x*y + +x = 0 + +print('''\ndef multiplicar(y): + return x*y + +x = 0''') + +print('''\nValor de x = {0} +multiplicar(3) = {1}'''.format(x, multiplicar(3))) + +print("\n(Aqui vemos que o x = 0 também foi usada na função multiplicar(), justamente por não ter sido declarado.") + +print("_____________________________________________________________________________") +print("MUDANDO O VALOR DA VARIÁVEL GLOBAL - Se você quiser que a função mude o valor da variável global...") + +def triplo(b): + global a + a = 3 + return b*a + +x = 0 + +print('''\ndef triplo(b): + global a + a = 3 + return b*a + +x = 0''') + +print("\ntriplo(3) =", triplo(3)) +print("valor de a =", a) + +print("\n(Com isso, vemos que o valor de a foi MODIFICADO para 3.)") + + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/020 - Try e Except.py" "b/Python b\303\241sico/020 - Try e Except.py" new file mode 100644 index 0000000..524c19f --- /dev/null +++ "b/Python b\303\241sico/020 - Try e Except.py" @@ -0,0 +1,154 @@ +#EXCEPT E TRY +print("_____________________________________________________________________________") + +print('''\nTRY E EXCEPT - O try e except são estruturas de controle de fluxo em Python +que permitem lidar com exceções, ou seja, situações em que um erro pode ocor- +rer durante a execução do programa.''') + +print('''\nEXEMPLO DO MODELO DE USO: + +try: + +except: + + + +AQUI UM EXEMPLO DE CÓDIGO COM TRY E EXCEPT: + +def sua_idade(): + try: + idade_str = input("Digite sua idade: ") + idade_int = int(idade_str) + print("Você tem { 0 } anos".format(idade_int)) + except: + print("Digite uma idade com números!") +''') + +def sua_idade(): + try: + idade_str = input("Digite sua idade: ") + idade_int = int(idade_str) + print("Você tem {0} anos".format(idade_int)) + except: + print("Digite uma idade com números!") + +print("\nExperimente digitar um número inteiro: ") +print() +sua_idade() +print() +print("\nAgora, digite um texto (tipo 'quinze'): ") +print() +sua_idade() +print() + +print("\n_____________________________________________________________________________") + +print('''\nMANIPULADORES DE EXCEÇÕES - Pode existir quantos excepts nós quisermos e ainda +podemos indicar o tipo de erro em cada um:''') + +print('''def sua_idade2(): + try: + idade_str = input("Digite sua idade: ") + idade_int = int(idade_str) + print("Você tem { 0 } anos".format(idade_int)) + except IOError: + print("Erro de entrada/saída") + except ValueError: + print("Valor não pode ser convertido para inteiro") + except: + print("Algum outro erro aconteceu.") + +(Ou seja, se identicar o erro como IOError, uma mensagem aparece, se identificar como +ValueError, outra mensagem aparece, se não for nenhum dos dois, a mensagem final aparece)''') + +print("\n_____________________________________________________________________________") +print("IDENTIFICANDO ERROS") + +funcao = '''\ndef h(n): + print("Funçao h") + print(1/n) + except: + print("Erro encontrado!") + +def g(n): + print("Funçao g") + h(n-1) + print(n) + +def f(n): + print("Funçao f") + g(n-1) + print(n)''' + +print(funcao) +print('''\nNa função f, chega um momento que, após chamar a função f, acontece uma +divisão por zero quando f(2). Com isso podemos usar try e except pra quando isso ocorrer.''') + +funcao2 ='''\ndef h(n): + print("Funçao h") + try: + print(1/n) + print(n) + except: + print("Erro encontrado!") + +def g(n): + print("Funçao g") + h(n-1) + print(n) + +def f(n): + print("Funçao f") + g(n-1) + print(n)''' + +print(funcao2) + +def h(n): + print("Funçao h") + try: + print(1/n) + print(n) + except: + print("Erro encontrado!") + +def g(n): + print("Funçao g") + h(n-1) + print(n) + +def f(n): + print("Funçao f") + g(n-1) + print(n) +print() +f(2) + +print("\n_____________________________________________________________________________") + +print("\nAQUI TEM UMA LISTA DE ERROS PRA CASO QUEIRA USAR:") + +lista_de_erros = '''\nSyntaxError: ocorre quando a sintaxe do código não está correta. + +IndentationError: ocorre quando a indentação do código não está correta. + +NameError: ocorre quando uma variável ou função é referenciada antes de ser definida. + +TypeError: ocorre quando se tenta fazer uma operação com tipos de dados incompatíveis. + +ValueError: ocorre quando o tipo de dado é correto, mas o valor não é adequado. + +KeyError: ocorre quando se tenta acessar uma chave que não existe em um dicionário. + +IndexError: ocorre quando se tenta acessar um índice que está fora do limite de uma lista ou tupla. + +AttributeError: ocorre quando se tenta acessar um atributo que não existe em um objeto. + +ImportError: ocorre quando um módulo não pode ser importado. + +OSError: ocorre quando ocorre um erro de sistema, como permissão negada ou arquivo não encontrado.''' + +print(lista_de_erros) + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/021 - Namespaces de M\303\263dulos e Classes.py" "b/Python b\303\241sico/021 - Namespaces de M\303\263dulos e Classes.py" new file mode 100644 index 0000000..2172ddc --- /dev/null +++ "b/Python b\303\241sico/021 - Namespaces de M\303\263dulos e Classes.py" @@ -0,0 +1,45 @@ +print("_____________________________________________________________________________") +#MÓDULOS +print('''\nNAMESPACES DE MÓDULOS - Os módulos, quando executados, são namespaces. É +justamente nos módulos que estão definidos os nomes de funções, valores e classes.''') + +print("\nCOMANDO dir() - Serve para visualizar os atributos de um módulo.") +print('''\nimport math +dir(math)\n''') +import math +print(dir(math)) + +print("\n'__doc__', '__loader__', '__name__', '__package__', '__spec__'") +print('''(Esses são módulos que existem para cada modulo importado, são definidos pelo +interpretador no momento que o módulo é importando para fins de manutenção''') + +print("\n_____________________________________________________________________________") + +print('''\nQUANDO UM INTERPRETRADOR EXECUTA(IMPORTA) UM MÓDULO: +1) Procura o arquivo do módulo; +2) Executa o código do módulo para criar objetos definidios no módulo; +3) Cria um namespace que residira os nomes desses objetos.''') + +print("\n_____________________________________________________________________________") +#CLASSES +print('''\nNAMESPACES DE CLASSES - O mesmo vale para classes, o nome do namespace é o nome +da classe e dentro do namespace estão armazenado os nomes dos atributos das classes, +como os métodos da classe.''') + +print("\ndir(list)") +print(dir(list)) + +print("\nOUTRA FORMA DE CHAMAR OS MÉTODOS - Por isso podemos chamar os métodos de classes dessas forma:") + +lista1 = [4, 8, 7, 6, 5, 9, 3, 1, 2, 10] +lista2 = [7, 6, 5, 9, 3, 1, 2, 10, 4, 8] +print("\nlista1 = [4, 8, 7, 6, 5, 9, 3, 1, 2, 10]") +print("lista2 = [7, 6, 5, 9, 3, 1, 2, 10, 4, 8]") +lista1.sort() +print('\nlista1.sort() -->', lista1) +list.sort(lista2) +print('list.sort(lista2) -->', lista2) + +print("\n(As duas funcionam da mesma maneira)") +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/022 - POO 01 (conceitos b\303\241sicos).py" "b/Python b\303\241sico/022 - POO 01 (conceitos b\303\241sicos).py" new file mode 100644 index 0000000..e58a663 --- /dev/null +++ "b/Python b\303\241sico/022 - POO 01 (conceitos b\303\241sicos).py" @@ -0,0 +1,98 @@ +#PROGRAMAÇÃO ORIENTADA À OBJETOS 01 +print("_____________________________________________________________________________") + +print('''POO - Programação Orientada a Objetos é um paradigma de programação que se +baseia no conceito de objetos, que são entidades que possuem características +(atributos) e comportamentos(métodos). Os objetos que interagem entre si através +de mensagens. + +CLASSES - Define as características e comportamentos que os objetos terão. Uma classe +é como um modelo a partir do qual os objetos são criados. + +EXEMPLO DE UMA CLASSE POINT: ''') + +class Point: + 'classe que representa dois pontos em um plano cartesiano' + def definir_x(self, coordx): + 'define a coordenada x do ponto como coordx' + self.x = coordx + + def definir_y(self, coordy): + 'define a coordenada y do ponto como coordy' + self.y = coordy + + def mostrar(self): + 'mostra o ponto x e o ponto y do objeto em uma tupla' + return(self.x, self.y) + + def mover(self, dx, dy): + 'move as coordenadas de x e y tomando dx e dy com distância' + self.x += dx + self.y += dy + +classe_ponto = '''\nclass Point: + 'classe que representa dois pontos em um plano cartesiano' + def definir_x(self, coordx): + 'define a coordenada x do ponto como coordx' + self.x = coordx + + def definir_y(self, coordy): + 'define a coordenada y do ponto como coordy' + self.y = coordy + + def mostrar(self): + 'mostra o ponto x e o ponto y do objeto em uma tupla' + return(self.x, self.y) + + def mover(self, dx, dy): + 'move as coordenadas de x e y tomando dx e dy com distância' + self.x += dx + self.y += dy''' + +print(classe_ponto) + +print('''\nself - é utilizado para referenciar o OBJETO que está sendo manipulado dentro +de uma classe. Ele é utilizado em métodos de INSTÂNCIA, ou seja, métodos que são associados +a uma instância específica da classe.''') + +print("\n_____________________________________________________________________________") + +ponto = Point() +ponto.definir_x(2) +ponto.definir_y(4) + +print('''\nCRIANDO UM OBJETO POINT: + +ponto = Point() + +(Aqui estamos dizendo que ponto é um objeto da classe point) + +DEFININDO X E Y: + +ponto.definir_x(2) +ponto.definir_y(4) + +(Aqui estamos utilizando os métodos definir_x e definir_y) para definir os valores x e y do objeto ponto) + +VEJA O VALOR DE X E Y DO OBJETO PONTO: + +ponto.x = {0} +ponto.y = {1}'''.format(ponto.x, ponto.y, ponto.mostrar())) + +print("\nOUTRAS FUNÇÕES:\n\nponto.mostrar() --> {0}".format(ponto.mostrar())) +ponto.mover(4, 4) +print("\nponto.mover(4, 4)\nponto.x = {0}\nponto.y = {1}". format(ponto.x, ponto.y)) + +print("\n_____________________________________________________________________________") + +print(''' +IMPORTANTE VISUALIZAR: + +dir(Point) +{0} + +dir(ponto) +{1}'''.format(dir(Point), dir(ponto))) + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/023 - POO 02 (argumentos e padrozina\303\247\303\243o).py" "b/Python b\303\241sico/023 - POO 02 (argumentos e padrozina\303\247\303\243o).py" new file mode 100644 index 0000000..b015206 --- /dev/null +++ "b/Python b\303\241sico/023 - POO 02 (argumentos e padrozina\303\247\303\243o).py" @@ -0,0 +1,53 @@ +#PROGRAMAÇÃO ORIENTADA À OBJETOS 02 +print("_____________________________________________________________________________") + +print(''' +CONSTRUTOR COM ARGUMENTOS DE ENTRADA - Para criar uma classe que recebe argumentos de entrada +temos que incluir o método "def __init__()", como necesse exemplo: + +class Point: + def __init__(self, coordx, coordy): + self.x = coordx + self.y = coordy + +O método "def __init__()" obrigatoriamente deve possuir o self, o número de argumentos pode +ser quantos quisermos. Mas lembre-se que agora a criação de objetos Point só funcionam se +receberem dois argumentos, caso contrário: + +ponto = Point() --> {0} +'''.format(TypeError)) +print("\n_____________________________________________________________________________") + +class Point: + def __init__(self, coordx = 0, coordy = 0): + self.x = coordx + self.y = coordy + + def get (self): + return (self.x, self.y) + +a = Point() +b = Point(3, 2) + +print(''' +CONSTRUTOR PADRÃO - Se quisermos fazer uma classe com argumentos PADRÕES, já podemos +declarar eles quando fizermos a Classe específica. + +class Point: + def __init__(self, coordx = 0, coordy = 0): + self.x = coordx + self.y = coordy + + def get (self): + return (self.x, self.y) + +- Se não recebe nenhum argumento, o PADRÃO será: +a = Point() +a.get() --> {0} + +- Mas se recebe algum argumento: +b = Point(3, 2) +b.get() --> {1}'''.format(a.get(), b.get())) + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/024 - POO 03 (operadores de classes).py" "b/Python b\303\241sico/024 - POO 03 (operadores de classes).py" new file mode 100644 index 0000000..2eb467b --- /dev/null +++ "b/Python b\303\241sico/024 - POO 03 (operadores de classes).py" @@ -0,0 +1,58 @@ +print("_____________________________________________________________________________") + +class Point: + def __init__(self, coordx = 0, coordy = 0): + self.x = coordx + self.y = coordy + +ponto = Point(2, 4) + +class Gato: + def __init__(self, nome, cor): + self.nome = nome + self.cor = cor + + def __repr__(self): + gatinho = '(Nome: {0}, Cor: {1})'.format(self.nome, self.cor) + return gatinho + +gato1 = Gato('Alfred', 'cinza') + +print(''' +Por um objeto ponto = Point(2, 4) se tratar justamente de um objeto do tipo Point, temos +algumas incoveniências: + +print(ponto): +{0} + +len(ponto): +{1} + +Portando, é importante definir essas funções básicas como métodos dessa classe, afinal +até os operadores mais básicos são métodos: + +x + y --> x.__add__(y) +x - y --> x.__sub__(y) +x * y --> x.__mul__(y) +x / y --> x.__truediv__(y) +repr(x) --> x.__repr__() + +E podemos fazer o mesmo com as classes, vamos criar uma classe Gato como exemplo: + +class Gato: + def __init__(self, nome, cor): + self.nome = nome + self.cor = cor + + def __repr__(self): + gatinho = '(Nome: { 0 }, Cor: { 1 })'.format(self.nome, self.cor) + return gatinho + +gato1 = Gato('Alfred', 'cinza') + +print(gato1) --> {2} + +'''. format(ponto, TypeError, gato1)) + +print("\n_____________________________________________________________________________") +input("\nPressione qualquer tecla para fechar...") \ No newline at end of file diff --git "a/Python b\303\241sico/025 - POO 04 (heran\303\247a).py" "b/Python b\303\241sico/025 - POO 04 (heran\303\247a).py" new file mode 100644 index 0000000..1eb3de3 --- /dev/null +++ "b/Python b\303\241sico/025 - POO 04 (heran\303\247a).py" @@ -0,0 +1,71 @@ +# HERANÇA DE CLASSES - Quando uma classe herda os atributos e métodos de outra classe. A classe que herda é conhecida como classe filha e a classe que teve seus atributos herdados é uma superclasse. + +# Aqui temos uma classe Rocha +class Rocha: + + def setnome(self): + nome = input("NOME DA ROCHA: ") + self.nome = nome + + def setcor(self): + cor = input("COR DA ROCHA: ") + self.cor = cor + + def setdureza(self): + dureza = input("DUREZA DA ROCHA: ") + self.dureza = dureza + + def __repr__(self): + atributos = ''' + Atributos da rocha {0} + Cor: {1} + Dureza: {2} + '''.format(self.nome, self.cor, self.dureza) + return atributos + +# Aqui temos uma nova classe Cristal que herda atributos da superclasse Rocha +class Cristal(Rocha): + +# Com o diferencial que podemos adicionar outro método... + def setbrilho(self): + brilho = input("BRILHO DO CRISTAL: ") + self.brilho = brilho + +# Ou modificar um método já existente... + def setcor(self): + cor_cristal = input("COR DO CRISTAL: ") + self.cor = cor_cristal + + def setdureza(self): + dureza_cristal = input("DUREZA DO CRISTAL: ") + self.dureza = dureza_cristal + + def __repr__(self): + atributos = ''' + Atributos do cristal {0} + Cor: {1} + Dureza: {2} + Brilho: {3} + '''.format(self.nome, self.cor, self.dureza, self.brilho) + return atributos +# O mesmo vale pra atributos + +rocha01 = Rocha() +rocha01.setnome() +rocha01.setcor() +rocha01.setdureza() +print(rocha01) + +rocha02 = Cristal() +rocha02.setnome() +rocha02.setcor() +rocha02.setdureza() +rocha02.setbrilho() +print(rocha02) + +input() + +# Se sua classe se comporta como um Queue, também vale a pena conferir os operadores: +# __getitem__() +# __setitem__() +# __iter__() \ No newline at end of file diff --git "a/Python b\303\241sico/026 - POO 05 (modificadores de acesso).py" "b/Python b\303\241sico/026 - POO 05 (modificadores de acesso).py" new file mode 100644 index 0000000..4345c17 --- /dev/null +++ "b/Python b\303\241sico/026 - POO 05 (modificadores de acesso).py" @@ -0,0 +1,26 @@ +# público( ) - Acessado em qualquer parte do código +# privado(__) - Acessado somente pela sua respectiva classe +# protegido(_) - Acessado somente pela sua respectiva classe e pelas suas sublcasses(classes filhas) + +class Conta: + + # Saldo é um atributo privado, pois ele não deve ser modificado em qualquer parte do código + def __init__(self): + self.__saldo_atual = 0.0 + + # Um método GETTER mostra o valor de um atributo privado, ele pode ter qualquer nome, tipo "Mostrar saldo" + def getter(self): + print(self.__saldo_atual) + # Um método SETTER muda o valor de um atributo privado, ele pode ter qualquer nome, tipo "Depositar" + def setter(self, novo_saldo): + self.__saldo_atual = novo_saldo + +minhaconta = Conta() + +minhaconta.getter() + +minhaconta.setter(50) + +minhaconta.getter() + +input() \ No newline at end of file