From 5403e6059649b179fa4c3c904ae9cf303b5177dd Mon Sep 17 00:00:00 2001 From: tiagorg Date: Fri, 21 Oct 2022 16:59:09 +0100 Subject: [PATCH] Added Tp05 CodeCheck exercises --- .../aula05/tp05-codecheck/exercises01/ex01.py | 28 ++++++++++++++ .../aula05/tp05-codecheck/exercises01/ex02.py | 23 ++++++++++++ .../aula05/tp05-codecheck/exercises02/ex01.py | 32 ++++++++++++++++ .../aula05/tp05-codecheck/exercises02/ex02.py | 27 ++++++++++++++ .../aula05/tp05-codecheck/exercises02/ex03.py | 37 +++++++++++++++++++ .../aula05/tp05-codecheck/exercises03/ex01.py | 37 +++++++++++++++++++ .../aula05/tp05-codecheck/exercises03/ex02.py | 26 +++++++++++++ 7 files changed, 210 insertions(+) create mode 100644 1ano/fp/aula05/tp05-codecheck/exercises01/ex01.py create mode 100644 1ano/fp/aula05/tp05-codecheck/exercises01/ex02.py create mode 100644 1ano/fp/aula05/tp05-codecheck/exercises02/ex01.py create mode 100644 1ano/fp/aula05/tp05-codecheck/exercises02/ex02.py create mode 100644 1ano/fp/aula05/tp05-codecheck/exercises02/ex03.py create mode 100644 1ano/fp/aula05/tp05-codecheck/exercises03/ex01.py create mode 100644 1ano/fp/aula05/tp05-codecheck/exercises03/ex02.py diff --git a/1ano/fp/aula05/tp05-codecheck/exercises01/ex01.py b/1ano/fp/aula05/tp05-codecheck/exercises01/ex01.py new file mode 100644 index 0000000..532a410 --- /dev/null +++ b/1ano/fp/aula05/tp05-codecheck/exercises01/ex01.py @@ -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 \ No newline at end of file diff --git a/1ano/fp/aula05/tp05-codecheck/exercises01/ex02.py b/1ano/fp/aula05/tp05-codecheck/exercises01/ex02.py new file mode 100644 index 0000000..d17d940 --- /dev/null +++ b/1ano/fp/aula05/tp05-codecheck/exercises01/ex02.py @@ -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 \ No newline at end of file diff --git a/1ano/fp/aula05/tp05-codecheck/exercises02/ex01.py b/1ano/fp/aula05/tp05-codecheck/exercises02/ex01.py new file mode 100644 index 0000000..26522ff --- /dev/null +++ b/1ano/fp/aula05/tp05-codecheck/exercises02/ex01.py @@ -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 \ No newline at end of file diff --git a/1ano/fp/aula05/tp05-codecheck/exercises02/ex02.py b/1ano/fp/aula05/tp05-codecheck/exercises02/ex02.py new file mode 100644 index 0000000..32c6fdb --- /dev/null +++ b/1ano/fp/aula05/tp05-codecheck/exercises02/ex02.py @@ -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 \ No newline at end of file diff --git a/1ano/fp/aula05/tp05-codecheck/exercises02/ex03.py b/1ano/fp/aula05/tp05-codecheck/exercises02/ex03.py new file mode 100644 index 0000000..d419533 --- /dev/null +++ b/1ano/fp/aula05/tp05-codecheck/exercises02/ex03.py @@ -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 \ No newline at end of file diff --git a/1ano/fp/aula05/tp05-codecheck/exercises03/ex01.py b/1ano/fp/aula05/tp05-codecheck/exercises03/ex01.py new file mode 100644 index 0000000..b636568 --- /dev/null +++ b/1ano/fp/aula05/tp05-codecheck/exercises03/ex01.py @@ -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 \ No newline at end of file diff --git a/1ano/fp/aula05/tp05-codecheck/exercises03/ex02.py b/1ano/fp/aula05/tp05-codecheck/exercises03/ex02.py new file mode 100644 index 0000000..f2550a8 --- /dev/null +++ b/1ano/fp/aula05/tp05-codecheck/exercises03/ex02.py @@ -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 \ No newline at end of file