Think of something that you want to achieve (modelling a polarized ‘Big Bang’ could be a tad ambitious, to begin with) then break it down into the steps needed and learn what code you need for each step and glue it all together.
Start with terminal based apps; you’ll find that GUI based apps use much of the same code, but with GUI objects added, so the fundamentals needed are the same.
For your “something”, it may help if you’re interested in the subject matter, be that Music, Football, Baseball, or whatever.
For some good, if a little dry, tuition, try w3schools
Most folks use PyCharm or VSCode for Python. I’ve been using vim, but am on the way to switching to lunarvim.
Graphics are commonly done with Tk (Tkinter), GTK+ (gobject introspection) or Qt (Pyside).
You’re already off to a good start by finding your way here. If you just read the questions and answers for a couple of years, that should help round out your knowledge fairly quickly. Also, Google skill is very helpful with learning Python - there are questions and answers all over the internet that usually Google can help you find if you hit a snag.
“IDE” type editors provide language support like name completion, help
docs etc. VSCode is quite popular. It does seem visually quite
heavy/cluttered. SublimeText is/was quite popular, and is less cluttered
(and smaller, less resource hungry).
I’m an old school person like Daniel and use vim (a plain text editor
with various bits of support for programming). So my personal
environment is usually an editor (for me, vim) in the left of the screen
and a terminal on the right for running code.
Anything which lets you edit Python files and run them will do.
Just pick an editor. It largely doesn’t matter which until later, when
you start to have opinions here based on what pain points you find with
whatever you chose.
The basic cycle is:
make sure it’s “saved” (that the file itself has been updated)
Maybe start with SublimeText - it is simple and friendly.
The most important skill, IMO, is learning to press escape when you stop
typing input text. That way you’re always either (a) actively entering
text or (b) in “command” mode where keystrokes are editor actions. Less
Unless you’re already familiar with vim, or have a strong and pressing need to operate in text-only environments, I recommend that you enter the 21st century and use a GUI text editor.
vi was a great step forward in 1976 compared to ed, and vim was something of an improvement in 1991, but all the vi clones still suffer from the same flaw. In the words of Bill Joy himself, “fundamentally, vi is still ed inside”. (Not literally, figuratively.)
Obviously if you’re doing all your programming on remote computers over ssh you need an editor with a text based user interface, and even though nano has a much improved UI, the functionality of nano is very limited.
But if you are working locally on a machine with a graphical interface, like nearly everyone, then you should strongly consider using a GUI editor, and that doesn’t just mean Vim running in an xterm.
gedit is very popular. You don’t need to use Gnome for that, it works under xfce desktop as well. Under KDE, you can use kate or kwrite for a more simplified editor.
I am also very fond of jeffed.
Or you might even consider a full Integrated Development Environment (IDE) like PyCharm or Anaconda etc. I find them a bit too opinionated and too visually noisy for my tastes, but maybe I’m just an old dinosaur.
In my totally arrogant opinion:
If you want programmer machismo points, you will certainly get them from using vim, or even more from emacs.
If you need to work remotely, or just prefer an inefficient modal interface that requires much memorisation of cryptic key codes and is confusing to most people, then you should stick with vim.
But if you expect to use a “modern” GUI user interface use a GUI text editor like gedit or Notepad++ on Windows, or perhaps an IDE.
(“Modern” here means “at least as good as what we had in 1984 Macs or 1991 Windows”.)
I the topic of editors/IDEs, I’d recommend (as I think most will do) the one I use: Wing Personal.
I see that it’s on V9.0.2 now, but I’m still on V8. It’s an editor and a IDE in one, with good code highlighting, auto reformatting (to PEP 8, for example) and more features than I have the time to list.
Actually, vi is as old as the hills. Vim is kind of old. But neovim is a newish thing. Neovim is mostly extended in Lua rather than vimscript, which has lead to the proliferation of some pretty cool functionality.
Keep in mind that there are at least two GUI versions of vim, and that even if you’re dealing with strict curses many neovim plugins want you to use a “Nerd Font” to get all sorts of useful glyphs - EG a Python symbol.
I daresay Nerd Fonts are great, even if you don’t intend to use neovim. EG 1 is very distinct from lower case L, and they’re very easy on the eyes. At first I saw installing a Nerd Font as a pointless irritation, but now I’m glad neovim wanted them so much.
Also, vim is perhaps best viewed as an editing language, with largely orthogonal nouns and verbs.