Wpis z mikrobloga

#programowanie #python [TOTALNE PODSTAWY]
Dlaczego po czymś takim w calach

print("Podaj długość w centymetrach")
length = int(input())
metry = length / 100
print(metry)
cal = 0,393700787
cale = length * cal
print(cale)

zwraca mi
Podaj długość w centymetrach
150
1.5
(0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787, 0, 393700787)

>>
  • 9
@sokytsinolop: przeczytaj jeszcze raz co napisałeś, przedstawiony problem nie ma prawa zaistnieć, bo przecinek rozdziela kolejne elementy tuple -> jeśli jest mniej niż 1 element przecinek jest logicznym błędem. Puste tuple tworzy się (najlepiej) używając konstruktora tuple() lub ewentualnie (bardzo nieczytelne) przez pusty tuple literal (). Generalnie w kodzie niemal nigdy nie ma potrzeby tworzyć pustego tuple, bo tuple zwykle oznacza nie homogeniczną listę 0 lub więcej wartości (od tego
@GlenPL: tak wiem, że tuple jest z założenie niezmienne, ale powiedziałem tylko że według mnie zapis
200,10000 jest mniej czytelny niż (200,10000) i wyraziłem swoją że taki nieoczywisty zapis jest wbrew drugiej zasadzie

Explicit is better than implicit.

bo dlaczego pierwszy zapis nie jest tablicą tylko właśnie tuple?
@sokytsinolop: bo struktury niezmienne > struktury zmienne ¯\(ツ)_/¯

Explicit is better than implicit.


@sokytsinolop: niby tak, ale.. tu wszystko jest explicit jeśli wiemy, że tuple literal tworzony jest przez przecinek. Jeśli nie wiemy to tak samo możemy nie wiedzieć, że list literal tworzony jest przez [] ¯\
(ツ)_/¯

Zauważ, że żaden z tych problemów nie ma prawa zaistnieć, jeśli ma się rigcz i używa mypy - wszystkie takie głupie