# 3425310 2020 12 17 https://docs.python.org/3/library/operator.html operadores python3
nome = " felipe "; nome[-8]; type(nome) # String é uma lista
nome.upper(); nome.lower(); "15" + str(2) # Concatena str
print("Felipe 10 vezes!\n" * 10); nome.capitalize() #1a maiúscula
nome.replace("e", "3"); nome.center(50); nome.count("e") # ocorrências;
len(nome); nome.strip() # retira espaços no começo e fim
nome.upper().strip() #dois comandos
nome[3:] #tira os 3 primeiros = 'elipe '
nome[:5] #pega os 5 primeiros = ' fel'
nome[3:5] #dos 5 primeiros tira 3 primeiros = 'el'
nome[2:-3] # tira os 2 primeiros e 3 ultimos = 'felip'
x, z = 3, 3; x is z; # mesmo conteúdo
ord("谷") # numero unicode 35895
nome > "a" # str ordem unicode
def listAtrib(): # a, b, c = 0, 0, 0
return 1, 2, 3
a, b, c = listAtrib() # Atribui retorno a lista de variáveis
a, b = b, a #troca valor das variáveis
def fun(x, y = 10, z = 5): # valor padrão a ultima var
print(z)
x += 7 # atribuição aumentada
assert x == y # asserção de invariantes
print("123",__name__, end="") #nome da função
import mat # terminal na mesma pasta importar função
import sys
# ao invés da função main, se importar o módulo, testes não executa, a classe apenas)
if __name__ == "__main__":
mat.fib(int(sys.argv[1])) # insere/REQUER parâmetro no terminal (como script)((( python3 NOTASPY.py 1000 )))
a = []
for i in range(50, 100, 5): # comeca 50, até 10, de 5 em 5
a.append(i)
print(a)
dir("txt"); dir(6) # métodos existenttes
# help("345".isdigit) # ajuda "q" sai # isdigit() se todos carac sao num turn True
"6".isnumeric() # str e retorna se True se for num
"a".isalpha() #para alfabeto
from datetime import datetime as dt
now = dt.now() # datetime.datetime(2021, 4, 9, 6, 3, 43, 327367)
now.strftime('%Y/%m/%d %H:%M:%S') # Imprimi data
now.strftime('%H:%M:%S %d/%m/%Y') #formato contrario
import time
time.sleep ( 0.1 ) # atrazo
c,r=2,0.5;print('1/%d = %r' %(c, r)) # r= num reais
print("Oi", end='\t') # tabulacao
print(f'Nome: {c} - Idade: {r}') # var = variante
# import subprocess as s # importa do sistema como s
# s.Popen(['xdg-open', 'http:\\google.com']) #abre página no sistema
sys.platform #indica a plataforma em uso # import sys
lista = [6,5,3,4,5,6,1,2] # tupla(), list[]
tupla = (1,2) # sort só funciona em list, ordena a lista e retorna NONE
sorted(lista); print(lista) #retorna lista ordenada
lista.reverse(); print(lista) #inverte lista
lista.sort(reverse=True); print(lista) #revert o sort
import random
n1 = int(random.random()*10+1); print(n1) #numero aleatório
lista.insert(0, "y"); print(lista)
del(lista[0]); print(lista)
lista2 = lista[:] #clonar lista
# CTRL + ] #Indenta CTRL + [ #Edenta (no Idle)
def test():
a=100
return a
print(test, test()) # <function test at 0x7efec2a3e1f0> 100
'''
==================== Operadores ======================
+ (Adição/positivo)
- (Subtração/negativo)
* (Multiplicação)
/ (Divisão)(divisão: D é o dividendo, d é o divisor, q é o quociente e r é o resto.)
// (Divisão inteira)
% (Módulo) Resto da divisão entre operandos (dividendo menor retorna ele mesmo 3%7=3)
** (Exponenciação) Número elevado a potência de outro (cuidado: negativos (-3**2=-9) e (-3*-3=9))
base**expoente (base negativa e expoente positivo “par” o resultado positivo, “impar” negativo)
====== Ordem de Precedência : parêntesis(), da esquerda para direita
Bool Table True, False
exponenciação **
mul/div/unários *, /, //, %
adição +, -
relacional == , !=, <=, >=, ><
logico not
logico and
logico or
matemática parêntesis(), colchetes[], chaves{}
=========================================
Porcentagem = 100*0.655 = 65.5 (porcentagem/100*valor)
Raiz = **0.5
Modulo |-1| = calcular modulo = *-1
Números Complexos (C): C= {√-4, √-3, √--2} (√-1 = unidade imaginaria)
Números Reais(R): conjunto de elementos que inclui:
Números Naturais (N): N = {0, 1, 2, 3, 4, 5,...}
Números Inteiros (Z): Z= {..., -3, -2, -1, 0, 1, 2, 3,...}
Números Racionais (Q): Q = {...,1/2, 3/4, –5/4...}
Números Irracionais (I ): I = {...,√2, √3,√7, 3,141592.…, π}
=========================================
NotasPyPart2.odt
Folha de Consulta: https://www.ime.usp.br/~vwsetzer/python-opers-funcoes.html
--------------
#range(de 3, ate 20, a cada 1)=17
#(3,20,2)=9 (2*9=18) #(3,20,3)=6 (3*6=18)
#(20,3,-1)=17 #(20,-3,-1)=23
a=0
for i in range(20,-3,-1):
a+=1
print(a)
-------------------
Busca Sequencial e Binária: https://panda.ime.usp.br/aulasPython/static/aulasPython/aula23.html
Algoritmos elementares de ordenação: https://panda.ime.usp.br/aulasPython/static/aulasPython/aula24.html
Falta resolver:
Mais funções com números reais: https://panda.ime.usp.br/aulasPython/static/aulasPython/aula14.html
Mais funções com reais: https://panda.ime.usp.br/aulasPython/static/aulasPython/aula15.html
Exercícios: https://panda.ime.usp.br/aulasPython/static/aulasPython/aula16.html
===========================================================================
Attribution 4.0 International (CC BY 4.0)
https://creativecommons.org/licenses/by/4.0/
Você é livre para compartilhar, copiar e redistribuir o material, em qualquer meio ou formato, adaptar, remixar, transformar e construir sobre o material para qualquer finalidade, mesmo comercialmente. Esta licença é de uma Obra Cultural Livre.
O licenciante não irá revogar essas liberdades, desde que você siga os termos da licença:
1- Atribuição - você deve dar o crédito apropriado , um link para a licença e página do autor, de maneira razoável, mas não que sugira que o licenciante endossa você ou seu uso.
2- Sem restrições adicionais - Você não pode aplicar termos legais ou medidas tecnológicas que restrinjam legalmente outros de fazerem qualquer coisa que a licença permita.
Autor: Felipe Tanii Página: https://marocero2016.blogspot.com/
===========================================================================
====== ERRORS ======
----------------------------------------------------
SyntaxError: unexpected EOF while parsing ( falta parênteses, falta “pass” em funcao )
SyntaxError: invalid syntax ( falta ":" dois pontos)
TypeError: apaga_repetidos() takes 1 positional argument but 2 were given (
falta "self" em funcao da classe, )
IndexError: list index out of range (falta 1 parametro)
====== ======= ======
'''
domingo, 18 de abril de 2021
NOTASPY.py
segunda-feira, 12 de abril de 2021
Converter números IPv6 para decimal - Python3
======================================
https://github.com/FelipeTanii/SinapseProtocol/blob/main/ipv6ToDec.py
===============================================
''' Felipe Tanii 2021 04 12
File name: ipv6ToDec.py
Sintaxe: import ipv6ToDec as ip
ip.ipv6Dec(2001:0db8:85a3:08d3:1319:8A2e:0370:7344)
>>> "8193(1) 3512(2) 34211(3) 2259(4) 4889(5) 35374(6) 880(7) 29508(8) "
'''
def abc(abc): # Converte letra hexadecimal para numero decimal
''' abc("str") >>> int
'''
abc = abc.lower()
if abc == "a":
abc = 10
if abc == "b":
abc = 11
if abc == "c":
abc = 12
if abc == "d":
abc = 13
if abc == "e":
abc = 14
if abc == "f":
abc = 15
return abc
def ipv6Dec(ipv6): # Converte numeros ipv6 para decimal
''' ipv6Dec("str") >>> "str"
'''
ipv6 += ":"
n, soma, octe, ipDec = 0, 0, "", ""
for i in ipv6:
if i.isalpha() or i.isnumeric():
octe += i
if not i.isalpha() and not i.isnumeric():
n += 1
if octe[0].isalpha():
soma += 4096 * abc(octe[0])
else:
soma += 4096 * int(octe[0]) # 256 * 16 = 4096
if octe[1].isalpha():
soma += 256 * abc(octe[1])
else:
soma += 256 * int(octe[1]) # 16 * 16 = 256
if octe[2].isalpha():
soma += 16 * abc(octe[2])
else:
soma += 16 * int(octe[2])
if octe[3].isalpha():
soma += abc(octe[3])
else:
soma += int(octe[3])
ipDec += str(soma) + "(" + str(n) + ") "
soma, octe = 0, ""
return ipDec
def test_ipv6Dec():
ipv6 = "2001:0db8:85a3:08d3:1319:8A2e:0370:7344"
r = "8193(1) 3512(2) 34211(3) 2259(4) 4889(5) 35374(6) 880(7) 29508(8) "
#print(ipv6Dec(ipv6),type(ipv6Dec(ipv6)))
#print(r, type(r))
if ipv6Dec(ipv6) == r:
return True
else:
return False
#print(test_ipv6Dec())
sábado, 10 de abril de 2021
Li a Bíblia Sagrada
Li a Bíblia Sagrada toda em dois meses pelo Smartphone, para cumprir uma promessa.
Para ajudar quem deseja ler dividi os livros para facilitar a leitura pelo Smartphone e deixei no Google Drive para compartilhar.
Acesse: https://drive.google.com/drive/folders/1JB7mtv2Q3XIdVr5lnkhFX-ZXlPdF58kp?usp=sharing
quinta-feira, 8 de abril de 2021
Gerador e Validador de CPF em python3
# Filename: cpf.py Sintaxe: import cpf Felipe Tanii 2021 04 09
def inf(): # informacoes sobre
print("CPF = 11 digitos, d1 ao d8 = Atr. Receita Federal, d9 nono digito = UF")
print(" \
0- RS \n\
1- DF, GO, MS, MT, TO \n\
2- AC, AM, AP, PA, RO, RR \n\
3- CE, MA, PI \n\
4- AL, PB, PE, RN \n\
5- BA, SE \n\
6- MG \n\
7- ES, RJ \n\
8- SP \n\
9- PR, SC ")
print("Siglas: \
\nAC Acre \nAL Alagoas \nAP Amapá \
\nAM Amazonas \nBA Bahia \nCE Ceará \
\nDF Distrito Federal \nES Espírito Sant \nGO Goiás \
\nMA Maranhão \nMT Mato Grosso \nMS Mato Grosso do Sul \
\nMG Minas Gerais \nPA Pará \nPB Paraíba \
\nPR Paraná \nPE Pernambuco \nPI Piauí \
\nRJ Rio de Janeiro \nRN Rio Grande do Norte \nRS Rio Grande do Sul \
\nRO Rondônia \nRR Roraima \nSC Santa Catarina \
\nSP São Paulo \nSE Sergipe \nTO Tocantins \
\nDigitos verificadores = d10 e d11 ")
def val(cpf): # Validador de CPF pelo codigo verificador
''' val(str(11 digitos)), return "UF", "verificador", bool
Error: print(erro)
Sintaxe: cpf.val("12345678909") '''
UF = ["RS", "DF, GO, MS, MT, TO", "AC, AM, AP, PA, RO, RR", "CE, MA, PI", "AL, PB, PE, RN", "BA, SE", "MG", "ES, RJ", "SP", "PR, SC"]
d = cpf
V, d10, d11 = "", 0, 0
if d.isnumeric() and len(d) == 11:
L = 10*int(d[0])+9*int(d[1])+8*int(d[2])+7*int(d[3])+6*int(d[4])+5*int(d[5])+4*int(d[6])+3*int(d[7])+2*int(d[8])
c = L//11
r = L%11
if r == 0 or r == 1:
d10 = 0
else:
d10 = 11 - r
M = 10*int(d[1])+9*int(d[2])+8*int(d[3])+7*int(d[4])+6*int(d[5])+5*int(d[6])+4*int(d[7])+3*int(d[8])+2*d10
c = M//11
r = M%11
if r == 0 or r == 1:
d11 = 0
else:
d11 = 11 - r
if str(d10) == d[9] and str(d11) == d[10]:
V = True
else:
V = False
return UF[int(d[8])], str(d10) + str(d11), V
else:
print("(ERRO): Digite os 11 numeros!")
def testVal():
cpf = "12345678909"
print(val(cpf)) # exemplo: 123 456 789 09
return(val(cpf) == ('PR, SC', '09', True))
#print(testVal())
def gen(cpf): # Gerador de CPF (Digite qualquer numero de 9 digitos)
''' val(str(9 digitos)), return "UF", "CPF"
Error: print(erro)
Sintaxe: cpf.val("12345678909") '''
UF = ["RS", "DF, GO, MS, MT, TO", "AC, AM, AP, PA, RO, RR", "CE, MA, PI", "AL, PB, PE, RN", "BA, SE", "MG", "ES, RJ", "SP", "PR, SC"]
d = cpf
d10, d11 = 0, 0
if d.isnumeric() and len(d) == 9:
L = 10*int(d[0])+9*int(d[1])+8*int(d[2])+7*int(d[3])+6*int(d[4])+5*int(d[5])+4*int(d[6])+3*int(d[7])+2*int(d[8])
c = L//11
r = L%11
if r == 0 or r == 1:
d10 = 0
else:
d10 = 11 - r
M = 10*int(d[1])+9*int(d[2])+8*int(d[3])+7*int(d[4])+6*int(d[5])+5*int(d[6])+4*int(d[7])+3*int(d[8])+2*d10
c = M//11
r = M%11
if r == 0 or r == 1:
d11 = 0
else:
d11 = 11 - r
return UF[int(d[8])], cpf + str(d10) + str(d11)
else:
print("(ERRO): Digite os 9 numeros!")
def testGen():
cpf = "123456789"
print(gen(cpf)) # exemplo: 280 012 389 38
return(gen(cpf) == ('PR, SC', '12345678909'))
#print(testGen())
sexta-feira, 2 de abril de 2021
Comandos CLI Linux
Comandos CLI Linux
===
COMANDOS DO TERMINAL sudo
apt update && sudo apt upgrade -y
(atualizar)
$apropos (busca nos manuais) $ ctrl+C (interrompe um comando)
$ls (lista o conteúdo de um diretório) $ls -a (lista os diretórios, arquivos ocultos e executáveis) ( GUI ctrl+h)
$ls -l (Lista detalhadamente)(ou $ls -Rla) $pwd (mostra o diretório corrente)
$cd (muda de diretório) Ex: $cd /etc $cd - (volta para o diretório anterior)
$cd .. (volta um diretório acima) $cd ~ (volta para seu diretório /home)
$mkdir [pasta] (cria uma pasta e o nome) $mkdir [pasta1] [pasta2] (cria duas ao mesmo tempo)
$cat > [arquivo] (cria novo arquivo) $cat [arquivo1] >> [arquivo2] (acrescenta arq.2 em arq.1)
$touch [arquivo] (cria um arquivo) $diff [arquivo1] [arquivo2] (compara os dois arquivos)
$locate [arquivo] (localiza arquivo) $less [arquivo] (mostra o arquivo)
$more [arquivo] (mostra o arquivo) $nl [arquivo] linhas do arquivo)
$wc [arquivo] (linhas, palavras e bytes) $[comando1] | [comando2] (conecta dois processos) Ex:$vi /etc/X11/xorg.conf | more
$su (root)(BigLinux:/$ sudo su) $su [usuário] (muda usuário)
$shutdown
(reinicia) $reboot (reinicio emergência) $ systemctl
reboot -i (reinicia mesmo com outros users)
$passwd (troca a senha) $uname -a (sistema operacional)
$cat /etc/*release (mostra mais sobre) $dmesg (mostra informações do sistema)
$arch (arquitetura do PC) $lsmod (módulos)
$echo [mensagem] (exibe mensagem shell) $history (últimos 500 comandos que digitou)
$ps (mostra os processos corrente "PID") $xkill (fecha com ponteiro do mouse em X)
$date (dia e hora) $cal (calendário mês)
$cal [ano] (calendário do ano) $last [-num] (últimos logins)
$clear (limpa a tela) $free (detalhes da memória RAM)
$eject (abre a gaveta cd) $eject -t (fecha a gaveta)
$halt (desliga o PC) $hostname (nome da máquina)
$who (quem está conectado) $wget -c [URL] (download de arquivo)
$whoami (quem logou primeiro) $lspci (componentes PCI )
$init 6 (reinicia rápido) $init 0 (desliga rápido)
$startx (interface gráfica padrão) $ls / | wc -l (conta dentro do dir)
$ ps aux | less (processos) $ df -h (dispositivos conectados)
$mkdir -p [pasta]/[sub-pasta] (cria diretório e sub- diretório)
$rm -r [pasta ou arquivo] (deleta/apaga uma pasta ou arquivo)
$mv [arquivo1] [arquivo2] (renomeia uma pasta)
$mv [arquivo] [caminho] (move) Ex: $mv imagem. jpg /home/Wallpapers
$cp [arquivo] [caminho] (copia arquivo para caminho) Ex: $cp imagem.jpg /t4k_slack/Wallpapers
cp -R /home/user/ /tmp/ (Copia tudo)
$ln -s [caminho] [link] (cria um link) Ex: $ln -s /home/user/folderFile FolderFile
$type [executável] (caminho do executável) Ex: $type Firefox
$head [-linhas] [arquivo] (primeiras linhas do arquivo) Ex:$head -10 texto.txt
$tail [-linhas] [arquivo] (contrário do $head)
$sleep [tempo] && [comando] (timer executa comando) Ex:$sleep 2 && pwd
$top -d [segundos] (detalhes de processos) Ex: $top -d 3
$killall [programa] (força fechar programa)
$mkfs.ext2 (formata em formato Linux Ex: $mkfs.ext2 /dev/fd0
$superformat (formata em formato DOS) Ex: $superformat /dev/fd0
$vmstat -a [tempo] (memória swap em uso) Ex: $vmstat -a 2
#insmod [módulo] (levanta módulo a força) Ex: #insmod spca5x
#less /etc/passwd (exibe users) ou #getent passwd
# useradd -m (adiciona usuário) #userdel -r [usuário] (deleta o usuário e pasta do diretório /home)
#chfn [usuário] (muda informações do usuário)
#chage -M [dias] [usuário] (expira usuário, dia agendado, requer root) Ex: #chage -M 20 fulano
$display [imagem.jpg] (mostra uma imagem no X, necessita ImageMagick) Ex: $display imagem.jpg
$convert [img.png] [img.jpg] (converte .png para .jpg necessita ImageMagick)
$mount [device] (monta um dispositivo) Ex: $mount /mnt/cdrom
$umount [device] (desmonta um dispositivo) Ex: $umount /mnt/cdrom
$du [diretório] (ou dentro da pasta: $du * )(Tamanho do arquivo))
$du -S [sub- diretórios] (tamanho dos sub- diretórios)
$du -msc \.*[!..] (apenas o tamanho de arquivos ocultos) $ du -hs * | sort -h (melhor)
du -msc \.*[!..] * (ocultos e normais)
$[comando] & (inicia o processo em segundo plano e libera o terminal) Ex: $Firefox & Ex: $Firefox &&
$tar -zxvf[arquivo.tar.gz] (descompacta .tar.gz)
$tar -jxvf [arquivo .tar.bz2] (descompacta .tar.bz2)
$time [comando] (tempo gasto para abrir programa)
$uptime (tempo desde o último boot)
$lsattr [folderFile] (lista atributos de um arquivo ou diretório)
$whereis [exe ou comando] (localiza o caminho do executável/comando)
$which (busca exe nos PATHs exportados)
$ watch -n 1 sensors (temperatura das cpus)(nesc. lm-sensors instalado)
$du --exclude ".*" pasta (lista subpastas menos as ocultas)
$alias [comandoAtual] [comandoNovo] (muda nome do comando) Ex:$alias dir=ls -l
TAB (duas vezes)( listar todos os comandos)
Ajuda sobre o [comando] --help ex: $wget --help
$ ls -Rl|egrep "^./|^-" (lista arquivos e diretórios)(achar muitos arquivos em diretórios)
$ file (ver metadados)
---chmod d= diretorio r= leitura w =escrita x= execuçao
0 : --- (sem permissão) 1 : --x (execução) 2 : -w- (escrita)
3 : -wx (escrita e execução) 4 : r-- (leitura) 5 : r-x (leitura e execução)
6 : rw- (leitura e escrita) 7 : rwx (leitura, escrita e execução)
Posicoes 1-root 2-grupo 3-publico : 733 = rwx wx wx
chmod 733 [arquivo ou diretorio] root todas permissoes , grupo nao le e publico nao le.
----$ chown user:group file.txt Alterar o proprietário e grupo de files e pastas
---$ chown jerry demo.txt Apenas o user