-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmain.py
108 lines (94 loc) · 4.85 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import requests
import sys
import os
def obte_ciutat():
"""Retorna la ciutat que l'usuari ha introduït."""
# Demanem a l'usuari el nom de la ciutat
ciutat = input("🏙️ Introdueix el nom de la ciutat: ")
print(f"\nS'ha triat la ciutat: {ciutat}.\n")
return ciutat
def obte_temperatura(ciutat):
"""Retorna la temperatura que l'usuari ha introduït."""
# Demanem a l'usuari la temperatura
while True:
try:
temperatura = float(input("🌡️ Introdueix la temperatura en aquesta ciutat: "))
print(f"\nLa ciutat {ciutat} podria tenir una temperatura de {temperatura} graus.\n")
return temperatura
except ValueError:
print("\033[91mError: Heu d'introduir un valor numeric\033[0m")
def obtenir_temperatura(ciutat):
"""Retorna la temperatura actual a la ciutat especificada."""
api_key = os.getenv("TOKEN_API")
url = f"http://api.openweathermap.org/data/2.5/weather?q={ciutat}&appid={api_key}&units=metric"
try:
resposta = requests.get(url)
dades = resposta.json()
temperatura = dades["main"]["temp"]
except:
return None
return temperatura
def compara_temperatures(temperatura_real, temperatura_suposada, tolerancia=1, mode="facil"):
"""Calcula la diferència entre la temperatura real i la suposada i comprova si està dins de la tolerància,
mostrant si la diferència és positiva o negativa i afegint emojis per indicar encerts o errors."""
# Calcular la diferència entre les dues temperatures
diferència = temperatura_real - temperatura_suposada # La diferència pot ser positiva o negativa
# Comprovar si les temperatures són exactament iguals
if temperatura_real == temperatura_suposada:
missatge = f"Les temperatures són exactament iguals. Diferència: 0°. 👍"
return True
# Comprovar si la diferència està dins de la tolerància
elif abs(diferència) <= tolerancia:
if diferència > 0:
missatge = f"Les temperatures estan dins de la tolerància. La temperatura real és més alta 👍"
elif diferència < 0:
missatge = f"Les temperatures estan dins de la tolerància. La temperatura real és més baixa 👍"
else:
missatge = f"Les temperatures estan exactament dins de la tolerància. Diferència: 👍"
# Si la diferència no està dins de la tolerància
else:
if diferència > 0:
missatge = f"Les temperatures no estan dins de la tolerància. La temperatura real és més alta 👎"
elif diferència < 0:
missatge = f"Les temperatures no estan dins de la tolerància. La temperatura real és més baixa 👎"
if mode == "facil":
missatge = missatge + f" per {diferència}°."
print(missatge)
def main():
if len(sys.argv) > 1:
if sys.argv[1] == "dificil":
mode = "dificil"
else:
print("Mode erroni: Utilitza facil o dificil")
return
else:
mode = "facil"
ascii_art = """
▗▄▄▖ ▄▄▄ ▄▄▄▄ ▄▄▄▄ ▗▞▀▜▌ ▄▄▄ ▗▞▀▜▌ ▐▌ ▄▄▄ ▄▄▄
▐▌ █ █ █ █ █ █ █ ▝▚▄▟▌█ ▝▚▄▟▌ ▐▌█ █ █
▐▌ ▀▄▄▄▀ █ █ █▄▄▄▀ █ ▗▞▀▜▌▀▄▄▄▀ █
▝▚▄▄▖ █ ▝▚▄▟▌
▀
▗▄▄▄▖▗▄▄▄▖▗▖ ▗▖▗▄▄▖ ▗▄▄▄▖▗▄▄▖ ▗▄▖▗▄▄▄▖▗▖ ▗▖▗▄▄▖ ▗▄▄▄▖ ▗▄▄▖
█ ▐▌ ▐▛▚▞▜▌▐▌ ▐▌▐▌ ▐▌ ▐▌▐▌ ▐▌ █ ▐▌ ▐▌▐▌ ▐▌▐▌ ▐▌
█ ▐▛▀▀▘▐▌ ▐▌▐▛▀▘ ▐▛▀▀▘▐▛▀▚▖▐▛▀▜▌ █ ▐▌ ▐▌▐▛▀▚▖▐▛▀▀▘ ▝▀▚▖
█ ▐▙▄▄▖▐▌ ▐▌▐▌ ▐▙▄▄▖▐▌ ▐▌▐▌ ▐▌ █ ▝▚▄▞▘▐▌ ▐▌▐▙▄▄▖▗▄▄▞▘ v0.1
"""
print(ascii_art)
print(f"Estàs jugant en el mode: {mode}")
ciutat = obte_ciutat()
temperatura = obte_temperatura(ciutat)
while True:
maybe_temperatura_real = obtenir_temperatura(ciutat)
if maybe_temperatura_real is None:
print(f"Ciutat {ciutat} incorrecta")
ciutat = obte_ciutat()
continue
# Estem segurs que la temperatura es un valor valid
temperatura_real = maybe_temperatura_real
if compara_temperatures(temperatura_real, temperatura, mode=mode):
break
else:
temperatura = obte_temperatura(ciutat)
if __name__ == "__main__":
main()