Quick fix + guides for ex10 and ex11
This commit is contained in:
parent
aab2dc58c9
commit
50e486e795
|
@ -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):
|
def unload(t, m, q):
|
||||||
for v in t[::-1]:
|
for v in t[::-1]:
|
||||||
if v[0] != m:
|
if v[0] != m:
|
||||||
|
@ -8,3 +26,23 @@ def unload(t, m, q):
|
||||||
if v[1] == 0:
|
if v[1] == 0:
|
||||||
t.remove(v)
|
t.remove(v)
|
||||||
return q
|
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()
|
||||||
|
|
|
@ -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):
|
def onlyCaps(s):
|
||||||
# NOTE: ch.isupper() -> True if ch is uppercase.
|
# 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:]))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue