//
O operador //
realiza a divisão inteira de dois números.
Veja um exemplo a seguir.
minutos = 252
horas = minutos // 60
print(minutos, "minutos contêm", horas, "horas completas")
%
O operador %
devolve o resto da divisão inteira entre dois números.
Veja exemplos de uso a seguir:
resto = 13 % 5
print(resto)
minutos = 252
horas = minutos // 60
minutos_excedentes = minutos % 60
print(minutos, "minutos =", horas, "horas e", minutos_excedentes, "minutos")
if
- else
Comandos para a execução condicional dão ao programador a habilidade de verificar condições e mudar o comportamento do programa de acordo com isso.
O comando if
é a forma mais simples de se fazer uma execução condicional. Veja o exemplo a seguir.
def main():
x = int(input("Digite um número: "))
if x > 0:
print(x, "é um número positivo.")
print("Tchau!")
#-----
main()
A expressão lógica depois do if
é chamada de condição. Se ela for verdadeira, o bloco de comandos indentados será executado. Se ela for falsa, nenhum comando de dentro do bloco indentado será executado.
Não há um limite para a quantidade de comandos que podem aparecer dentro de um bloco do if
, mas sempre deve haver pelo menos um comando no bloco.
Uma segunda forma do comando if
é a execução alternativa, ou comando if-else
, em que há duas possibilidades de execução e é a condição quem determina qual delas será realizada.
Os comandos relacionados a uma das possibilidades aparecem como um bloco indentado do if
e serão executados quando a condição for verdadeira. Os comandos da outra possibilidade aparecem como um bloco indentado do else
e serão executados quando a condição do if
for falsa. Veja um exemplo de uso a seguir:
def main():
x = int(input("Digite um número: "))
if x > 0:
print(x, "é um número positivo.")
else:
print(x, "NÃO é um número positivo.")
print("Tchau!")
#-----
main()
for
e a função range
Na Aula 2, vimos como usar o comando while
para criar laços para executar repetidamente blocos de comandos.
Quando se sabe exatamente quantas vezes é preciso repetir a execução de um bloco, uma alternativa ao uso do while
é o uso do comando for
combinado à função range
.
Veja um exemplo de programa que usa o for
a seguir:
def main():
print("Iniciando contagem:")
for i in range(5):
print(i)
print("Bum!")
#-----
main()
Usando while
, o programa acima ficaria duas linhas mais longo:
def main():
print("Iniciando contagem:")
i = 0
while i < 5 :
print(i)
i = i + 1
print("Bum!")
#-----
main()
Dados um número inteiro n
, n > 0
, e uma sequência com n
números inteiros, determinar quantos números da sequência são pares e quantos são ímpares. Por exemplo, para a sequência
6
-2 7 0 -5 8 4
o seu programa deve escrever o número 4 para o número de pares e 2 para o de ímpares.
Nessa primeira solução apresentada, exercitaremos o uso do operador %
e do comando if
:
def main():
n = n_salvo = int(input("Digite o tamanho da sequência: ")) # atribuição múltipla
conta_par = 0
while n > 0:
num = int(input("Digite um número da sequência: "))
n = n - 1
if num % 2 == 0:
conta_par = conta_par + 1
print(conta_par, "números pares")
print(n_salvo-conta_par, "números ímpares")
#-----
main()
Um número é par quando ele é divisível por 2. Isso equivale a dizer que um número é par quando o resto da divisão inteira dele por 2 é zero. No programa acima, a linha que verifica se o número digitado é par é a seguinte:
if num % 2 == 0:
Quando a condição desse if
é satisfeita (ou seja, quando o resto da divisão inteira do número por 2 é zero), então a contagem dos números pares é incrementada.
Ao final do programa, teremos que quantidade de números ímpares pode ser obtida subtraindo a quantidade de pares da quantidade total de números lidos como entrada.
Atenção: A primeira linha da Solução 1 acima se trata de um comando de atribuição múltipla
. Em uma atribuição desse tipo, uma sequência de variáveis recebe um mesmo valor (o que aparece do lado direito do operador de atribuição =
mais à direita no comando).
Nessa segunda solução, exercitaremos o uso do else
:
def main():
n = int(input("Digite o tamanho da sequência: "))
conta_par = 0
conta_impar = 0
while n > 0:
num = int(input("Digite um número da sequência: "))
n = n - 1
if num % 2 == 0:
conta_par = conta_par + 1
else:
conta_impar = conta_impar + 1
print(conta_par, "números pares")
print(conta_impar, "números ímpares")
#-----
main()
No programa acima, quando a condição do if
é satisfeita (ou seja, quando o número lido é divisível por 2), então o contador de pares é incrementado. Entretanto, como esse if
possui um comando else
associado a ele, quando o número lido não é divisível por 2, o bloco de comandos associado ao else
é executado, causando um incremento na contagem de números ímpares.
Na Solução 3, substituiremos o laço while
usado nas duas soluções anteriores por um laço for
+ range
:
def main():
n = int(input("Digite o tamanho da sequência: "))
conta_par = 0
conta_impar = 0
for i in range(n):
num = int(input("Digite um número da sequência: "))
if num % 2 == 0:
conta_par = conta_par + 1
else:
conta_impar = conta_impar + 1
print(conta_par, "números pares")
print(conta_impar, "números ímpares")
#-----
main()
Dados um número inteiro n
, n > 0
, e um dígito d (0 ≤ d ≤ 9)
, determinar quantas vezes d
ocorre em n
.
Exemplo 1:
Digite o valor de n (n > 0): 63543
Digite o valor de d (0<=d<=9): 3
O dígito 3 ocorre 2 vezes em 63543
Exemplo 2:
Digite o valor de n (n > 0): 0
Digite o valor de d (0<=d<=9): 0
O dígito 0 ocorre 0 vezes em 0
Exemplo 3:
Digite o valor de n (n > 0): 0110
Digite o valor de d (0<=d<=9): 0
O dígito 0 ocorre 1 vezes em 110
Nessa solução, mais uma vez exercitamos o uso dos operadores //
e %
, e do comando if
:
def main():
n = int(input("Digite o valor de n (n > 0): "))
d = int(input("Digite o valor de d (0<=d<=9): "))
conta_digito = 0
n_salvo = n
while n > 0:
dig = n % 10
n = n // 10
if dig == d:
conta_digito = conta_digito + 1
print("O dígito", d, "ocorre", conta_digito, "vezes em ", n_salvo)
#-----
main()
É importante observar que, nessa solução, os operadores %
e //
estão sendo usados para "descascar" um número inteiro (ou seja, para obter cada um dos seus dígitos separadamente).
Se n
é um número na base decimal, o resultado da operação n % 10
é o dígito menos significativo de n
, ao passo que o operação n // 10
devolve como resultado o próprio n
sem o seu dígito menos significativo.
Dizemos que um número inteiro positivo é triangular se ele é o produto de três números inteiros consecutivos.
Por exemplo, 120
é triangular, pois 4 × 5 × 6
é igual a 120
.
Dado um número inteiro positivo n
, verificar se n
é triangular.
Obs.: Este problema corresponde ao exercício 10 da lista de exercícios sobre inteiros.
'''
Programa que lê um inteiro positivo n e imprime uma mensagem
indicando se ele é ou não triangular
'''
def main():
print("Determina se um número n é triangular\n")
# leia o valor de n
n = int(input("Digite o valor de n: "))
i = 1
while i * (i+1) * (i+2) < n:
i = i + 1
if i * (i+1) * (i+2) == n:
print("%d é o produto %d*%d*%d" %(n,i,i+1,i+2))
else:
print("%d não é triangular" %(n))
#----------
main()
if
if-else
//
%