Quick fix + guides for ex10 and ex11

This commit is contained in:
TiagoRG 2023-01-19 22:51:53 +00:00
parent 55869ba669
commit 8c77909242
Signed by untrusted user who does not match committer: TiagoRG
GPG Key ID: DFCD48E3F420DB42
2 changed files with 45 additions and 1 deletions

View File

@ -1,3 +1,21 @@
"""
O código abaixo lida com comboios de mercadorias.
Cada comboio é representado por uma lista de vagões e cada vagão é uma lista com o tipo e a quantidade de mercadoria que transporta.
Por exemplo,
t = [['coal', 30], ['rice', 50], ['iron', 5], ['rice', 42], ['coal', 45]]
representa um comboio com 5 vagões: o primeiro vagão tem 30 toneladas de carvão, o segundo tem 50 toneladas de arroz, etc.
Complete a função unload(t, m, q), que deve descarregar do comboio t uma quantidade q de mercadoria de tipo m.
Para isso, deve percorrer os vagões um a um, a partir do último, e descarregar total ou parcialmente os que tiverem a mercadoria pretendida até perfazer a quantidade pedida.
Os vagões totalmente descarregados devem ser retirados do comboio, mas os restantes têm de ficar no comboio pela ordem original.
Se conseguir descarregar toda a quantidade pedida, a função deve devolver zero.
Se não, deve devolver a quantidade que não conseguiu descarregar.
"""
# Se w=['coal', 45], então w[0]='coal' e w[1]=45.
def unload(t, m, q):
for v in t[::-1]:
if v[0] != m:
@ -8,3 +26,23 @@ def unload(t, m, q):
if v[1] == 0:
t.remove(v)
return q
def main():
t = eval(input())
print("t: ", t)
q = unload(t, "rice", 40)
print("unload(t, 'rice', 40) ->", q)
print("t: ", t)
q = unload(t, "coal", 50)
print("unload(t, 'coal', 50) ->", q)
print("t: ", t)
q = unload(t, "iron", 20)
print("unload(t, 'iron', 20) ->", q)
if __name__ == "__main__":
main()

View File

@ -1,4 +1,10 @@
"""
Complete onlyCaps(S) para devolver uma string que contenha apenas as letras maiúsculas da string S.
Por exemplo, onlyCaps("John Fitzgerald Kennedy") deve devolver "JFK".
A solução tem de ser recursiva e não pode usar ciclos.
"""
def onlyCaps(s):
# NOTE: ch.isupper() -> True if ch is uppercase.
return (s if len(s) == 0 or (len(s) == 1 and s.isupper()) else "") if len(s) <= 1 else (s[0] + onlyCaps(s[1:]) if s[0].isupper() else onlyCaps(s[1:]))
return "" if len(s) == 0 else (s[0] + onlyCaps(s[1:]) if s[0].isupper() else onlyCaps(s[1:]))