tpc5 done
This commit is contained in:
parent
2bd5481644
commit
233da9d95f
1 changed files with 53 additions and 14 deletions
65
TPC5/tpc5.py
65
TPC5/tpc5.py
|
@ -3,38 +3,77 @@ import sys
|
||||||
|
|
||||||
moedas_validas = ["1c", "2c", "5c", "10c", "20c", "50c", "1e", "2e"]
|
moedas_validas = ["1c", "2c", "5c", "10c", "20c", "50c", "1e", "2e"]
|
||||||
|
|
||||||
|
|
||||||
def format_saldo(saldo):
|
def format_saldo(saldo):
|
||||||
euros = saldo // 1
|
euros = int(saldo // 1)
|
||||||
cents = (saldo - euros) * 100
|
cents = int((saldo - euros) * 100)
|
||||||
return f"{euros}e{cents}c"
|
return f"{euros}e{cents}c"
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
levantado = False
|
levantado = False
|
||||||
msg = ""
|
|
||||||
saldo = 0
|
saldo = 0
|
||||||
for line in sys.stdin:
|
for line in sys.stdin:
|
||||||
if not levantado and re.match(r"LEVANTAR\s*",line):
|
msg = ""
|
||||||
|
if not levantado and re.match(r"LEVANTAR\s*", line):
|
||||||
levantado = True
|
levantado = True
|
||||||
msg = "Introduza moedas."
|
msg = "Introduza moedas."
|
||||||
elif levantado and re.match(r"MOEDA\s",line):
|
elif levantado and re.match(r"MOEDA\s", line):
|
||||||
moedas = re.findall(r"(\d+)(\w)",line)
|
moedas = re.findall(r"((\d+)(\w))", line)
|
||||||
invalidas = []
|
invalidas = []
|
||||||
for moeda in moedas:
|
for moeda in moedas:
|
||||||
if moeda.group(0) in moedas_validas:
|
if moeda[0] in moedas_validas:
|
||||||
valor = int(moeda.group(1))
|
valor = int(moeda[1])
|
||||||
if moeda.group(2) == "c":
|
if moeda[2] == "c":
|
||||||
valor = valor / 100
|
valor = valor / 100
|
||||||
saldo += valor
|
saldo += valor
|
||||||
else:
|
else:
|
||||||
invalidas.append(moeda.group(0))
|
invalidas.append(moeda[0])
|
||||||
if len(invalidas) > 1:
|
if len(invalidas) > 1:
|
||||||
msg += str(invalidas) + " - moedas invalidas; "
|
msg += str(invalidas) + " - moedas invalidas; "
|
||||||
msg += "saldo = " + format_saldo(saldo)
|
msg += "saldo = " + format_saldo(saldo)
|
||||||
elif
|
elif levantado and line[:2] == "T=":
|
||||||
|
match_num = re.match(r"T=((\d{3})\d+)", line)
|
||||||
|
if match_num:
|
||||||
|
fst_3digits = match_num.group(2)
|
||||||
|
num_len = len(match_num.group(1))
|
||||||
|
if num_len == 9:
|
||||||
|
if fst_3digits == "601" or fst_3digits == "641":
|
||||||
|
msg = "Numero permitido neste telefone. Queira discar novo número!"
|
||||||
|
elif fst_3digits[0] == "2":
|
||||||
|
if saldo >= 0.25:
|
||||||
|
saldo -= 0.25
|
||||||
|
msg = f"saldo = {format_saldo(saldo)}"
|
||||||
|
else:
|
||||||
|
msg = f"Saldo insuficiente {format_saldo(saldo)}! Para chamadas iniciadas por 2, saldo minimo de 25c"
|
||||||
|
elif fst_3digits == "800":
|
||||||
|
msg = f"saldo = {format_saldo(saldo)}"
|
||||||
|
elif fst_3digits == "808":
|
||||||
|
if saldo >= 0.10:
|
||||||
|
saldo -= 0.10
|
||||||
|
msg = f"saldo = {format_saldo(saldo)}"
|
||||||
|
else:
|
||||||
|
msg = f"Saldo insuficiente {format_saldo(saldo)}! Para chamadas iniciadas por 808, saldo minimo de 10c"
|
||||||
|
elif fst_3digits[:2] == "00":
|
||||||
|
if saldo >= 1.5:
|
||||||
|
saldo -= 1.5
|
||||||
|
msg = f"saldo = {format_saldo(saldo)}"
|
||||||
|
else:
|
||||||
|
msg = f"Saldo insuficiente {format_saldo(saldo)}! Para chamadas iniciadas por 00, saldo minimo de 1e50c"
|
||||||
|
else:
|
||||||
|
msg = "Numero invalido!"
|
||||||
|
else:
|
||||||
|
msg = "Numero invalido!"
|
||||||
|
elif levantado and re.match(r"POUSAR\s*", line):
|
||||||
|
levantado = False
|
||||||
|
msg = f"Troco={format_saldo(saldo)}; Volte Sempre!"
|
||||||
|
elif levantado and line == re.match(r"ABORTAR\s*", line):
|
||||||
|
levantado = False
|
||||||
|
msg = f"Operacao abortada; Saldo devolvido={format_saldo(saldo)}"
|
||||||
|
else:
|
||||||
|
msg = "Instrucao incorreta, tente novamente"
|
||||||
print(msg)
|
print(msg)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
Loading…
Reference in a new issue