Search the Community
Showing results for tags 'python'.
-
Tenho vindo a perguntar-me se o uso de type hinting em Python 3.X é considerado um favor que fazemos ao interpretador ou não. Será que afeta a performance de alguma forma a performance, não em termos notaveis mas pelo menos em alguns milisegundos? Será que type hinting faz-lo ser mais rapido, ou ligeiramente mais lento? Tenho esta curiosidade. Não sei ao certo como testar isto para obter conclusões. Eu encontrei este post (stackoverflow) sobre o assunto a referenciar os proposals mas é um tanto quanto antigo, debatem o assunto da versão em que primeiro esta feature foi implementada, para não falar que o Python passou por mudanças serias no seu interpretador ao longo das versões e não encontrei testes em lado nenhum sobre o assunto. Tenho aqui um exemplo de um codigo em Python em que estou a "abusar" do type hinting (Sim, estou ciente que é redundante em muita coisa que estou a usar, é apenas para provar um ponto): Codigo Tipado: from random import randint def add(a: int, b: int) -> int: result: int = a + b return result def getInput() -> int: randomValue: int = randint(0, 1000) return randomValue def main() -> None: result: int = 0 try: inputValue: tuple[str, str] = getInput(), getInput() a: int = int(inputValue[0]) b: int = int(inputValue[1]) result = add(a, b) except ValueError as e: formattedError: str = f"{inputValue[0]} + {inputValue[1]} = {e}" print(formattedError) return print(result) return if __name__ == "__main__": main() Codigo Não Tipado: from random import randint def add(a, b): result = a + b return result def getInput(): randomValue = randint(0, 1000) return randomValue def main(): result = 0 try: inputValue = getInput(), getInput() a = int(inputValue[0]) b = int(inputValue[1]) result = add(a, b) except ValueError as e: formattedError = f"{inputValue[0]} + {inputValue[1]} = {e}" print(formattedError) return print(result) return if __name__ == "__main__": main() Eu tentei chegar a uma conclusão com o seguinte script Bash usando o hyperfine para me poupar um pouco de trabalho a dar parse aos comandos time: #!/bin/bash WARM_UP=100 TEST_AMOUNT=10000 hyperfine --warmup $WARM_UP --runs $TEST_AMOUNT 'python3.13 Typed.py' hyperfine --warmup $WARM_UP --runs $TEST_AMOUNT 'python3.13 NotTyped.py' hyperfine --warmup $WARM_UP --runs $TEST_AMOUNT 'python3.12 Typed.py' hyperfine --warmup $WARM_UP --runs $TEST_AMOUNT 'python3.12 NotTyped.py' Será que seria o suficiente? Obtive os resultados seguintes: $ ./test.sh Benchmark 1: python3.13 Typed.py Time (mean ± σ): 18.0 ms ± 1.7 ms [User: 9.2 ms, System: 1.8 ms] Range (min … max): 13.4 ms … 25.6 ms 1000 runs Benchmark 1: python3.13 NotTyped.py Time (mean ± σ): 18.1 ms ± 1.7 ms [User: 9.3 ms, System: 1.7 ms] Range (min … max): 14.3 ms … 33.6 ms 1000 runs Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options. Benchmark 1: python3.12 Typed.py Time (mean ± σ): 20.0 ms ± 1.7 ms [User: 10.4 ms, System: 2.6 ms] Range (min … max): 16.9 ms … 32.6 ms 1000 runs Benchmark 1: python3.12 NotTyped.py Time (mean ± σ): 20.5 ms ± 1.7 ms [User: 10.7 ms, System: 2.3 ms] Range (min … max): 16.9 ms … 28.2 ms 1000 runs $ ./test.sh Benchmark 1: python3.13 Typed.py Time (mean ± σ): 18.5 ms ± 4.0 ms [User: 9.7 ms, System: 1.9 ms] Range (min … max): 13.3 ms … 130.1 ms 10000 runs Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options. Benchmark 1: python3.13 NotTyped.py Time (mean ± σ): 17.1 ms ± 1.7 ms [User: 9.1 ms, System: 1.7 ms] Range (min … max): 12.5 ms … 28.7 ms 10000 runs Benchmark 1: python3.12 Typed.py Time (mean ± σ): 19.7 ms ± 1.9 ms [User: 10.3 ms, System: 2.4 ms] Range (min … max): 14.6 ms … 36.3 ms 10000 runs Benchmark 1: python3.12 NotTyped.py Time (mean ± σ): 19.7 ms ± 1.8 ms [User: 10.4 ms, System: 2.3 ms] Range (min … max): 14.9 ms … 35.8 ms 10000 runs Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options. Em suma, a minha questão é a seguinte: O Codigo Tipado traria alguma diferença em performance comparado com o Codigo Não Tipado?
-
Bom dia, será que a documentação está mesmo mal: https://numpy.org/doc/stable/reference/generated/numpy.trace.html ? Andei à procura de explicação: https://g.co/gemini/share/3560c6a6dff5 Grato pelas vossas opiniões
-
Estou a tentar que o meu programa entre no portal das finanças usando o NIF como usuário e a senha. Consigo abrir a pagina no browser do Chrome mas os dados de acesso fornecidos através do programa não passam para os campo da pagina. Ou seja tenho que introduzir novamente o usuário e a senha no portal. Alguém tem uma ideia para ajudar.
-
Boas malta, estou a desenvolver um site em react, que tem como backend PHP e a base de dados tou a utilizar MySQL, e está me aparecer este erro quando tento adicionar os dados de uns inputs na base de dados: ERROR Network Error AxiosError: Network Error at XMLHttpRequest.handleError (http://localhost:3000/static/js/bundle.js:96826:14) Alguem me consegue ajudar?
-
Olá!🖐️ Comecei a aprender Python e quero praticar mais. Talvez alguém conheça um recurso onde você possa encontrar tarefas próximas das reais? Ou um site com ideias de pequenos projetos para aprimorar meus conhecimentos? Estou apenas começando, então tenho habilidades básicas e compreensão de algoritmos. Obrigado pelas dicas!!😊
-
from tkinter import * tela = TK() tela.resizable(False , False) tela.title('Bot') menssagem =label(Text= 'Giros double brazer',bg='black',fg='white',heigt=2,front=("", 12), width=96) menssagem.Grid(row=0,column=0) o que esta erado aqui
-
Boas, Tenho tido um grande problema a tentar meter cores num texto em python, para depois ser apresentado na linha de comandos com a mesma cor. O problema é que já experimentei várias libs e não tenho conseguido um output com cores no cmd. Alguém me consegue ajudar a escrever um pequeno script em python, em que o output seja a cores no cmd? Obrigado!
-
Olá gostaria de mais informações como posso resolver essa atividade ? [Escreva um programa utilizando pseudocódigo para poder organizar a entrada de passageiros dentro de um avião desde que se entrega o bilhete a comissária de bordo até o avião decolar.]
-
Olá, não sei se é o sítio adequado para tal, mas estou a fazer (a tentar pelo menos), criar uma aplicação com várias ferramentas para ajudar o jogador de cs, o problema é que eu não sei programar, estou a utilizar o pouco que sei e a ajuda do chatGPT para o resto, mas chega a situações onde fico num loop de erros e não consigo sair mais. Alguma sugestão mais prática para criar algo do gênero? Do que tentar ir pelo pouco conhecimento e o chatgpt? Ou alguém pode ajudar com algumas das partes?
-
Em conjunto com a falta de tipos (já resolvida), o GIL costumava ser uma das maiores razões de queixa que vi em programadores quando tinham que considerar a hipótese de usar Python num projecto. Seria uma mudança com potencial para aumentar bastante a adopção da linguagem!
-
- 2
-
Bom dia pessoal, Espero que se encontrem bem! Bom eu sou estudante do 12º do curso profissional de TGEI, e estou elaborando meu projeto final do curso. Trata-se de um sistema de temperatura que de acordo com os dados lidos do sensor, envia uma mensagem de texto através da API Twilio, para o número pré-configurado no código. Por indicação de um professor resolvi criar em Python uma GUI simples, para caso do utilizador querer alterar o valor de comparação da temperatura, não precisar ir ao código alterar. O meu problema é que não consigo ligar o script a GUI, poderiam me ajudar, comecei a aprender programação a pouco tempo.
-
Boa noite amigos, estou com o seguinte script: import datetime class Conta: def __init__(self, numero, titular, saldo, limite = 1000.0): self.numero = numero self.titular = titular self.saldo = saldo self.limite = limite self.historico = Historico() def deposita(self, valor): self.saldo += valor self.historico.transacoes.append(f"Deposito de : {valor}") def sacar(self, saldo2, valor): saldo2 = self.saldo if(saldo2 < valor): return print('Saldo insuficiente') else: self.saldo -= valor self.historico.transacoes.append(f"Saque de : {valor}") def extrato(self): print(f'Numero nº {self.numero} \n Titular: {self.titular} \n Saldo: R$ {self.saldo}') self.historico.transacoes.append(f"Seu saldo é de: {self.saldo}") def transfere(self, valor, destino): retirou = self.sacar(valor) if(retirou == False): return False else: destino.deposita(valor) self.historico.transacoes.append(f"Transferencia de {valor} para conta de {destino.numero}") return True def criar_conta(numero, titular, saldo, limite): conta = {"numero": numero,"titular": titular, "saldo": saldo, "limite": limite} return conta class Cliente: def __init__(self, nome, sobrenome, cpf): self.nome = nome self.sobrenome = sobrenome self.cpf = cpf class Historico: def __init__(self): self.data_abertura = datetime.datetime.today() self.transacoes = [] def imprime(self): print(f'Data de abertura: {self.data_abertura} ') print('Transações: ') for t in self.transacoes: print(' - ', t) cliente1 = Cliente('João', 'Oliveira', '1111111-11') cliente2 = Cliente('Marcos','Azevedo', '2222222-22') conta1 = Conta('123-4', cliente1, 1000.0) conta2 = Conta('123-5', cliente2, 1000.0) conta1.deposita(500.0) conta1.sacar(50.0) conta1.transfere(conta2, 200.0) conta1.extrato conta1.historico.imprime() Sempre me retorna esse Erro: sacar() missing 1 required positional argument: 'valor' Por favor me digam onde estou errando. De já agradeço
-
Eu estou a começar a aprender Python mas no VS Code está me a dar este erro e não sei o que se passa. Alguém me consegue ajudar? Quando escrevo as variáveis elas ficam sublinhadas e aparece esta mensagem: Mas mesmo com este "erro" o programa executa normalmente.
-
Python que gere valores aleatórios para uma matriz. Após, exiba para cada linha, o percentual de valores pares e o percentual de valores ímpares. informe o tamanho da matriz (número de linhas e de colunas), de forma que seja desenvolvido um método para gerar a matriz, onde a quantidade de linhas e colunas sejam recebidas como parâmetros; outro método para completar a matriz com valores aleatórios e um último método para exibir as porcentagens de valores pares e ímpares para cada linha da matriz.
-
Bom dia Comunidade Portugal-a-Programar, é possível colocar as exception's dentro dos if's de modo a executar somente uma exception? Pois neste trecho de código: def readIntandFloat(): try: i = int(input('Tell me a int: ')) except(ValueError, TypeError): print("\033[0;30;41mError: The data type that you enter did not numeric as expected for this purpose.") return readIntandFloat() # finally: # print('') try: f = float(input('Tell me a number: ')) except(ValueError, TypeError): print("\033[0;30;43mError: The data type that you enter did not numeric as expected for this purpose.") readFloat('Tell me a number2: ') except(KeyboardInterrupt): print('\033[0;30;44mError: Not inform more data') readFloat('Tell me a number2: ') # return else: print(f'The int number is {i} and \t The float number is {f}') finally: print('Felizes e contentes') que usa esta função: def readFloat(msg): try: inp = float(input(msg)) except KeyboardInterrupt: # para funcionar tinha no meio de dois input's como acontece no exemplo acima! print("\033[0;30;42mUser didn't inform the data") readFloat('Error: Digit a new number: ') except(ValueError, TypeError): print("\033[0;30;47mThe data type that you enter did not numeric as expected for this purpose") readFloat('Error: Digit a number again: ') except Exception as general: print(f'The problem was {general.__class__}') else: print(f'The number is {inp}') Tell me a int: 6 Tell me a number: Error: The data type that you enter did not numeric as expected for this purpose. Tell me a number2: t The data type that you enter did not numeric as expected for this purpose Error: Digit a number again: The data type that you enter did not numeric as expected for this purpose User didn't inform the data Error: Digit a new number: 9 The number is 9.0 Felizes e contentes Error: Digit a number again Error: Digit a number again: Error: Digit a new number: O programa ao entrar nesta função, sempre que tento parar a execução do trabalho, ele abre 2 abas de input! .. e preenchendo uma delas acontece isto User didn't inform the data Error: Digit a number again: 9 The number is 9.0 Felizes e contentes Error: Digit a new number: A pergunta acima na minha óptica pode resolver a questão, mas gostava de muito a vossa opinião. cumprimentos
-
Viva try: # (tenta) a = int(input('Numerador: ')) b = int(input('Denominador: ')) r = a / b except: print('Infelizmente tivemos um problema :(') else: print(f'O resultado é {r}') print(f'Resultado 1 casa decimal é {r:.1f}') Numerador: 5 Denominador: 4 O resultado é 1.25 Resultado 1 casa decimal é 1.2 Numerador: 5 Denominador: 3 O resultado é 1.6666666666666667 Resultado 1 casa decimal é 1.7 Resultado 5/4 Resultado 5/3 Porque num arredonda para cima e no outro para baixo? Quais são os critérios usados?
-
Estou a criar um blog em flask, que tem a seguinte estrutura: -routes -Posts -Templates ... ... Posts_BP.py -System -Templates base.html ... ... System_BP.py -Users -Templates ... ... Users_BP.py app.py Todos os Templates tem a extensão do ficheiro base.html, que se situa em System/Templates/base.html O meu problema é que na sytax: {% extends 'base.html' %}, não consigo ir para a pasta onde se situa o ficheiro. Exemplo: {% extends '../System/Templates/base.html' %} Já tentei de vários maneiras até dar o caminho absoluto, e nunca encontra...
-
Boa tarde P@P, em termos, de operador para a resolução deste exercício: "Given the X numpy array, get numbers equal to 2 or 10" tinha pensado assim: mask = X == (2 or 10) # X == (2 or 10) # your code goes here X[mask] contudo, os valores não me deram certo: array([2]) Já na resolução, eles fazem desta forma: X = np.array([-1, 2, 0, -4, 5, 6, 0, 0, -9, 10]) mask = (X == 2) | (X == 10) X[mask] e não percebo como funciona este operador bitwise, até porque 2 = 2^1 e 10 = 2^1+2^3.. Grato pela vosso tempo e ajuda, abraço Jonhhy
-
Bom dia, Em primeiro fico feliz por saber que esta comunidade ainda esta ativa, estive afastado da programação durante uns anos mas agora que voltei e vejo que ainda estamos aqui ativo fiquei bem feliz parabens. Passando a duvida, estou a aprender python, por diversão, e descobri que posso dar clicks em em imagens especificas usando o pyautogui, perfeito e funciona, a minha grande duvida é: Existe alguma forma de eu estar a usar a minha maquina ( teclado e rato ) e usar o pyautogui ao mesmo tempo ? como que dar os clicks ou escrever sem "usar" o meu rato ou teclado ? Forte abraça PS: acredito que possa ter colocado aqui a duvida se nao for peço desculpa e peço que me digam onde.
-
Bom dia estimados membros da comunidade P@P, hoje trago um exemplo da função decode() disponível neste site: https://www.geeksforgeeks.org/python-pandas-series-str-decode/ Código do site: # importing pandas as pd import pandas as pd # Creating the Series sr = pd.Series([b"b'New_York'", b"b'Lisbon'", b"b'Tokyo'", b"b'Paris'", b"b'Munich'"]) # Creating the index idx = ['City 1', 'City 2', 'City 3', 'City 4', 'City 5'] # set the index sr.index = idx # Print the series print(sr) Output do site: City 1 b"b'New_York'" City 2 b"b'Lisbon'" City 3 b"b'Tokyo'" City 4 b"b'Paris'" City 5 b"b'Munich'" dtype: object Aplicando o decode aos dados: # use 'UTF-8' encoding result = sr.str.decode(encoding = 'UTF-8') # print the result print(result) Resultado do site: City 1 b'New_York' City 2 b'Lisbon' City 3 b'Tokyo' City 4 b'Paris' City 5 b'Munich' dtype: object Perante os resultados da função decode, pergunto-me senão podia também ter tirado o b' ' ... em: b'WORD' ? <- PERGUNTA na dúvida optei por correr sobre o result, Código feito por mim: result2 = result.str.decode(encoding = 'UTF-8') print(result2) City 1 NaN City 2 NaN City 3 NaN City 4 NaN City 5 NaN dtype: float64 Contudo, não era isto que pretendia ou tinha em mente ... (vou,
-
Bom dia P@P, # number of ...matches could obtained for len(goallist) squad = [] soccerPl = {'nameSP': '', 'goalsbyGame':[], 'totalGoals': '', 'numMatches': ''} # name by input, goalsbygame append list, totalGoals cyclecounter and numMatches <- imply to obtain a len() function by a list (implícita de outra variável) nextOne = '' while True: soccerPl['nameSP'] = str(input(' Say soccerPlayer name? : ')) soccerPl['numMatches'] = int(input(' Say number of matches played? : ')) # vai derivar o número de chaves antes assim, devia por num varíável isolada.., pois consegue ser obtida a partir do len() da lista totalGoals = 0 for i in range(0, soccerPl['numMatches']): print(f'Number of goals scored in match {i} :') soccerPl['goalsbyGame'].append(int(input(''))) totalGoals += soccerPl['goalsbyGame'][i] soccerPl['totalGoals'] = totalGoals squad.append(soccerPl.copy()) print('-='*25) nextOne = str(input('Do you want add more player to the squad? ')).strip().upper() if nextOne == 'N': break print('The Squad player data ...') print(f"{'No.':^5} {'name':^9} {'goals by match':<16} {'totalGoals':<12} {'numMatches':<15} ") for i in range(0,len(squad)): #for squad[i] in range (0squad print(f"{i+1:^5} {squad[i]['nameSP']:^9} ) # squad[i]['nameSP']:^9} não sei como squad[i]['nameSP'] aceder a este campos, isto é uma lista de dicionários, Tenho de fazer 2 ciclos for para chegar a uma key do dicionário? e como?
-
Bom dia membros da comunidade P@P, tenho uma string de nome, para identificar o grupo que quero destacar, contudo se houvesse forma de extrair só o nome das mulheres (diretamente era muito menos trabalhoso)... como é python penso sempre que deve haver alguma maneira melhor... indo ao exercício e código: # Desafio 094 Crie um programa que leia **nome**, **sexo** e **idade** de **várias pessoas**, guardando os dados de cada pessoa em um **dicionário** e todos os dicionários em uma **lista**. No final, mostre: **A)** Quantas pessoas foram cadastradas **B)** A **média** de idade do grupo. **C)** Uma lista com todas as **mulheres**. **D)** Uma lista com todas as pessoas com **idade** acima da **média**. signup = {'name': '', 'gender': '', 'age': ''} people = [] women = [] oldpeople = [] adelante = '' agesum = 0 while True: signup['name'] = str(input('Say person name: ')) signup['gender'] = str(input('Say person gender: ')) while signup['gender'] not in 'MmFf': signup['gender'] = str(input('We only consider gender: [F/M] ... : ')) signup['age'] = int(input('Say your age: ')) while signup['age'] < 0: signup['age'] = int(input('Age cannot be negative, say a positive number with the years: ')) agesum += signup['age'] people.append(signup.copy()) if signup['gender'].strip().upper() in 'F': #women.append(signup['name'].copy()) women.append(signup.copy()) #signup.clear() adelante = str(input('Did you want continue to sign up person? :')) if adelante in 'Nn': break print(f" People signup was {len(people)}") print(f" Age mean is {agesum/len(people)}") print(f" Women are {women[0]}") for person in people: if person['age'] > (agesum/len(people)): oldpeople.append(person['name']) print(f" Person with more that mean age is {oldpeople}") Say person name: Luísa Say person gender: f Say your age: 26 Did you want continue to sign up person? : yes Say person name: Miguel Say person gender: 31 We only consider gender: [F/M] ... : mas We only consider gender: [F/M] ... : m Say your age: 31 Did you want continue to sign up person? : Yieh Say person name: Sónia Say person gender: 11 We only consider gender: [F/M] ... : f Say your age: 11 Did you want continue to sign up person? :n People signup was 3 Age mean is 22.666666666666668 Women are {'name': 'Luísa', 'gender': 'f', 'age': 26} Person with more that mean age is ['Luísa', 'Miguel'] a dúvida é no primeiro comentário do código, que dá erro..
-
Bom dia membros do P@P, Como se faz uma atribuição automática de todos os valores num dicionário a partir de uma tupla ou string? Vou mostrar o todo o processo: Inicialmente fiz assim, mas pensei poder automatizar etapas (para treinar): from random import randint plays = {'p1':'', 'p2':'', 'p3':'', 'p4':''} plays['p1'] = randint(1,6) plays['p2'] = randint(1,6) plays['p3'] = randint(1,6) plays['p4'] = randint(1,6) print(plays) {'p1': 4, 'p2': 0, 'p3': 6, 'p4': 0} Contudo, encurtei as linhas assim: gamer = ['p1','p2','p3','p4'] plays2 = dict() for i in gamer: # plays2 += {i:''} plays2[i] = randint(1,6) plays2 {'p1': 5, 'p2': 5, 'p3': 5, 'p4': 1} Depois andei a ver algum código na net e gostaria de conseguir dividir em quatro (individualmente) o tuplo que tem a atribuição vazia '' # Declaring a dictionary d = {} # This is the list which we are # trying to use as a key to # the dictionary a =['p1','p2','p3','p4'] # # converting the list a to a string # p = str(a) # d[p]= '' # converting the list a to a tuple q = tuple(a) d[q]= '' for key, value in d.items(): print(key, ':', value) print(d) ('p1', 'p2', 'p3', 'p4') : {('p1', 'p2', 'p3', 'p4'): ''} Grato pela atenção, cumprimentos jonhhy
-
Boa tarde caríssimos membros da comunidade P@P, vou apresentar-vos o problema e o esboço de código na tentativa de resolução: Desafio 78 Faça um programa que leia 5 valores numéricos e guarde-os em uma lista. No final, mostre qual foi o maior e o menor valor digitado e as suas respectivas posições na lista. def countPos(extreme, values): for ind, values in enumerate(values): pos = [] oc = values.count(extreme) pst=values.index(extreme) if oc > 1: pos.append(pst) oc -= 1 values = values[oc+1:] countPos(extreme, values) else: return pst if oc == len(values-1): return pos values = [] maxi=mini=0.0 im = iM = [] for i in range(0,5): n = float(input(f'Digit num[{i+1}]: ')) # int(input) também dá erro values.append(n) if i == 0 or values[i] < mini: #mini, im = values[i], i mini = values[i] #im.append(i+1) if i == 0 or float(values[i]) >= maxi: #maxi, iM = values[i], i maxi = values[i] #iM.append(i+1) print('-=' *20) print(f'You digit: {values}') print(f'Maximum is: {maxi} in position {countPos(maxi, values)}') #iM} ') print(f'Minimum is: {mini} in position {countPos(mini, values)}') #im}') O que devo alterar?