First Commit
This commit is contained in:
commit
ca1d09df19
|
@ -0,0 +1,5 @@
|
||||||
|
celcius = float(input('°C: '))
|
||||||
|
|
||||||
|
fahrenheit = 1.8 * celcius + 32
|
||||||
|
|
||||||
|
print('\n{} °C = {} °F'.format(celcius, fahrenheit))
|
|
@ -0,0 +1,6 @@
|
||||||
|
v1 = float(input('Velocidade de ida (v1): '))
|
||||||
|
v2 = float(input('Velocidade de regresso (v2): '))
|
||||||
|
|
||||||
|
vm = (2 * v1 * v2) / (v1 + v2)
|
||||||
|
|
||||||
|
print('\nA velocidade média da viagem completa foi: ', vm)
|
|
@ -0,0 +1,8 @@
|
||||||
|
import calendar
|
||||||
|
from datetime import datetime;
|
||||||
|
|
||||||
|
nome = input('Como te chamas? ')
|
||||||
|
anoNascenca = int(input('Em que ano nasceste? '))
|
||||||
|
ano = int(input('Ano para verificar: '))
|
||||||
|
|
||||||
|
print('{}, em {} farás {} anos.'.format(nome, ano, ano - anoNascenca))
|
|
@ -0,0 +1,8 @@
|
||||||
|
secs = int(input('Segundos a converter para horas, minutos e segundos? '))
|
||||||
|
s = secs % 60
|
||||||
|
mins = secs // 60
|
||||||
|
m = mins % 60
|
||||||
|
h = mins // 60
|
||||||
|
|
||||||
|
|
||||||
|
print("{:02d}:{:02d}:{:02d}".format(h, m, s))
|
|
@ -0,0 +1,10 @@
|
||||||
|
viagensDia = 2 * (1 + 2 + 3)
|
||||||
|
viagensAno = viagensDia * 365
|
||||||
|
|
||||||
|
mAno = viagensAno * 3
|
||||||
|
kmAno = mAno
|
||||||
|
|
||||||
|
secsAno = mAno
|
||||||
|
hAno = secsAno / 3600
|
||||||
|
|
||||||
|
print('O elevador anda {} kilometros por ano, durante {} horas.'.format(kmAno, hAno))
|
|
@ -0,0 +1,13 @@
|
||||||
|
from math import *
|
||||||
|
|
||||||
|
|
||||||
|
A = float(input('Comprimento do cateto A: '))
|
||||||
|
B = float(input('Comprimento do cateto B: '))
|
||||||
|
|
||||||
|
C = sqrt(A**2 + B**2)
|
||||||
|
|
||||||
|
cosseno = A / C
|
||||||
|
angRad = acos(cosseno)
|
||||||
|
angDeg = angRad * 180 / pi
|
||||||
|
|
||||||
|
print('O comprimento da hipotenusa é {} e o valor do angulo entre o cateto A e a hipotenusa é {}°'.format(round(C, 2), round(angDeg, 2)))
|
|
@ -0,0 +1,14 @@
|
||||||
|
from math import sqrt
|
||||||
|
|
||||||
|
|
||||||
|
x1, y1 = input("Introduza x1 e y1, separados por uma virgula ',': ").split(',')
|
||||||
|
x2, y2 = input("Introduza x2 e y2, separados por uma virgula ',': ").split(',')
|
||||||
|
|
||||||
|
x1 = float(x1)
|
||||||
|
y1 = float(y1)
|
||||||
|
x2 = float(x2)
|
||||||
|
y2 = float(y2)
|
||||||
|
|
||||||
|
distancia = sqrt((x2 - x1)**2 + (y2 - y1)**2)
|
||||||
|
|
||||||
|
print('A distancia entre os dois pontos é: ', distancia)
|
|
@ -0,0 +1,25 @@
|
||||||
|
|
||||||
|
# A teenager is a person between 13 and 19 years old, inclusive.
|
||||||
|
# A child is under 13. A grown-up is 20 or more.
|
||||||
|
# This program outputs the age category for a given input age.
|
||||||
|
# It has a semantic error. Can you find it?
|
||||||
|
# Which values of age produce the output "grown-up"?
|
||||||
|
# Correct the error.
|
||||||
|
# Can you simplify the code to avoid redundant conditions?
|
||||||
|
|
||||||
|
age = int(input("Age? "))
|
||||||
|
|
||||||
|
if age < 0:
|
||||||
|
print("ERROR: invalid age!")
|
||||||
|
exit(1) # this terminates the program
|
||||||
|
|
||||||
|
print("Age:", age)
|
||||||
|
|
||||||
|
if age < 13 :
|
||||||
|
cat = "child"
|
||||||
|
elif 13 < age < 20:
|
||||||
|
cat = "teenager"
|
||||||
|
else:
|
||||||
|
cat = "grown-up"
|
||||||
|
|
||||||
|
print("Category: ", cat)
|
|
@ -0,0 +1,129 @@
|
||||||
|
// .NET core 6.0
|
||||||
|
|
||||||
|
namespace Darts
|
||||||
|
{
|
||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
static void Main(string[] args)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Introduza as coordenadas (x, y) do dardo.\nRepresentam as posições horizontal e vertical respetivamente.\nAmbas em milimetros.");
|
||||||
|
Console.Write("X: ");
|
||||||
|
int x = Convert.ToInt32(Console.ReadLine());
|
||||||
|
Console.Write("Y: ");
|
||||||
|
int y = Convert.ToInt32(Console.ReadLine());
|
||||||
|
|
||||||
|
double mod = Math.Sqrt(Math.Pow(x, 2) + Math.Pow(y, 2));
|
||||||
|
|
||||||
|
if (mod > 170)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Fora do alvo.");
|
||||||
|
Console.ReadKey();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mod < 12.7)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Pontuação: 50 points");
|
||||||
|
Console.ReadKey();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (mod < 32)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Pontuação: 25 points");
|
||||||
|
Console.ReadKey();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int basePoint = BasePoint(x, y);
|
||||||
|
|
||||||
|
if (mod > 99 && mod < 107)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Pontuação: {basePoint * 3} points");
|
||||||
|
Console.ReadKey();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (mod > 162)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Pontuação: {basePoint * 2} points");
|
||||||
|
Console.ReadKey();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.WriteLine($"Pontuação: {basePoint} points");
|
||||||
|
Console.ReadKey();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int BasePoint(int x, int y)
|
||||||
|
{
|
||||||
|
if (x > 0)
|
||||||
|
{
|
||||||
|
if (Math.Abs(y) < x * Math.Tan(Math.PI / 20))
|
||||||
|
return 6;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (y > 0)
|
||||||
|
{
|
||||||
|
if (y < x * Math.Tan(3 * Math.PI / 20))
|
||||||
|
return 13;
|
||||||
|
if (y < x * Math.Tan(5 * Math.PI / 20))
|
||||||
|
return 4;
|
||||||
|
if (y < x * Math.Tan(7 * Math.PI / 20))
|
||||||
|
return 18;
|
||||||
|
if (y < x * Math.Tan(9 * Math.PI / 20))
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 20;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (y > x * Math.Tan(-3 * Math.PI / 20))
|
||||||
|
return 10;
|
||||||
|
if (y > x * Math.Tan(-5 * Math.PI / 20))
|
||||||
|
return 15;
|
||||||
|
if (y > x * Math.Tan(-7 * Math.PI / 20))
|
||||||
|
return 2;
|
||||||
|
if (y > x * Math.Tan(-9 * Math.PI / 20))
|
||||||
|
return 17;
|
||||||
|
else
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (Math.Abs(y) < x * Math.Tan(Math.PI + Math.PI / 20))
|
||||||
|
return 11;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (y > 0)
|
||||||
|
{
|
||||||
|
if (y < x * Math.Tan(Math.PI + 3 * Math.PI / 20))
|
||||||
|
return 14;
|
||||||
|
if (y < x * Math.Tan(Math.PI + 5 * Math.PI / 20))
|
||||||
|
return 9;
|
||||||
|
if (y < x * Math.Tan(Math.PI + 7 * Math.PI / 20))
|
||||||
|
return 12;
|
||||||
|
if (y < x * Math.Tan(Math.PI + 9 * Math.PI / 20))
|
||||||
|
return 5;
|
||||||
|
else
|
||||||
|
return 20;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (y > x * Math.Tan(Math.PI + -3 * Math.PI / 20))
|
||||||
|
return 8;
|
||||||
|
if (y > x * Math.Tan(Math.PI + -5 * Math.PI / 20))
|
||||||
|
return 16;
|
||||||
|
if (y > x * Math.Tan(Math.PI + -7 * Math.PI / 20))
|
||||||
|
return 7;
|
||||||
|
if (y > x * Math.Tan(Math.PI + -9 * Math.PI / 20))
|
||||||
|
return 19;
|
||||||
|
else
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,88 @@
|
||||||
|
import math
|
||||||
|
|
||||||
|
def BasePoint(x, y):
|
||||||
|
if x > 0:
|
||||||
|
if abs(y) < x * math.tan(math.pi / 20):
|
||||||
|
return 6
|
||||||
|
else:
|
||||||
|
if y > 0:
|
||||||
|
if y < x * math.tan(3 * math.pi / 20):
|
||||||
|
return 13
|
||||||
|
if y < x * math.tan(5 * math.pi / 20):
|
||||||
|
return 4
|
||||||
|
if y < x * math.tan(7 * math.pi / 20):
|
||||||
|
return 18
|
||||||
|
if y < x * math.tan(9 * math.pi / 20):
|
||||||
|
return 1
|
||||||
|
else:
|
||||||
|
return 20
|
||||||
|
else:
|
||||||
|
if y > x * math.tan(-3 * math.pi / 20):
|
||||||
|
return 10
|
||||||
|
if y > x * math.tan(-5 * math.pi / 20):
|
||||||
|
return 15
|
||||||
|
if y > x * math.tan(-7 * math.pi / 20):
|
||||||
|
return 2
|
||||||
|
if y > x * math.tan(-9 * math.pi / 20):
|
||||||
|
return 17
|
||||||
|
else:
|
||||||
|
return 3
|
||||||
|
else:
|
||||||
|
if abs(y) < x * math.tan(math.pi + math.pi / 20):
|
||||||
|
return 6
|
||||||
|
else:
|
||||||
|
if y > 0:
|
||||||
|
if y < x * math.tan(math.pi + 3 * math.pi / 20):
|
||||||
|
return 14
|
||||||
|
if y < x * math.tan(math.pi + 5 * math.pi / 20):
|
||||||
|
return 9
|
||||||
|
if y < x * math.tan(math.pi + 7 * math.pi / 20):
|
||||||
|
return 12
|
||||||
|
if y < x * math.tan(math.pi + 9 * math.pi / 20):
|
||||||
|
return 5
|
||||||
|
else:
|
||||||
|
return 20
|
||||||
|
else:
|
||||||
|
if y > x * math.tan(math.pi + -3 * math.pi / 20):
|
||||||
|
return 8
|
||||||
|
if y > x * math.tan(math.pi + -5 * math.pi / 20):
|
||||||
|
return 16
|
||||||
|
if y > x * math.tan(math.pi + -7 * math.pi / 20):
|
||||||
|
return 7
|
||||||
|
if y > x * math.tan(math.pi + -9 * math.pi / 20):
|
||||||
|
return 19
|
||||||
|
else:
|
||||||
|
return 3
|
||||||
|
|
||||||
|
print("""Introduza as coordenadas (x, y) do dardo.
|
||||||
|
Representa as posicoes horizontal e vertical respetivamente.
|
||||||
|
Ambas em milimetros.
|
||||||
|
""")
|
||||||
|
|
||||||
|
x = int(input('X: '))
|
||||||
|
y = int(input('Y: '))
|
||||||
|
|
||||||
|
mod = math.sqrt(x ** 2 + y ** 2)
|
||||||
|
|
||||||
|
if mod > 170:
|
||||||
|
print('Fora do alvo.')
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
if mod < 12.7:
|
||||||
|
print('Pontuacao: 50 pontos.')
|
||||||
|
exit(1)
|
||||||
|
elif mod < 32:
|
||||||
|
print('Pontuacao: 25 pontos.')
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
base_point = BasePoint(x, y)
|
||||||
|
|
||||||
|
if mod > 99 and mod < 107:
|
||||||
|
print('Pontuacao: {}pontos.'.format(base_point * 3))
|
||||||
|
exit(1)
|
||||||
|
if mod > 162:
|
||||||
|
print('Pontuacao: {}pontos.'.format(base_point * 2))
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
print('Pontuacao: {}pontos.'.format(base_point))
|
||||||
|
exit(1)
|
|
@ -0,0 +1,14 @@
|
||||||
|
x1 = float(input("number? "))
|
||||||
|
x2 = float(input("number? "))
|
||||||
|
x3 = float(input("number? "))
|
||||||
|
x4 = float(input("number? "))
|
||||||
|
mx = x4
|
||||||
|
|
||||||
|
if x1 > mx:
|
||||||
|
mx = x1
|
||||||
|
if x2 > mx:
|
||||||
|
mx = x2
|
||||||
|
if x3 > mx:
|
||||||
|
mx = x3
|
||||||
|
|
||||||
|
print("Maximum:", mx)
|
|
@ -0,0 +1,6 @@
|
||||||
|
n = int(input('numero? '))
|
||||||
|
|
||||||
|
if n % 2 == 0:
|
||||||
|
print('par')
|
||||||
|
else:
|
||||||
|
print('impar')
|
|
@ -0,0 +1,10 @@
|
||||||
|
tarifario_sec = 0.12 / 60
|
||||||
|
|
||||||
|
duracao = float(input('Introduza a duracao da chamada em segundos: '))
|
||||||
|
|
||||||
|
if duracao < 60:
|
||||||
|
custo = 0.12
|
||||||
|
else:
|
||||||
|
custo = duracao * tarifario_sec
|
||||||
|
|
||||||
|
print('Custo: ', custo)
|
|
@ -0,0 +1,19 @@
|
||||||
|
CTP = float(input('Componente Teorica-pratica: '))
|
||||||
|
CP = float(input('Componente Pratica: '))
|
||||||
|
|
||||||
|
|
||||||
|
NF = round(0.3 * CTP + 0.7 * CP)
|
||||||
|
|
||||||
|
if (CTP < 6.6) or (CP < 6.6):
|
||||||
|
print('Reprovado por nota minima!\n')
|
||||||
|
elif NF >= 10:
|
||||||
|
print('Aprovado com nota {}'.format(NF))
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
ATPR = float(input('Componente Teorica-pratica de recurso: '))
|
||||||
|
ATP = float(input('Componente Pratica de recurso: '))
|
||||||
|
NF = round(0.3 * ATPR + 0.7 * ATP)
|
||||||
|
if NF >= 10:
|
||||||
|
print('Aprovado com nota {}'.format(NF))
|
||||||
|
else:
|
||||||
|
print('Continua reprovado, nota ', NF)
|
|
@ -0,0 +1,26 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# Modifique o programa para indicar a categoria de IMC de acordo com a tabela:
|
||||||
|
# IMC: <18.5 [18.5, 25[ [25, 30[ 30 ou mais
|
||||||
|
# Categoria: Magro Saudável Forte Obeso
|
||||||
|
|
||||||
|
print("Índice de Massa Corporal")
|
||||||
|
|
||||||
|
altura = float(input("Altura (m)? "))
|
||||||
|
peso = float(input("Peso (kg)? "))
|
||||||
|
|
||||||
|
imc = peso / altura**2
|
||||||
|
|
||||||
|
print("IMC:", imc, "kg/m2")
|
||||||
|
|
||||||
|
# Determinar a categoria de IMC:
|
||||||
|
if imc < 18.5:
|
||||||
|
categoria = "Magro"
|
||||||
|
elif imc < 25:
|
||||||
|
categoria = "Saudavel"
|
||||||
|
elif imc < 30:
|
||||||
|
categoria = "Forte"
|
||||||
|
else:
|
||||||
|
categoria = "Obeso"
|
||||||
|
|
||||||
|
print("Categoria:", categoria)
|
|
@ -0,0 +1,27 @@
|
||||||
|
# This program should find the phase of a fictional substance
|
||||||
|
# for given temperature and pressure conditions, but it has several bugs.
|
||||||
|
#
|
||||||
|
# a) Try to run the program with Python3 and see what happens.
|
||||||
|
# There's a syntax error near the end. Fix it.
|
||||||
|
# b) Try again. It'll crash with a runtime error. Find the cause and fix it.
|
||||||
|
# c) There is also a semantic error: for T=300 and P=100,
|
||||||
|
# the phase should be SOLID.
|
||||||
|
# Fix it to agree with the phase diagram. Test in several conditions.
|
||||||
|
# d) Adjust the format string to output the temperature with 1 decimal place
|
||||||
|
# and the pressure with 3.
|
||||||
|
|
||||||
|
print("Kryptonite phase classifier")
|
||||||
|
# Input.
|
||||||
|
T = float(input("Temperature (K)? "))
|
||||||
|
P = float(input("Pressure (kPa)? "))
|
||||||
|
|
||||||
|
# Determine the phase.
|
||||||
|
if (T > 400) and (P > 50):
|
||||||
|
phase = "LIQUID"
|
||||||
|
elif (P > 0.125 * T):
|
||||||
|
phase = "SOLID"
|
||||||
|
else:
|
||||||
|
phase = "GAS"
|
||||||
|
|
||||||
|
# Output.
|
||||||
|
print("At {:.1f} K and {:.3f} kPa, Kryptonite is in the {} phase.\n\n".format(T, P, phase))
|
|
@ -0,0 +1,62 @@
|
||||||
|
""" Exercicio 03.
|
||||||
|
O programa bmi.py serve para calcular o índice de massa corporal, mas está incompleto. O
|
||||||
|
programa inclui três funçoes. Analise o seu funcionamento.
|
||||||
|
|
||||||
|
a. Complete a definiçao da funçao bodyMassIndex para calcular o indice pela razao
|
||||||
|
bmi = weight / height**2. Complete os argumentos na invocacao da funçao, dentro da
|
||||||
|
funçao principal. Teste o programa.
|
||||||
|
|
||||||
|
b. Complete a funçao bmiCategory para devolver uma string com a categoria correspondente
|
||||||
|
ao indice de massa corporal dado. Acrescente uma chamada a esta funçao na funçao
|
||||||
|
principal, para obter o nome da categoria. Volte a testar
|
||||||
|
"""
|
||||||
|
|
||||||
|
# This function computes the body mass index (BMI),
|
||||||
|
# given the height (in meter) and weight (in kg) of a person.
|
||||||
|
def bodyMassIndex(height, weight):
|
||||||
|
# Complete the function definition...
|
||||||
|
bmi = weight / height**2
|
||||||
|
return bmi
|
||||||
|
|
||||||
|
|
||||||
|
# This function returns the BMI category acording to this table:
|
||||||
|
# BMI: <18.5 [18.5, 25[ [25, 30[ 30 or greater
|
||||||
|
# Category: Underweight Normal weight Overweight Obesity
|
||||||
|
def bmiCategory(bmi):
|
||||||
|
assert bmi>0
|
||||||
|
# Complete the function definition...
|
||||||
|
if bmi < 18.5:
|
||||||
|
return 'Underweight'
|
||||||
|
elif bmi < 25:
|
||||||
|
return 'Normal weight'
|
||||||
|
elif bmi < 30:
|
||||||
|
return 'Overweight'
|
||||||
|
else:
|
||||||
|
return 'Obesity'
|
||||||
|
|
||||||
|
|
||||||
|
# This is the main function
|
||||||
|
def main():
|
||||||
|
print("Índice de Massa Corporal")
|
||||||
|
|
||||||
|
altura = float(input("Altura (m)? "))
|
||||||
|
if altura < 0:
|
||||||
|
print("ERRO: altura inválida!")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
peso = float(input("Peso (kg)? "))
|
||||||
|
if peso < 0:
|
||||||
|
print("ERRO: peso inválido!")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
# Complete the function calls...
|
||||||
|
imc = bodyMassIndex(altura, peso)
|
||||||
|
cat = bmiCategory(imc)
|
||||||
|
|
||||||
|
print("BMI: {:.2f} kg/m2".format(imc))
|
||||||
|
print("BMI category:", cat)
|
||||||
|
|
||||||
|
|
||||||
|
# Program starts executing here
|
||||||
|
main()
|
||||||
|
|
|
@ -0,0 +1,89 @@
|
||||||
|
""" Exercicio 09.
|
||||||
|
Analise e execute o programa dates.py. Faça as correçoes indicadas abaixo.
|
||||||
|
|
||||||
|
a. A funçao isLeapYear deveria indicar quando um ano é bissexto, mas esta errada.
|
||||||
|
Corrija-a. Um ano e bissexto se for multiplo de 4, com exceçao dos fins de seculo
|
||||||
|
(multiplos de 100), que so sao bissextos se forem multiplos de 400. Por exemplo:
|
||||||
|
1980, 1984, 2004 foram bissextos; 1800 e 1900 foram anos comuns, mas 2000 foi bissexto.
|
||||||
|
|
||||||
|
b. A funçao monthDays, para determinar o numero de dias de um mes, tambem esta errada.
|
||||||
|
Quando o mes e fevereiro, invoque a funçao anterior para determinar se o ano e
|
||||||
|
bissexto e devolva 29 dias nesse caso.
|
||||||
|
|
||||||
|
c. Corrija a funçao nextDay para devolver o dia seguinte corretamente.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# This function checks if year is a leap year.
|
||||||
|
# It is wrong: 1900 was a common year!
|
||||||
|
from operator import contains
|
||||||
|
|
||||||
|
|
||||||
|
def isLeapYear(year):
|
||||||
|
if year % 100 == 0:
|
||||||
|
return year % 400 == 0
|
||||||
|
return year%4 == 0
|
||||||
|
|
||||||
|
# This function has a semantic error: February in a leap year should return 29!
|
||||||
|
# Correct it.
|
||||||
|
def monthDays(year, month):
|
||||||
|
MONTHDAYS = (0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
|
||||||
|
# This tuple contains the days in each month (on a common year).
|
||||||
|
# For example: MONTHDAYS[3] is the number of days in March.
|
||||||
|
days = MONTHDAYS[month]
|
||||||
|
if isLeapYear(year) and month == 2:
|
||||||
|
days += 1
|
||||||
|
return days
|
||||||
|
|
||||||
|
# This is wrong, too.
|
||||||
|
def nextDay(year, month, day):
|
||||||
|
months31 = (1, 3, 5, 7, 8, 10)
|
||||||
|
months30 = (4, 6, 9, 11)
|
||||||
|
if (month, day) == (12, 31):
|
||||||
|
year += 1
|
||||||
|
month = 1
|
||||||
|
day = 1
|
||||||
|
elif contains(months31, month) and day == 31:
|
||||||
|
month += 1
|
||||||
|
day = 1
|
||||||
|
elif contains(months30, month) and day == 30:
|
||||||
|
month += 1
|
||||||
|
day = 1
|
||||||
|
elif month == 2 and day >= 28:
|
||||||
|
if isLeapYear(year) and day == 29:
|
||||||
|
day = 1
|
||||||
|
month += 1
|
||||||
|
if not isLeapYear(year) and day == 28:
|
||||||
|
day = 1
|
||||||
|
month += 1
|
||||||
|
else:
|
||||||
|
day += 1
|
||||||
|
|
||||||
|
return year, month, day
|
||||||
|
|
||||||
|
|
||||||
|
# This is the main function
|
||||||
|
def main():
|
||||||
|
print("Was", 2017, "a leap year?", isLeapYear(2017)) # False?
|
||||||
|
print("Was", 2016, "a leap year?", isLeapYear(2016)) # True?
|
||||||
|
print("Was", 2000, "a leap year?", isLeapYear(2000)) # True?
|
||||||
|
print("Was", 1900, "a leap year?", isLeapYear(1900)) # False?
|
||||||
|
|
||||||
|
print("January 2017 had", monthDays(2017, 1), "days") # 31?
|
||||||
|
print("February 2017 had", monthDays(2017, 2), "days") # 28?
|
||||||
|
print("February 2016 had", monthDays(2016, 2), "days") # 29?
|
||||||
|
print("February 2000 had", monthDays(2000, 2), "days") # 29?
|
||||||
|
print("February 1900 had", monthDays(1900, 2), "days") # 28?
|
||||||
|
|
||||||
|
y, m, d = nextDay(2017, 1, 30)
|
||||||
|
print(y, m, d) # 2017 1 31 ?
|
||||||
|
y, m, d = nextDay(2017, 1, 31)
|
||||||
|
print(y, m, d) # 2017 2 1 ?
|
||||||
|
y, m, d = nextDay(2017, 2, 28)
|
||||||
|
print(y, m, d) # 2017 3 1 ?
|
||||||
|
y, m, d = nextDay(2016, 2, 29)
|
||||||
|
print(y, m, d) # 2016 3 1 ?
|
||||||
|
y, m, d = nextDay(2017, 12, 31)
|
||||||
|
print(y, m, d) # 2018 1 1 ?
|
||||||
|
|
||||||
|
# call the main function
|
||||||
|
main()
|
|
@ -0,0 +1,55 @@
|
||||||
|
#### Exercicios propostos no [CodeCheck](https://horstmann.com/codecheck/index.html)
|
||||||
|
___
|
||||||
|
## Ex 1.
|
||||||
|
height = 4.5<br />
|
||||||
|
width = 3<br />
|
||||||
|
volume1 = balloonVolume(width, height)<br />
|
||||||
|
print("Original volume: ", volume1)<br />
|
||||||
|
volume2 = balloonVolume(width + 1, height + 1)<br />
|
||||||
|
change = volume2 - volume1<br />
|
||||||
|
print("Change: ", change)<br />
|
||||||
|
change = balloonVolume(width + 2, height + 2) - volume2<br />
|
||||||
|
print("Change: ", change)
|
||||||
|
___
|
||||||
|
## Ex 2.
|
||||||
|
def balloonVolume(width, height):<br />
|
||||||
|
 pi = 3.1415926<br />
|
||||||
|
 a = height / 2<br />
|
||||||
|
 c = width / 2<br />
|
||||||
|
 volume = 4 * pi * a * c * c / 3<br />
|
||||||
|
 return volume
|
||||||
|
___
|
||||||
|
## Ex 3.
|
||||||
|
def hideCharacters(string) :<br />
|
||||||
|
 return "*" * len(string)
|
||||||
|
___
|
||||||
|
## Ex 4.
|
||||||
|
def isEven(n):<br />
|
||||||
|
 if n % 2 == 0:<br />
|
||||||
|
  return True<br />
|
||||||
|
 else:<br />
|
||||||
|
  return False<br />
|
||||||
|
<br />
|
||||||
|
def main() :<br />
|
||||||
|
 page = int(input("Enter page number: "))<br />
|
||||||
|
 if isEven(page) :<br />
|
||||||
|
  print(page)<br />
|
||||||
|
 else :<br />
|
||||||
|
  print("%60d" % page)<br />
|
||||||
|
<br />
|
||||||
|
main()
|
||||||
|
___
|
||||||
|
## Ex 5.
|
||||||
|
def countSpaces(string):<br />
|
||||||
|
 spaces = 0<br />
|
||||||
|
 for char in string:<br />
|
||||||
|
  if char == " ":<br />
|
||||||
|
   spaces += 1<br />
|
||||||
|
 return spaces<br />
|
||||||
|
<br />
|
||||||
|
def main() :<br />
|
||||||
|
 userInput = input("Enter a string: ")<br />
|
||||||
|
 spaces = countSpaces(userInput)<br />
|
||||||
|
 print(spaces)<br />
|
||||||
|
<br />
|
||||||
|
main()
|
|
@ -0,0 +1,31 @@
|
||||||
|
""" Exercicio 05.
|
||||||
|
Defina uma funçao que devolva o maior dos seus dois argumentos. Por exemplo, max2(4, 3)
|
||||||
|
deve devolver 4 e max2(-3, -2) deve devolver -2. Nao pode usar a funçao pre-definida max.
|
||||||
|
Use uma instruçao if ou uma expressao condicional. Teste a funçao com varios conjuntos
|
||||||
|
de argumentos.
|
||||||
|
"""
|
||||||
|
""" Exercicio 06.
|
||||||
|
No mesmo programa, crie uma funçao max3 que devolva o maior dos seus 3 argumentos. Nao
|
||||||
|
pode usar a funçao max, nem instruçoes ou expressoes condicionais. Recorra apenas a
|
||||||
|
funçao max2 que definiu atras. Teste a nova funçao.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def max2(x, y):
|
||||||
|
if x > y:
|
||||||
|
return x
|
||||||
|
else:
|
||||||
|
return y
|
||||||
|
|
||||||
|
def max3(x, y, z):
|
||||||
|
return max2(x, max2(y, z))
|
||||||
|
|
||||||
|
n1 = float(input('Introduza dois valores.\nN1: '))
|
||||||
|
n2 = float(input('N2: '))
|
||||||
|
|
||||||
|
print('\nO maior valor é: ', max2(n1, n2))
|
||||||
|
|
||||||
|
n1 = float(input('\n\nIntroduza tres valores.\nN1: '))
|
||||||
|
n2 = float(input('N2: '))
|
||||||
|
n3 = float(input('N3: '))
|
||||||
|
|
||||||
|
print('\nO maior valor é: ', max3(n1, n2, n3))
|
|
@ -0,0 +1,21 @@
|
||||||
|
""" Exercicio 07.
|
||||||
|
Escreva uma funçao, tax(4), que implemente a seguinte funçao de ramos:
|
||||||
|
tax(r) = {
|
||||||
|
0.1r se r <= 1000
|
||||||
|
0.2r - 100 se 1000 < r <= 2000
|
||||||
|
0.3r - 300 se 2000 < r
|
||||||
|
}
|
||||||
|
Use uma instruçao if-elif-else e evite condiçoes redundantes. Teste a funçao para
|
||||||
|
diversos valores de r e confirme os resultados. Que valores deve testar?
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def tax(r):
|
||||||
|
if r <= 1000:
|
||||||
|
return 0.1 * r
|
||||||
|
if r <= 2000:
|
||||||
|
return 0.2 * r - 100
|
||||||
|
return 0.3 * r - 300
|
||||||
|
|
||||||
|
x = float(input('R? '))
|
||||||
|
print('O valor de tax(r) é: {:.3f}'.format(tax(x)))
|
|
@ -0,0 +1,22 @@
|
||||||
|
""" Exercicio 08.
|
||||||
|
Escreva uma funçao intersects(a1, b1, a2, b2) que devolva True se os intervalos
|
||||||
|
[a1, b1[ e [a2, b2[ se intersectarem e devolva False, caso contrario. Pode admitir que
|
||||||
|
a1 < b1 e a2 < b2.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def intersects(a1, b1, a2, b2):
|
||||||
|
assert a1 < b1
|
||||||
|
assert a2 < b2
|
||||||
|
|
||||||
|
if a1 < b2 and a2 < b1:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
a1 = float(input("a1: "))
|
||||||
|
b1 = float(input("b1: "))
|
||||||
|
a2 = float(input("a2: "))
|
||||||
|
b2 = float(input("b2: "))
|
||||||
|
|
||||||
|
print(intersects(a1, b1, a2, b2))
|
|
@ -0,0 +1,13 @@
|
||||||
|
#### Exercicios propostos no [CodeCheck](https://horstmann.com/codecheck/index.html)
|
||||||
|
___
|
||||||
|
## Ex 10.
|
||||||
|
def hms2sec(h, m, s):<br />
|
||||||
|
 sec = h * 3600 + m * 60 + s
|
||||||
|
 return sec
|
||||||
|
___
|
||||||
|
## Ex 11.
|
||||||
|
def sec2hms(sec):<br />
|
||||||
|
 h = sec // 3600<br />
|
||||||
|
 m = (sec // 60) % 60<br />
|
||||||
|
 s = sec % 60<br />
|
||||||
|
 return h, m, s
|
|
@ -0,0 +1,17 @@
|
||||||
|
""" Exercicio 12.
|
||||||
|
Escreva uma funçao countdown (N) que imprima uma contagem decrescente a partir de um
|
||||||
|
numero positivo N. Note que pode imprimir N e depois chamar countdown (N - 1).
|
||||||
|
Teste a funçao com diversos valores de N.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def main():
|
||||||
|
num = int(input('De onde vai começar o contador? '))
|
||||||
|
countdown(num)
|
||||||
|
|
||||||
|
def countdown(n):
|
||||||
|
assert n > 0
|
||||||
|
print(n)
|
||||||
|
if n > 0:
|
||||||
|
countdown(n - 1)
|
||||||
|
|
||||||
|
main()
|
|
@ -0,0 +1,27 @@
|
||||||
|
""" Exercicio 13.
|
||||||
|
O algoritmo de Euclides serve para determinar o maximo divisor comum de dois numeros
|
||||||
|
naturais. Baseia-se na igualdade seguinte:
|
||||||
|
mdc(a, b) = {
|
||||||
|
b se r = 0
|
||||||
|
mdc(b, r) se r > 0
|
||||||
|
}
|
||||||
|
onde 'r' e o resto da divisao de 'a' por 'b'. Escreva uma funçao para calcular o
|
||||||
|
m.d.c. e teste-a com diversos pares de valores.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def mdc(a, b):
|
||||||
|
assert a > 0
|
||||||
|
assert b > 0
|
||||||
|
r = a % b
|
||||||
|
if r == 0:
|
||||||
|
return b
|
||||||
|
else:
|
||||||
|
return mdc(b, r)
|
||||||
|
|
||||||
|
def main():
|
||||||
|
print('Este programa calcula o maximo divisor comum de dois numeros naturais')
|
||||||
|
n1 = int(input('Numero 1: '))
|
||||||
|
n2 = int(input('Numero 2: '))
|
||||||
|
print('\nMaximo divisor comum de \'{}\' e \'{}\': {}'.format(n1, n2, mdc(n1, n2)))
|
||||||
|
|
||||||
|
main()
|
|
@ -0,0 +1,31 @@
|
||||||
|
""" Exercicio 04.
|
||||||
|
Execute e analise o programa poly.py. Acrescente-lhe uma funçao para calcular o polinomio
|
||||||
|
p(x) = x**2 + 2x + 3 e modifique a funçao main para mostrar os valores de p(1), p(2),
|
||||||
|
p(10) e g(1 + p(3)). Confira os resultados.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
# Esta função implementa g(x) = 8 - x**3
|
||||||
|
def g(x):
|
||||||
|
return 8 - x**3
|
||||||
|
|
||||||
|
# Defina uma função que implemente p(x) = x**2 + 2x + 3
|
||||||
|
def p(x):
|
||||||
|
return x**2 + 2*x + 3
|
||||||
|
|
||||||
|
def main():
|
||||||
|
# Mostra alguns valores da função g:
|
||||||
|
print("g(1) =", g(1))
|
||||||
|
print("g(2) =", g(2))
|
||||||
|
print("g(10) =", g(10))
|
||||||
|
|
||||||
|
# Acrescente instruções para mostrar os valores de
|
||||||
|
# p(1), p(2), p(10) e g(1 + p(3)).
|
||||||
|
print("""p(1) = {}
|
||||||
|
p(2) = {}
|
||||||
|
p(10) = {}
|
||||||
|
g(1 + p(3)) = {}""".format(p(1), p(2), p(10), g(1 + p(3))))
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
|
|
Loading…
Reference in New Issue