Added Tp05 CodeCheck exercises

This commit is contained in:
tiagorg 2022-10-21 16:59:09 +01:00
parent 1694ced5f3
commit d4eccb177f
7 changed files with 210 additions and 0 deletions

View File

@ -0,0 +1,28 @@
# Substitua as reticências, descomente e teste.
# Comboio com carruagens de passageiros:
train = [7, 12, 7, 3, 5, 8, 11, 9]
# Quantos passageiros leva a segunda carruagem?
print(train[1])
# E a penúltima?
print(train[-2])
# Quantas carruagens tem o comboio?
print(len(train))
# Qual o total de passageiros?
print(sum(train))
# Os dias da semana:
week = ['sab', 'dom', 'seg', 'ter', 'qua', 'qui', 'sex']
# Use fatiamento para obter apenas os dias úteis.
print(week[2:])
# E para obter os dias úteis de dois em dois ['seg', 'qua', 'sex']?
print(week[2::2])
# JMR@ua.pt 2021

View File

@ -0,0 +1,23 @@
# Substitua as reticências, descomente e teste.
# Comboio com carruagens de passageiros:
train = [7, 12, 7, 3, 5, 8, 11, 9]
# Acrescente 10 passageiros à quarta carruagem.
train[3] += 10
print(train)
# Retire 3 passageiros da última carruagem.
train[-1] -= 3
print(train)
# Acrescente uma carruagem com 12 passageiros ao fim do comboio.
train.append(12)
print(train)
# Junte as carruagens de train2 ao final de train.
train2 = [4, 6, 5]
train += train2
print(train)
# JMR@ua.pt

View File

@ -0,0 +1,32 @@
# Substitua as reticências pelo valor adequado para obter as respostas pedidas.
# Considere que num comboio de passageiros
# as primeiras N carruagens têm lugares de primeira classe
# enquanto as restantes têm lugares de segunda classe.
# Complete a definição para que passengers(train, n)
# devolva uma lista com dois elementos, [num1, num2], onde:
# num1 = número de passageiros em primeira classe (nas n primeiras carruagens)
# num2 = número de passageiros em segunda classe.
def passengers(train, n):
class1 = train[:n]
class2 = train[n:]
num1 = sum(class1)
num2 = sum(class2)
return [num1, num2]
def test():
train1 = [12, 32, 10, 21]
train2 = [9, 29, 19]
train3 = [14, 34, 24]
print(train1, train2, train3)
print('\nTesting passengers')
print(passengers(train1, 2))
print(passengers(train2, 1))
print(passengers(train3, 0))
# Run tests:
test()
# JMR@ua.pt 2021

View File

@ -0,0 +1,27 @@
# Substitua as reticências pelo valor adequado para obter as respostas pedidas.
# Complete a definição para que transfer1car(t1, t2)
# transfira a última carruagem do comboio t1 para o comboio t2.
# t1 e t2 são listas com os números de passageiros em cada carruagem.
def transfer1car(t1, t2):
t2.append(t1[-1])
t1.remove(t1[-1])
def test():
train1 = [12, 32, 10, 21]
train2 = [9, 29, 19]
train3 = [14, 34, 24]
print(train1, train2, train3)
print("\nTesting transfer1car")
transfer1car(train1, train2)
print(train1, train2, train3)
transfer1car(train3, train2)
print(train1, train2, train3)
transfer1car(train3, train1)
print(train1, train2, train3)
# Run tests:
test()
# JMR@ua.pt 2021

View File

@ -0,0 +1,37 @@
# Substitua as reticências pelo valor adequado para obter as respostas pedidas.
# Complete a função match(t1, t2, g1, g2) para
# registar o resultado de um jogo entre duas equipas de futebol.
# t1 e t2 são listas com [nome, vitórias, empates, derrotas] das duas equipas.
# g1 e g2 são os golos marcados por cada uma delas.
# A função não precisa de devolver um resultado,
# mas tem de alterar os conteúdos de t1 e t2.
def match(t1, t2, g1, g2):
print(t1[0], g1, ':', g2, t2[0])
if g1 > g2:
t1[1] += 1
t2[3] += 1
elif g1 < g2:
t1[3] += 1
t2[1] += 1
else:
t1[2] += 1
t2[2] += 1
def test():
team1 = ["Ajax", 0, 0, 0]
team2 = ["Benfica", 0, 0, 0]
team3 = ["Juventus", 0, 0, 0]
print(team1, team2, team3)
match(team1, team2, 2, 1)
print(team1, team2, team3)
match(team2, team3, 1, 1)
print(team1, team2, team3)
match(team3, team1, 0, 3)
print(team1, team2, team3)
# Run tests:
test()
# JMR@ua.pt 2021

View File

@ -0,0 +1,37 @@
# Substitua as reticências pelo valor adequado para obter as respostas pedidas.
# Complete a definição para que inputDate()
# peça o ano, mês e dia de uma data (números inteiros)
# e os devolva na forma de um tuplo (ano, mês, dia).
def inputDate():
y = int(input("Ano? "))
m = int(input("Mês? "))
d = int(input("Dia? "))
return (y, m, d)
# Complete a definição de forma que inputPerson(msg)
# peça o nome de uma pessoa e a sua data de nascimento
# e devolva esses dados num tuplo com a forma (nome, (ano, mẽs, dia)).
def inputPerson(msg):
print(msg)
name = input("Nome? ")
birth = inputDate()
return (name, birth)
def test():
print("Natal de 2020")
natal = inputDate()
print("natal:", natal)
p1 = inputPerson("Introduza os dados de p1")
print("p1:", p1)
p2 = inputPerson("Introduza os dados de p2")
print("p2:", p2)
older = p1[1] < p2[1]
print("p1 é mais velha que p2:", older)
# Run tests:
test()
# JMR@ua.pt 2021

View File

@ -0,0 +1,26 @@
# Substitua as reticências pelo valor adequado para obter as respostas pedidas.
# Este tuplo define os nomes dos meses em Português:
MESESPT = ("janeiro", "fevereiro", "março", "abril", "maio", "junho",
"julho", "agosto", "setembro", "outubro", "novembro", "dezembro")
# Complete a função para que, dado um tuplo (ano, mes, dia)
# devolva um data por extenso.
# Por exemplo, datePT((1938, 1, 22)) deve devolver "22 de janeiro de 1938".
def datePT(date):
ano, mes, dia = date
s = f"{str(dia)} de {MESESPT[mes-1]} de {ano}"
return s
# Complete a definição para converter uma data no formato "DD/MM/AAAA"
# num tuplo de inteiros com (ano, mês, dia).
# Por exemplo: parseDMY("25/12/2020") deve devolver (2020, 12, 25).
def parseDMY(s):
# Sugestão: use o método split.
parts = s.split('/')
return (int(parts[2]), int(parts[1]), int(parts[0]))
# No CodeCheck estas funções são testadas com argumentos pré-programados.
# Se quiser testar offline, tem de acrescentar as suas intruções de chamada.
# JMR@ua.pt 2021