domingo, 18 de abril de 2021

NOTASPY.py

 # 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)
======      =======      ======
'''

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