Hey, first I want to say congrats for this project, I like the concept a lot.
I think for the future projects you can do some things to make your life easier, and make them more polished.
If we look at your code, there is a lot of duplicats for things like object existance, rendering, ...
You can merge everything into some kind of Entity class where you manage lifecycle via a dedicated function/method, this will save you a lot of work, you can then derive this class for all your objects, or at least use a reusable component that you attach to other objects via composition.
I think you will also benefit a lot the use of dictionaries, because you copied/pasted a lot of some pretty close logic of a lot of objects, you can just store the properties you need inside a dictionary for example, and do everything into one bloc of code.
For your scene system, you don't need to have multiple game loops, this will create a lot of duplication, just call watever scene needs to be updated, you can attach to it objects or manage watever you want, but using conditionals will create a lot of duplication again.
You struggled a bit with scope for your project, you can avoid this by having a dedicated game/context class that you pass to everything, you can also implement an event system to uncouple a lot of your logic.
I think your game can benefit a lot from let's say an animated background, ..., but these things will get better the projects you do.
For code structure, look at DaFluffyPotatoe channel, especially his plateformer tutorial, he has some insane ressources.