**********| Itens resumidos |**********
**********| Itens detalhados |**********
python --version ou python3 --version para verificar a versão instalada.C:\PythonXX) e Scripts à variável PATH:
script.py).python script.py ou python3 script.py.pip install nome_do_pacote.python -m venv nome_do_ambiente.nome_do_ambiente\Scripts\activatesource nome_do_ambiente/bin/activatepython -m pip install --upgrade pippip list --outdated e pip install --upgrade nome_do_pacote**********| Para começar com Python, aprenda estes conceitos básicos. |**********
int), números de ponto flutuante (float), strings (str), e booleanos (bool).if, else, elif), e loops (for, while).def, passando parâmetros e retornando valores.list) e tuplas (tuple), para armazenar múltiplos valores.dict).import.try, except, finally para capturar e tratar exceções.open(), read(), e write().csvjsonthreadingasynciovenvcryptographyTkinterospandasmatplotlib
nome = "João" # String
idade = 25 # Inteiro
altura = 1.75 # Float
ativo = True # Booleano
# Condicional
if idade > 18:
print("Maior de idade")
else:
print("Menor de idade")
# Loop
for i in range(5):
print(i)
while idade < 30:
print("Ainda jovem")
idade += 1
def soma(a, b):
return a + b
resultado = soma(2, 3)
print(resultado) # Saída: 5
# Escrever em um arquivo
with open('arquivo.txt', 'w') as f:
f.write('Escrevendo no arquivo')
# Ler de um arquivo
with open('arquivo.txt', 'r') as f:
conteudo = f.read()
print(conteudo)
quadrados = [x**2 for x in range(10)]
print(quadrados) # Saída: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
def meu_decorator(func):
def wrapper():
print("Algo antes da função")
func()
print("Algo depois da função")
return wrapper
@meu_decorator
def diz_oi():
print("Oi!")
diz_oi()
# Saída:
# Algo antes da função
# Oi!
# Algo depois da função
def meu_generator():
for i in range(10):
yield i
for valor in meu_generator():
print(valor)
class MeuContexto:
def __enter__(self):
print("Entrando no contexto")
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print("Saindo do contexto")
with MeuContexto() as contexto:
print("Dentro do contexto")
# Saída:
# Entrando no contexto
# Dentro do contexto
# Saindo do contexto
class Animal:
def __init__(self, nome):
self.nome = nome
def fazer_som(self):
print("Som genérico")
class Cachorro(Animal):
def fazer_som(self):
print("Au au!")
animal = Animal("Genérico")
cachorro = Cachorro("Rex")
animal.fazer_som() # Saída: Som genérico
cachorro.fazer_som() # Saída: Au au!
# Trabalhar com CSV
import csv
with open('dados.csv', 'w', newline=' ') as csvfile:
escritor = csv.writer(csvfile)
escritor.writerow(['Nome', 'Idade'])
escritor.writerow(['João', 25])
# Trabalhar com JSON
import json
dados = {'nome': 'Maria', 'idade': 30}
with open('dados.json', 'w') as jsonfile:
json.dump(dados, jsonfile, indent=4)
import threading
def minha_funcao():
print("Executando em uma thread")
t = threading.Thread(target=minha_funcao)
t.start()
t.join()
import asyncio
async def minha_corrotina():
print("Executando assíncronamente")
asyncio.run(minha_corrotina())
# Criar ambiente virtual
python -m venv "meu_ambiente"
# Usar Docker
FROM python:'3.9'
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
CMD ['python', 'app.py']
from cryptography.fernet import Fernet
chave = Fernet.generate_key()
fernet = Fernet(chave)
texto = "Texto secreto"
texto_criptografado = fernet.encrypt(texto.encode())
texto_decifrado = fernet.decrypt(texto_criptografado).decode()
print(texto_criptografado)
print(texto_decifrado)
import tkinter as tk
root = tk.Tk()
label = tk.Label(root, text="Olá, Mundo!")
label.pack()
root.mainloop()
import sqlite3
def criar_banco():
conexao = sqlite3.connect('banco.db')
cursor = conexao.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS pessoas (nome TEXT, idade INTEGER)')
conexao.commit()
conexao.close()
def inserir_pessoa(nome, idade):
conexao = sqlite3.connect('banco.db')
cursor = conexao.cursor()
cursor.execute('INSERT INTO pessoas (nome, idade) VALUES (?, ?)', (nome, idade))
conexao.commit()
conexao.close()
import os
def listar_arquivos():
arquivos = os.listdir('.')
print(arquivos)
listar_arquivos()
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Criar DataFrame
dados = pd.DataFrame({
'Nome': ['Ana', 'Pedro'],
'Idade': [22, 30]
})
print(dados)
# Plotar gráfico
dados.plot(x='Nome', y='Idade', kind='bar')
plt.show()
# Exemplo de Padrão Singleton
class Singleton:
_instancia = None
def __new__(cls):
if cls._instancia is None:
cls._instancia = super(Singleton, cls).__new__(cls)
return cls._instancia
singleton1 = Singleton()
singleton2 = Singleton()
print(singleton1 is singleton2) # Saída: True
O Python possui várias particularidades que o tornam único e poderoso. Aqui estão algumas delas:
pip.lambda. Essas funções são úteis para operações simples que não exigem uma função completa.O Python usa indentação para definir blocos de código, ao invés de chaves ou palavras-chave. É importante manter a consistência na indentação para evitar erros.
def saudacao():
print("Olá, mundo!")
saudacao()
Em Python, você não precisa declarar o tipo das variáveis. O tipo é inferido automaticamente com base no valor atribuído.
x = 10 # Inteiro
y = "Olá" # String
z = 3.14 # Float
Funções e objetos em Python são tratados como objetos de primeira classe, o que significa que podem ser passados como argumentos, retornados por outras funções e atribuídos a variáveis.
def somar(a, b):
return a + b
def aplicar_funcao(func, x, y):
return func(x, y)
resultado = aplicar_funcao(somar, 5, 3)
print(resultado) # Saída: 8
O Python permite criar listas de maneira concisa e eficiente usando list comprehensions. Elas oferecem uma maneira elegante de gerar listas com base em sequências ou outras listas.
Python suporta geradores e iteradores, que permitem criar sequências de valores sem armazená-los todos na memória. Isso é útil para lidar com grandes conjuntos de dados.
def contador(max):
count = 0
while count < max:
yield count
count += 1
for numero in contador(5):
print(numero) # Saída: 0 1 2 3 4
O Python é uma linguagem interpretada, o que significa que o código é executado diretamente pelo interpretador, sem a necessidade de compilação prévia.
# Código Python executado diretamente pelo interpretador
print("Hello, world!")
Python vem com uma extensa biblioteca padrão que fornece muitos módulos e pacotes prontos para usar. Além disso, a comunidade Python desenvolve uma vasta gama de pacotes que podem ser instalados usando o pip.
# Exemplo de uso do módulo datetime da biblioteca padrão
import datetime
agora = datetime.datetime.now()
print(agora)
Python permite criar funções anônimas e pequenas usando a palavra-chave lambda. Essas funções são úteis para operações simples que não exigem uma função completa.
# Função lambda que soma dois números
soma = lambda x, y: x + y
print(soma(5, 3)) # Saída: 8
Em Python, as strings são imutáveis, o que significa que, uma vez criadas, elas não podem ser modificadas. Qualquer operação que pareça modificar uma string na verdade cria uma nova string.
Python permite documentar funções, classes e módulos usando docstrings, que são strings de documentação localizadas imediatamente após a definição.
def saudacao(nome):
"""
Retorna uma saudação para o nome fornecido.
"""
return f"Olá, {nome}!"
print(saudacao.__doc__) # Saída: Retorna uma saudação para o nome fornecido.
# Exemplo com Flask
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Olá, Mundo!'
if __name__ == '__main__':
app.run(debug=True)
Saída esperada:
Quando você acessa a URL do servidor local (http://127.0.0.1:5000/), verá a mensagem "Olá, Mundo!".
# Exemplo com Pandas e NumPy
import pandas as pd
import numpy as np
# Criar um DataFrame de exemplo
df = pd.DataFrame({
'A': np.random.randn(5),
'B': np.random.rand(5)
})
print(df)
Saída esperada:
A B
0 0.244084 0.051048
1 -0.189177 0.327417
2 0.179246 0.075929
3 -0.370104 0.919969
4 -0.460731 0.171050
# Exemplo com scikit-learn
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# Carregar o conjunto de dados Iris
iris = load_iris()
X, y = iris.data, iris.target
# Dividir os dados em treino e teste
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Treinar o modelo
model = RandomForestClassifier()
model.fit(X_train, y_train)
# Fazer previsões
predictions = model.predict(X_test)
accuracy = accuracy_score(y_test, predictions)
print(f'Accuracy: {accuracy:.2f}')
Saída esperada:
Accuracy: 0.98
# Exemplo de envio de e-mail com smtplib
import smtplib
from email.mime.text import MIMEText
# Configurar o e-mail
msg = MIMEText('Olá, este é um e-mail automatizado!')
msg['Subject'] = 'Assunto do E-mail'
msg['From'] = 'seuemail@example.com'
msg['To'] = 'destinatario@example.com'
# Enviar o e-mail
with smtplib.SMTP('smtp.example.com', 587) as server:
server.starttls()
server.login('seuemail@example.com', 'sua_senha')
server.send_message(msg)
print('E-mail enviado com sucesso!')
Saída esperada:
E-mail enviado com sucesso!
# Exemplo com Tkinter (interface gráfica)
import tkinter as tk
# Criar a janela principal
root = tk.Tk()
root.title("Aplicação Tkinter")
# Adicionar um rótulo
label = tk.Label(root, text="Olá, Tkinter!")
label.pack(padx=20, pady=20)
# Iniciar o loop da interface gráfica
root.mainloop()
Saída esperada:
Uma janela com o texto "Olá, Tkinter!" exibido.
# Exemplo com FastAPI
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
Saída esperada:
Quando você acessa a URL do servidor local (http://127.0.0.1:8000/), verá um JSON com a mensagem {"Hello": "World"}.
# Exemplo de monitoramento de sistema
import psutil
# Obter informações sobre o uso de CPU
cpu_percent = psutil.cpu_percent(interval=1)
print(f'Uso da CPU: {cpu_percent}%')
Saída esperada:
Uso da CPU: 15%
# Exemplo com Pygame
import pygame
pygame.init()
# Configurar a tela
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Jogo com Pygame")
# Loop principal do jogo
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Preencher a tela com a cor azul
screen.fill((0, 0, 255))
pygame.display.flip()
pygame.quit()
Saída esperada:
Uma janela de jogo com fundo azul será exibida.
# Exemplo com pytest
def soma(a, b):
return a + b
def test_soma():
assert soma(1, 2) == 3
assert soma(-1, 1) == 0
assert soma(0, 0) == 0
Saída esperada:
Todos os testes passarão sem erros.
# Exemplo com Matplotlib
import matplotlib.pyplot as plt
import numpy as np
# Dados para o gráfico
x = np.linspace(0, 10, 100)
y = np.sin(x)
# Criar o gráfico
plt.plot(x, y)
plt.xlabel('Tempo')
plt.ylabel('Amplitude')
plt.title('Gráfico de Seno')
plt.show()
Saída esperada:
Um gráfico de seno será exibido.
# Exemplo de cálculo de média móvel
import pandas as pd
import numpy as np
# Criar um DataFrame de exemplo
data = pd.DataFrame({
'Preços': np.random.rand(10) * 100
})
# Calcular a média móvel
data['Média Móvel'] = data['Preços'].rolling(window=3).mean()
print(data)
Saída esperada:
Preços Média Móvel
0 9.55 NaN
1 55.46 NaN
2 66.73 43.583333
3 83.67 68.624444
4 14.11 54.496667
5 35.12 44.956667
6 79.71 56.009444
7 91.83 68.556667
8 64.92 77.154444
9 52.14 69.026667
# Exemplo com ChatterBot
from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer
# Criar o chatbot
chatbot = ChatBot('MeuChatBot')
# Treinar o chatbot com o corpus em inglês
trainer = ChatterBotCorpusTrainer(chatbot)
trainer.train('chatterbot.corpus.english')
# Conversar com o chatbot
response = chatbot.get_response('Olá, como você está?')
print(response)
Saída esperada:
A resposta gerada pelo chatbot para a pergunta será exibida, por exemplo: "Estou bem, obrigado!".
# Exemplo de NumPy
import numpy as np
# Criar um array NumPy
array = np.array([1, 2, 3, 4, 5])
print(array)
# Realizar operações matemáticas
soma = np.sum(array)
print(f"Soma dos elementos: {soma}")
Saída esperada:
[1 2 3 4 5]
Soma dos elementos: 15
# Exemplo de Pandas
import pandas as pd
# Criar um DataFrame
dados = {'Nome': ['Ana', 'Pedro', 'João'], 'Idade': [23, 34, 45]}
df = pd.DataFrame(dados)
print(df)
# Operações básicas
media_idade = df['Idade'].mean()
print(f"Média de idade: {media_idade:.2f}")
Saída esperada:
Nome Idade
0 Ana 23
1 Pedro 34
2 João 45
Média de idade: 34.00
# Exemplo de Matplotlib
import matplotlib.pyplot as plt
# Dados de exemplo
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
# Criar o gráfico
plt.plot(x, y, marker='o')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Gráfico de Exemplo')
plt.grid(True)
plt.show()
Saída esperada:
# Exemplo de Scikit-learn
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
# Carregar o conjunto de dados
dados = load_iris()
X = dados.data
y = dados.target
# Dividir o conjunto de dados
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Treinar o modelo
modelo = RandomForestClassifier()
modelo.fit(X_train, y_train)
# Avaliar o modelo
precisao = modelo.score(X_test, y_test)
print(f"Precisão: {precisao:.2f}")
Saída esperada:
Precisão: 0.98
# Exemplo de TensorFlow
import tensorflow as tf
# Criar um modelo simples
modelo = tf.keras.Sequential([
tf.keras.layers.Dense(10, activation='relu', input_shape=(4,)),
tf.keras.layers.Dense(3, activation='softmax')
])
modelo.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# Resumo do modelo
modelo.summary()
Saída esperada:
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 10) 50
dense_1 (Dense) (None, 3) 33
=================================================================
Total params: 83
Trainable params: 83
Non-trainable params: 0
_________________________________________________________________
# Exemplo de Keras
from keras.models import Sequential
from keras.layers import Dense
# Criar um modelo simples
modelo = Sequential([
Dense(10, activation='relu', input_shape=(4,)),
Dense(3, activation='softmax')
])
modelo.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# Resumo do modelo
modelo.summary()
Saída esperada:
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 10) 50
dense_1 (Dense) (None, 3) 33
=================================================================
Total params: 83
Trainable params: 83
Non-trainable params: 0
_________________________________________________________________
# Exemplo de Flask
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Olá, Mundo!"
if __name__ == '__main__':
app.run()
Saída esperada:
Quando você acessa a URL do servidor local (http://127.0.0.1:5000/), verá a mensagem "Olá, Mundo!".
Saída esperada:
Quando você acessa a URL do servidor local (http://127.0.0.1:8000/), você verá a página inicial padrão do Django.
Saída esperada:
200
{
'current_user_url': 'https://api.github.com/user',
'current_user_authorizations_html_url': 'https://github.com/settings/connections/applications{/client_id}',
...
}
Saída esperada:
Exemplo Domain
Saída esperada:
O código cria uma tabela `usuarios` no banco de dados SQLite chamado `exemplo.db` e adiciona um usuário chamado "Maria". Você pode verificar isso usando um cliente SQLite ou um script para consultar a tabela.
Saída esperada:
O código abrirá a imagem 'exemplo.jpg', exibirá a imagem e a converterá para escala de cinza, salvando o resultado como 'exemplo_cinza.jpg'. Você verá a imagem em preto e branco.
Saída esperada:
O código define uma tarefa chamada `somar` que pode ser executada em um worker Celery. Para ver a saída, você precisa configurar o Redis e iniciar o worker Celery com o comando fornecido.
Saída esperada:
O comando `pytest` executará os testes e, para o exemplo fornecido, exibirá uma mensagem indicando que o teste passou.
Saída esperada:
# Exemplo de uso no Jupyter Notebook para visualização de dados
import pandas as pd
import matplotlib.pyplot as plt
# Carregar um dataset de exemplo
df = pd.DataFrame({
'Ano': [2017, 2018, 2019, 2020, 2021],
'Vendas': [500, 600, 700, 800, 900]
})
# Mostrar o dataframe
df
# Plotar um gráfico simples
plt.plot(df['Ano'], df['Vendas'])
plt.title('Vendas Anuais')
plt.xlabel('Ano')
plt.ylabel('Vendas')
plt.show()
Saida esperada
Uma tabela exibindo os dados do dataframe, com colunas "Ano" e "Vendas".
Um gráfico de linha mostrando as vendas anuais.
# Exemplo de uso no Visual Studio Code para definir e utilizar uma função
# Definindo uma função para calcular o fatorial
def fatorial(n):
if n == 0 or n == 1:
return 1
else:
return n * fatorial(n - 1)
# Usando a função fatorial
numero = 5
resultado = fatorial(numero)
print(f"O fatorial de {numero} é {resultado}")
Exemplo de Saída:
O fatorial de 5 é 120
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Olá, Mundo!"
if __name__ == '__main__':
app.run(debug=True)
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.google.com')
search_box = driver.find_element_by_name('q')
search_box.send_keys('Python')
search_box.submit()
driver.quit()
import pandas as pd
data = {'Nome': ['Alice', 'Bob', 'Charlie'],
'Idade': [25, 30, 35]}
df = pd.DataFrame(data)
print(df)
Nome Idade
0 Alice 25
1 Bob 30
2 Charlie 35from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
data = load_iris()
X = data.data
y = data.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
model = RandomForestClassifier()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
print(accuracy_score(y_test, predictions))
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
model = Sequential([
Dense(64, activation='relu', input_shape=(784,)),
Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
print(model.summary())
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption('Meu Jogo')
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.quit()
import tkinter as tk
root = tk.Tk()
root.title('Minha Aplicação')
label = tk.Label(root, text='Olá, Mundo!')
label.pack()
root.mainloop()
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
def test_soma():
assert 1 + 1 == 2
import numpy as np
array = np.array([1, 2, 3, 4])
print(np.mean(array))
import random
dados = [random.random() for _ in range(100)]
print(dados[:10])
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y)
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Gráfico de Exemplo')
plt.show()
from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer
chatbot = ChatBot('Meu ChatBot')
trainer = ChatterBotCorpusTrainer(chatbot)
trainer.train('chatterbot.corpus.portuguese')
response = chatbot.get_response('Olá')
print(response)
from moviepy.editor import VideoFileClip
clip = VideoFileClip('meu_video.mp4')
clip = clip.subclip(10, 20)
clip.write_videofile('video_editado.mp4')
import yfinance as yf
acoes = yf.Ticker('AAPL')
historico = acoes.history(period='1y')
print(historico.head())
from scapy.all import sniff
def pacote_callback(pacote):
print(pacote.summary())
sniff(prn=pacote_callback, count=10)
import smtplib
from email.mime.text import MIMEText
msg = MIMEText('Olá, este é um e-mail de teste.')
msg['Subject'] = 'Teste'
msg['From'] = 'seuemail@example.com'
msg['To'] = 'destinatario@example.com'
with smtplib.SMTP('smtp.example.com') as server:
server.login('seuemail@example.com', 'sua_senha')
server.send_message(msg)
import csv
with open('exemplo.csv', mode='w', newline='') as arquivo:
escritor = csv.writer(arquivo)
escritor.writerow(['Nome', 'Idade'])
escritor.writerow(['Alice', 25])
escritor.writerow(['Bob', 30])
from bs4 import BeautifulSoup
import requests
resposta = requests.get('http://example.com')
sopa = BeautifulSoup(resposta.text, 'html.parser')
print(sopa.title.string)
import requests
url = 'https://api.example.com/dados'
dados = {'nome': 'Alice', 'idade': 25}
resposta = requests.post(url, json=dados)
print(resposta.json())
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
pdf = canvas.Canvas('relatorio.pdf', pagesize=letter)
pdf.drawString(100, 750, 'Relatório de Exemplo')
pdf.save()
import json
dados = {'nome': 'Alice', 'idade': 25}
with open('dados.json', 'w') as arquivo:
json.dump(dados, arquivo)
with open('dados.json', 'r') as arquivo:
dados_lidos = json.load(arquivo)
print(dados_lidos)
python -m venv meu_ambiente
source meu_ambiente/bin/activate
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws['A1'] = 'Nome'
ws['A2'] = 'Alice'
ws['B1'] = 'Idade'
ws['B2'] = 25
wb.save('exemplo.xlsx')
import pandas as pd
dados = pd.DataFrame({'Nome': ['Alice', 'Bob'], 'Idade': [25, 30]})
dados.to_excel('dados.xlsx', index=False)
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///banco.db'
db = SQLAlchemy(app)
class Usuario(db.Model):
id = db.Column(db.Integer, primary_key=True)
nome = db.Column(db.String(80), unique=True, nullable=False)
@app.route('/')
def index():
return "Aplicação com Flask e SQLAlchemy"
if __name__ == '__main__':
db.create_all()
app.run(debug=True)
# meu_modulo.py
def saudacao(nome):
return f"Olá, {nome}!"
# script principal
from meu_modulo import saudacao
print(saudacao('Alice'))