I feel like this is an important point and I want to talk a bit about the state of the software and the complexity of getting into it. It may sound Panglossian, but it’s easier now than it ever has been and you should view any learning experiences in your way as opportunities to enhance your skills. First I’ll talk about the easiest way to get started, then I’ll go into excessive detail about why you should be glad to tackle the challenges you face.
The Python terminal that @Aerijo mentioned is an example of a Read-Eval-Print Loop (REPL), which is a program designed for quick calculations or rapid prototyping. By far the fastest way to get started with a new language is to use an online REPL like the one at
https://repl.it/languages/python3. When you learn on that site, you have the incalculably valuable ability to save your code and immediately share it with whomever you’re talking to on a forum like here or StackExchange. It is so good for collaboration, and I use it all the time when I want to develop new functions where I’m not sure exactly how they need to flow since the time to find and fix bugs is much shorter than if you write every new function in your project.
IDLE is good as a dedicated IDE already configured for Python. If you don’t buy any of the argument that follows, go ahead and use IDLE, but I don’t think it’s worth it when an online REPL is faster and more seamless and a language-agnostic editor like Atom has more potential uses.
You’re setting out with the goal of learning Python. That’s laudable, but it should not be your destination. Your destination should be a project that you want to build (if you don’t know what the project is yet or how to make it happen, you should still have a practical objective as the landmark you’re shooting for; perhaps that’s to land a job, but in order to land a job you’ll have to complete personal projects and build a portfolio, so it’s best to start small). The language you’re learning is just a step. You could do the exact same thing in several languages with only minor differences in outcome, and if you keep at this you’ll probably have to diversify. With that in mind, you want to onboard yourself (since you’re following tutorials and looking for editors, I’m guessing you don’t have a course at an educational institution) with an education that is broad enough to develop skills you expect to use in the course of your projects or job search.
If you stick with Atom and learn to make it work for you, you will develop so much knowledge about how computers work that will benefit you in different Python projects. The first is about how programs can communicate with one another through the system shell. Every Atom package that runs your code, and every IDE that has it built in (like Jupyter and IDLE), does exactly the same thing: they invoke the Python interpreter and pass along either your code or the file containing your code (the difference determines whether you need to save before running to see your changes). Here’s one place where you need to be careful: some of these programs bundle an interpreter with them, and sometimes they rely on one you have installed. It’s possible (and likely on some OSes) to have multiple versions that you use, so you have to be aware of when you’re invoking Python 2 versus Python 3. Now, this is some of the complexity you were worrying about, but trust me, once you’ve been looking at them for a few months the version numbers will be meaningful and you should know which ones belong to which projects (it’s unlikely, but possible, that you’ll have to use Python 2).
Using Atom to run your Python code is as easy as opening a command line window and typing
python myfile.py. It requires exactly the same knowledge and skill, in that it first needs for you to install Python on your computer. Once you’ve done that, you have to select a package you want to use. They give you different approaches based on your workflow needs;
script provides a one-click file runner that’s configurable and has settings that satisfy most needs, but isn’t very smart;
termination gives you a terminal with full command line access and the most flexibility; and
process-palette allows you to define complex command strings and bind them to Atom-internal commands that you can then activate from a keybinding or toolbar button. Each of these packages have “competitors” that offer variations on the same themes, but I won’t list all of them. I heavily endorse
process-palette as the most powerful option, which will let you automate just about anything, especially once you learn to write more complex Python scripts (want to scrape text from a web site and drop it in a new tab in Atom ready to be edited?) and add new tools to your repertoire.
You just want to learn Python now, but once you get past the basic instructions and Exercism exercises, you’ll want to learn some of the many tools that are available for data science, machine learning, scaffolding, running web servers, or DIY IoT projects. When you do broaden your horizons, you’ll have to perform the same kind of broad reading about how all of the different things operate that you have to perform when you’re checking out new Atom packages. If you get comfortable with command-line instructions and command-line analogues now, it will be less uncomfortable later when a tool asks you to do some CLI setup. Right now when you don’t know anything is the perfect time to be broad and undiscriminating about what you learn. When you know your way around the basics of the language and want to develop specific skills, you won’t want to spend time and effort on basics that you didn’t learn because they weren’t part of the language you sought to acquire.
Complexity can be your friend. The complexity in using Atom is part of the draw for people like me. If you let it, it will teach you so many things that the tutorials don’t. If you want to make a career out of software development (or even just writing scripts on the side for your main job), that kind of expansive knowledge will be more valuable to you than having a perfect knowledge of the syntax of any one language.