Gdzie jest błąd?

Polecam Python.

Uruchom sobie Python choćby online https://repl.it/languages/Python3 i wklej print(10000**10000) 10000 do potęgi 10000.

Szukałem odpowiedzi czy to język skryptowy czy programowania.

Ponownie polecam Python. Możesz go używać jako języka skryptowego ale również na inne sposoby,
np są narzędzia załączające wszystkie potrzebne biblioteki i tworzące ze skryptu Python samodzielną aplikację, którą możesz rozpowszechniać i która nie wymaga interpretera Python na komputerze użytkownika. Nawet z obsługą okienek. Są też narzędzia tłumaczące Python na C/C++ a następnie kompilujące klasycznego exe. Niemniej jednak to drugie zastosowanie należy raczej do mało popularnych. https://hackr.io/blog/best-python-compilers

Python może Ci zaoferować wszystko czego szukasz w C/C++ ale niższym kosztem. Możliwe nawet, że nigdy nie będziesz potrzebował tego w czym C/C++ jest najlepszy.

Jeżeli szukasz natomiast czegoś do tworzenia aplikacji z ładnym graficznym interfejsem użytkownika, to strasznie popularne ostatnio zrobiły się rozwiązania typu https://www.electronjs.org/. Żre to pamięci jak dzikie i ma ogromny narzut ale umożliwia szybkie tworzenie ładnych aplikacji okienkowych za pomocą technologii w których robi się strony internetowe, tj HTML/CSS/Javascript. Dlatego problemy z kodowaniem znaków nie występują, przynajmniej nie w takim sensie w jakim się teraz z tym zetknąłeś. No i masz coś takiego jak MsgBox z Visual Basic :wink: eee czyli alert z JavaScript i przeglądarki https://www.w3schools.com/js/js_popup.asp.

Czy jest popularne? Bardzo - VS Code, Discord, Twitch, Microsoft Teams, Skype… https://www.electronjs.org/apps choć równie popularna jest krytyka tego rozwiązania (i nie bez powodu).

Niestety w dzisiejszych czasach nie ma rozwiązania uniwersalnego. W aplikacjach smartfonowych wydawało się że Java wystarczy na długo ale potem zamieszał Kotlin i technologie webowe. Nie ma przerwy, coraz wyraźniej zaznacza się Flutter i zmusza do myślenia…

Każda z technologii ma masę niuansów, przez które trzeba na początku na spokojnie przejść. Dopiero po jakimś czasie jest się zadowolonym ze swojego warsztatu pracy.

Tutejszy TROLL (amator), nie za bardzo poleca Python’a. :grinning:

@wielkipiec ma dobre podejście. Dobrze jest zrozumieć jak rzeczy działają, ponieważ potem będzie się to mściło. Niestety początki programowania sięgają zamierzchłych, niemalże historycznych czasów. Programowanie nie rozwijało się w ten sposób, że za każdym razem zaczynano od zera, tylko “doklejano” kolejne rozszerzenia funkcjonalności. Dzięki temu podstawy takich tematów jak kodowanie znaków są dosyć obszerne https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/

W Python wiele zależy od tego czy to Python 2 czy Python 3. Dwójka musi mieć jawnie zaznaczone, że używasz jakiegoś ciągu znaków z poza ASCII natomiast w trójce każdy ciąg jak np “abcd” czy ‘abcd’ to z automatu Unicode… i to wcale nie koniec tematu związanego z Python i kodowaniem.

To o co mu chodziło z tym : w jaki sposób Python wyświetla Hello World

Ile czasu dzisiaj poświęciłeś? Nie wypadłeś jeszcze z (niewiadomego) fachu? Bo ewidentnie, jak na dłoni, widać, że nauka programowania metodą kopiuj-wklej cię przerasta. Może język programowania za trudny? Zacznij od czegoś pokroju Scratch.

Tutejszy TROLL (amator), nie za bardzo poleca Python’a.

Myślę że poleca, tylko w swoim stylu :wink:

Dla początkujących, bo faktycznie łatwo w nim zacząć, ale to nie jest tak że jest to język dla początkujących i kropka, nic powyżej. Po prostu początkujący się w nim łatwiej odnajdzie niż w C/C++ ale potem może się rozwijać dalej w tym samym Python w kierunku grubych i poważnych zastosowań https://quintagroup.com/cms/python/google

W tym temacie znam tylko niezbędne mi podstawy i nie jestem taki “pro” jak @wielkipiec. Python 3 wyświetla mi na konsoli tekst ze znakami narodowymi bez żadnych problemów więc się na tym nie zastanawiałem. Tak samo Python 2 po odpowiednim zadeklarowaniu łańcucha i nagłówka.

Może chodzi o to, że Python domyślnie nie wypluwa na standardowe wyjście czystego ciągu bajtów, tylko poprzedza to jakimś kodowaniem a dwa, wersja dla Windows potrafi skorzystać z kodowania UTF na konsoli Windows (przełącza konsolę w UTF na czas działania?)


Jak już tak daleko zabrnęło to poproszę Cię @wielkipiec uzupełnienie i wyjaśnienie tematu Python i konsoli. Pozdrawiam.

Posłuchaj cwaniaczku, skoro tak się znasz, to zrób
taki prosty program, jak ja które tu podałem do ściągnięcia
np. “Liczby pierwsze” (dla szkół podstawowych), żeby tak działał, jak mój.
Nieważne gdzie będą wyniki ważne, aby były prawidłowe.
Wtedy możemy pogadać, kogo przerasta. OK?

Myślę, że mam Cię z głowy. :grinning:

Zrobiłem while i działają,
tylko z wyłączeniem trochę dziwnie pracuje.
W przykładach widzę tylko While(i zawsze jakąś liczbę, albo True).
A ja chciałbym, aby okno się wyłączało, gdy nie wpiszę liczby tylko nacisnę return.
próbowałem
while( n != empty ); i while( n != “” );
i to n ie działa.
Może jest brak takiej możliwości, tylko trzeba klikać na krzyżyk w górnym prawym rogu.

Podpowiedź, kontynuuj tylko gdy długość wprowadzonego tekstu jest większa od zera. Jak sprawdzać długość łańcucha tekstowego już wiesz.

#include
using namespace std;

int main() {
int i, n;
do
{
bool isPrime = true;
cout << "Wpisz liczbe: ";
cin >> n;
if (n == 0 || n == 1) {
isPrime = false;
}
else {
for (i = 2; i <= n / 2; ++i) {
if (n % i == 0) {
isPrime = false;
break;
}
}
}
if (isPrime)
cout << n << " to jest liczba pierwsza. ";
else
cout << n << " to nie jest liczba pierwsza. ";
} while( n > 0 );
return 0;
}

tak nie wyłącza okna

while( n < 0 );
a tu, gdy wpiszę np. 15 i zrobię return, to zamiast odpowiedzi okno się natychmiast zamyka.:grinning:

Musiałbyś sprawdzić długość a nie zawartość zmiennej. Ale tak czy inaczej, to nie zadziała. Poradziłem Ci źle bo nie umiem C++ :wink: Chyba typ int w C++ nigdy nie będzie pusty? Jeżeli tak, to musiałbyś czytać do zmiennej typu ‘string’ a potem sprawdzać czy ten łańcuch jest liczbą i

  • jeżeli tak to konwertować string na int i kontynuować obliczenia,
  • jeżeli nie to wyświetlać błąd i prosić o ponowne wprowadzenie
  • jeżeli pusty to przerywać program

Widzisz to są takie niuanse języków programowania, które trzeba znać.
Możesz umówić się, że jakaś cyfra kończy program, np zero, czyli: https://onlinegdb.com/rJ-i-9oNw

Dalej nie będę Ci radził, bo w międzyczasie sam muszę wszystkiego się uczyć i mogę wprowadzić w błąd. Może kiedyś przyjdzie moja kolej na C++, teraz jestem ‘Pythonowcem’ :wink: Polecam https://www.w3schools.com/cpp/default.asp

Dzięki.
Mam dwa do wyboru, który polecasz?

JetBrains PyCharm Pro 2020.2.1

Python 3.8.5

Do Pythona używam PyCharm i bardzo sobie chwalę. Produkty JetBrains są jak dla mnie świetne.

mam plik exampl.py który zawiera

celsius = 37.5
# calculate fahrenheit
fahrenheit = (celsius * 1.8) + 32
print(’%0.1f degree Celsius is equal to %0.1f degree Fahrenheit’ %(celsius,fahrenheit))

Aby go skompilować
zainstalowałem plik: py2exe-0.9.2.2.win-amd64.exe

przeciągnąłem ten plik do okna poniżej

i wyskoczył jakiś błąd. Jak i czym utworzyć plik exampl.exe?

Program w Python uruchamiasz po prostu klikając na plik z rozszerzenie .py czyli np “exampl.py”. Oczywiście w tym przypadku, gdy nie masz na końcu programu czegoś w rodzaju

import os
os.system('pause')

To okno pojawi się na monent i natychmiast zniknie. Nawet nie zdążysz zobaczyć rezultatu.

Druga opcja, możesz uruchomić program w konsoli. Odpalasz cmd i piszesz python nazwaprogamu.py :

c:\Users\Username> python exampl.py
37.5 degree Celsius is equal to 99.5 degree Fahrenheit

Ewentualnie exampl.py poprzedzasz ścieżką dostępu.

Jeżeli napiszesz po prostu python i nacisniesz Enter nie podając żadnego pliku .py jako parametr to uzyskasz konsolę Python, która służy do wpisywania kodu w taki sposób, że każda linijka jest od razu wykonywana. To samo uzyskasz wybierając z menu start Python 3.7 (64-bit). Trochę to przypomina język Basic ze starych komputerów.

C:\Users\Username> python
Python 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 00:42:30) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print("abcd")
abcd
>>> print(1+2+3)
6
>>> exit()
C:\Users\Username>

Powyższe obejmuje jedna z pierwszych stron kursu na w3schools https://www.w3schools.com/python/python_getstarted.asp .

Python w swojej podstawowej formie jest językiem interpretowanym, czyli nie kompiluje się go do .exe, tylko za każdym uruchomieniem kod źródłowy (lub bytecode .pyc - ale to teraz nieistotne) kompilowany jest do postaci zrozumiałej dla procesora i uruchamiany.

Ludzie jednak chcieli mieć możliwość dystrybuowania programów w postaci .exe. Taka czynność jest dosyć problematyczna przy rozbudowanych projektach. Przy prostych jest łatwo. Do konwersji programu do .exe służy np pakiet pyinstaller.

Nie przeraź się, pyinstaller załącza znaczną część Python do pliku .exe ale tak to się dziś robi i jest akceptowalne. Robimy więc .exe. Najpierw instalujesz pyinstaller:

C:\Users\Username> pip install pyinstaller
Collecting pyinstaller
Downloading https://files.pythonhosted.org/packages/82/96/21ba3619647bac2b34b4996b2dbbea8e74a703767ce24192899d9153c058/pyinstaller-4.0.tar.gz (3.5MB)


Successfully installed pyinstaller-4.0 pyinstaller-hooks-contrib-2020.8

Teraz przygotowujesz wersje .exe:

C:\Users\Username> pyinstaller.exe exampl.py
126 INFO: PyInstaller: 4.0
127 INFO: Python: 3.7.6


11224 INFO: Building COLLECT COLLECT-00.toc completed successfully.

Nie przejmuj się WARNING’ami. Swój program znajdziesz w katalogu dist. Jeżeli chcesz go komuś przekazać to musisz przekazać mu cały katalog dista nie tylko plik exe.

Przerób sobie kurs na w3schools https://www.w3schools.com/python/ na spokojnie, jedno proste zadanie dziennie.

Tu ugrzęzłem :grinning:
Sporo mam niejasności.
Jako Username mam Administrator i to też próbowałem

Collecting
Downloading
CMD nie rozpoznaje tego jako polecenie.
Czy te (3.5MB) na końcu też musi być?

Jak powinno wyglądać poleceni, aby to zainstalować?

Ściągnąłem ten plik https://files.pythonhosted.org/packages/82/96/21ba3619647bac2b34b4996b2dbbea8e74a703767ce24192899d9153c058/pyinstaller-4.0.tar.gz i go rozpakowałem.
W nim nie ma pliku instalacyjnego, ani żadnego exe.

W Pythonie prawie nigdy nic nie ściągasz ręcznie. Moduły instalujesz poprzezpip. Po prostu uruchom wiersz poleceń cmd i wpisz w nim
pip install pyinstaller
Cała reszta to jest wynik działania powyższego polecenia.

C:\Users\Username> to jest coś co już ci się pojawia po uruchomieniu cmd. Tego nie wpisujesz. Zamiast username będziesz miał nazwę swojego użytkownika w Windows. Generalnie to wskazuje po prostu w jakim katalogu i na jakim dysku jesteś.

Widzę, że powinieneś zacząć od podstaw związanych z wierszem poleceń. Np https://www.youtube.com/watch?v=gohuR6-wT0Y

Produkcję exe’ków potraktuj jako ciekawostkę, najpierw po prostu naucz się podstaw wiersza poleceń a potem podstaw języka https://www.w3schools.com/python/

Edit: To co wpisujesz zrobiłem w poprzednim poście pochyloną czcionką.

Jasne, masz Python 3.7.7 a pip jest w Python od 3.7.9. W 3.7.7 musiałbyś pip doinstalować ręcznie https://pip.pypa.io/en/stable/installing/

Proponuję odinstaluj Python 3.7.7 i za instaluj najnowszy z linii 3.7 tj 3.7.9 (wersji 3.8 jeszcze nie próbowałem to nie polecam)


[Python 3.7.9 - Aug. 17, 2020] [Windows x86-64 executable installer]

A może być Python 3.8.5?