Wpis z mikrobloga

Robię sobie kurs pythona #100daysofcode, jestem na kolejnym dniu i miałbym parę pytań. Będę wdzięczny za odpowiedzi :)

1) dzisiaj było o konwersji typów danych wejściowych, że można to robić wstawiając int(), str() lub float(). Czy zawsze dane wejściowe to jako że to tekst, to będzie string? Czy da się jakoś od razu wprowadzić inny typ danych niż tekst, czy jednak zawsze trzeba będzie je konwertować jeśli nie mają być tekstem?
Czy jak mamy dane wejściowe różnego rodzaju, to czy przy dużych projektach, od początku oznacza się jak te dane mają być czytane - czy nie robi się tego, pozwala im się swobodnie napływać a potem dopiero jakieś się je "obrabia"? Czy na tym polega właśnie taki proces w analizie danych?

2) Czy praktyką "czystego kodu" (których na ten moment jeszcze nie znam tak naprawdę), będzie to żeby pisać każdą variable z osobna? Chodzi mi o to czy absolutnie dobrym pomysłem od początku, jest wyrabianie w sobie nawyku żeby nie robić obliczeń w locie w jednej linijce - tylko rozpisywać wszystko do każdych poszczególnych variables bo potem może trzeba się będzie gdzieś do jakiejś części funkcji odwołać (a której się nie porozbijało)?

3) Mimo że na pierwszy rzut oka w poniższym kodzie nie będzie różnicy w wyniku, jak przyszłościowo trzeba by na to spojrzeć i zrozumieć, żeby zrozumieć faktyczne różnice w ich zastosowaniu, procesowaniu itp. tych odmiennych sposób zapisu?

age = input("How old are you?")

print("You are, " + age)
print(f"You are, {age}")

Czyli w pierwszym i drugim przypadku, to co dzieje się pod maską - to że age, jako że jest inputem (integerem albo floatem) - staje się stringiem bo traktujemy go jako wpisywany tekst mimo że to liczba ehh xd.

Pierwszy sposób wyświetli stringa z dołączonym stringiem który był wpisany w input
A drugi sposób wyświetli stringa z dołączonym stringiem który był wpisany w input.

Tego zapisu f" (f-string) używa się przecież po to, że jakby chcieć wyświetlić koło siebie stringa i integera/floata, to nie wywali błędu że to dwa rózne typy danych, tylko wszystko konwertuje do stringa, tak?
Więc w tym przypadku, to tak naprawdę nic nie robi, ale chroniłoby program gdyby była jakaś inna operacja arytmetyczna (inna niż przez input, lub ze zmienionym typem danych)? Jakie mogą być tego konsekwencje w bardziej złożonych użyciach?

4) A po skończeniu kursu włączę to sobie dokumentacje tego języka i ją przestudiuje od dechy do dechy bo ja pierdziu xD 2h kursu dziennie robi mi 10h całościowo poświęconego czasu na przerwy w trakcie i myślenie

#programowanie #naukaprogramowania #python #pytanie
  • 6
  • Odpowiedz
@interpenetrate: 1. zawsze to co dostajesz z klawiatury to tekst, musisz to konwertować
2. nie przejmuj sie tym, czysty kod wchodzi w krew powoli
3. f-stringi są po prostu bardziej eleganckie, poza tym również stringi możesz też wtedy formatować
4. nwm na #!$%@? xD lepiej zaglądaj do dokumentacji jak ci jest potrzebna
  • Odpowiedz
@zwei: jakie jest praktyczne zastosowanie zmiany rodzajów typów danych w projektach, gdzie takie coś się wykorzystuje, np. jakiś fajny albo ostatni przypadek gdzie tego używałeś?

// floor division, to jest od razu ustawienie przy dzieleniu wyniku na integrera czyli liczbę całkowitą zamiast na liczbę rzeczywistą jakby wyszło normalnie czyli gdzie wyszedłby float?
A działa to też przy += albo -= gdyby się przekminiało coś z dziesiętnymi, czy to tylko jest
  • Odpowiedz
@interpenetrate: to jest podstawowa operacja. Wykorzystuje się tam, gdzie jest akurat potrzebna. To nie jest jakiś burzliwy wzorzec projektowy ze będziesz się jaral use case'ami.

Floor division jak sama nazwa wskazuje zaokrągla wynik w dół do najbliższego inta.

Nie rozumiem ostatniego pytania
  • Odpowiedz
@interpenetrate:

1. Zależy co masz na myśli przez duży projekt. Program w konsoli? W przypadku takich bardziej profesjonalnych programów konsolowych w pythonie stosuję się biblioteke argparse. Tam można sobie ustalić jakiego typu mają być dane wyjściowe. Jeśli korzystałeś kiedyś z jakiegoś programu w konsoli np. z ffmpg to wiesz o co chodzi, wygląda to mniej węcej tak:

ffmpeg -i input.mp4 -c:v libx264 -c:a aac -strict experimental
  • Odpowiedz
jakie jest praktyczne zastosowanie zmiany rodzajów typów danych w projektach, gdzie takie coś się wykorzystuje, np. jakiś fajny albo ostatni przypadek gdzie tego używałeś?


@interpenetrate: ja podam przykład - w numpy zmieniłem sobie typ danych z 64 bit na 16 bit bo chciałem żeby macierz zajmowała 4x mniej miejsca przy minimalnej utracie dokładności - ale potem się okazało że operacje są o wiele wolniejsze bo widocznie 64 dobrze mu się
  • Odpowiedz