Prosty kalkulator stopni [problem]

Odpowiedz Nowy wątek
2019-05-05 22:04
0

Dobry wieczór, zrobiłem taki prosty kalkulator stopni temperatur i pod sam koniec napotkałem na problem. Jako że jestem początkujący (bo styczność z pythonem mam dopiero niecały miesiąc) to nie za bardzo wiem jak sobie z tym poradzić. Polega on na tym, że jak wpiszę duże C bądź małe to daną wartość przelicza mi na stopnie Fahrenheita zamiast na Celsjusza, jednak jeśli usunę drugą część warunków (zostawię samo "F", "C" itp.) to problem znika, a zależy mi jednak, żeby zostało jak jest. Rozwiązanie pewnie jest proste, ale będę wdzięczny jeśli mi ktoś pomoże.

print("Prosty przelicznik stopni Celsjusza, Kelwina na Fahrenheita i odwrotnie.")
choice = input("Wpisz jakie stopnie chcesz przeliczyć jeśli Kelwiny to wpisz K, jeśli stopnie Celsjusza wpisz C, jeśli stopnie Fahrenheita wpisz F: ")
# ºF na ºC: [ºC]=([ºF]-32)*5/9
#  ºC na ºF: [ºF]=[ºC]*9/5+32
if choice == "F" or "f":
    number = float(input("Wpisz liczbę stopni: "))
    amount = (number - 32) * 5/9
    print(number, "°F =", round(amount, 2), "°C")
    amount = (number - 32) / 1.8000 + 273.15
    print(number, "°F =", round(amount, 2), "K")
elif choice == "C" or "c":
    number = float(input("Wpisz liczbę stopni: "))
    amount = number * 9/5 + 32
    print(number, "°C =", round(amount, 2), "°F")
    amount = number + 273.15
    print(number, "°C =", round(amount, 2), "K")
#℉ =(K - 273.15)* 1.8 + 32.00
elif choice == "K" or "k":
    number = float(input("Wpisz liczbę stopni: "))
    amount = number + -273.15
    print(number, "K =", round(amount, 2), "°C")
    amount = (number - 273.15) * 1.8 + 32.00
    print(number, "K =", round(amount, 2), "℉")
edytowany 1x, ostatnio: camelopard, 2019-05-05 22:04

Pozostało 580 znaków

2019-05-05 22:08

To nie jest poprawny warunek:

if choice == "F" or "f":

powinno być tak:

if choice == "F" or choice == "f":

a lepiej tak:

if choice in ("F", "f",):

Pozostało 580 znaków

2019-05-05 22:10
0

Pewnie coś w stylu choice == "C" or choice == "c"

Pozostało 580 znaków

2019-05-05 22:13
0

Dziękuję za poprawienie, już wszystko działa :)

Zapraszam do oceny postów, które pomogły w rozwiązaniu problemu. - jackweb 2019-05-05 22:21

Pozostało 580 znaków

2019-05-05 22:26
cmd
0

Polecam zapoznać się z metodą .lower() która każdy stringi ma wbudowaną, masz akurat idealny przypadek by się nauczyć tego ;)

To znaczy? Bo wiem co ta metoda robi, ale jakoś o niej nie pomyślałem. - camelopard 2019-05-05 22:45
jak porównujesz tylko małe litery, to nie musisz przyrównywać sprawdzanego znaku do dużej i małej litery. - Spine 2019-05-05 23:00
Okej dzięki, już ogarnąłem. - camelopard 2019-05-05 23:22

Pozostało 580 znaków

2019-05-06 13:52
1
jackweb napisał(a):

a lepiej tak:

if choice in ("F", "f",):

To powinien być zbiór. Słowami Pike'a: If you've chosen the right data structures [...], the algorithms will almost always be self-evident.

>>> %timeit 'x' in ('a', 'b', 'c', 'd', 'e')
137 ns ± 0.634 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

>>> %timeit 'x' in {'a', 'b', 'c', 'd', 'e'}
34 ns ± 0.187 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

>>> 

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0