Quick fix + guides for ex10 and ex11
This commit is contained in:
parent
55869ba669
commit
8c77909242
|
@ -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()
|
||||
|
|
|
@ -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:]))
|
||||
|
||||
|
|
Loading…
Reference in New Issue