I have a project idea, but unsure if using Python would be a good idea.
Firstly, I'm a C++ and C# developer with some SQL experience.  My day job is C++.  I have a project idea i'd like to create and was considering developing it in a language I don't know.  Python seems to be popular and has piqued my interests.  I definitely use OOP in programming and I understand Python would work fine with that style.  I could be way off on this, I've only read small bits and pieces about the language.
The project won't be public or anything, just purely something of my own creation do dabble in at home.
So the project would essentially represent a simple game idea I have.  The game would consist roughly these things:

Data structures to hold specific information (would be strongly typed).
A way to output the gamestate for the players.  This is completely up in the air, it can be graphical or text based, I don't really care at this point.
A way to save off game data for the players in something like a database or file system.
A relatively easy way for me to input information and a 'GO' button which processes the changes and obviously creates a new gamestate.
The game would function similar to a board game.

Really nothing out of the ordinary when I look back at that list.  Would this be a fun way to learn Python or should I select another language?
Python seems very suitable to your purposes (e.g., pygame and other popular third party extensions make it easy to achieve nice graphics, and you can also choose curses for structured textual I/O, etc) with the single exception of what you probably mean by "strongly typed".
Python is strongly typed (there is no way you can erroneously use a string for an operation for which an integer is required, and vice versa, for example), but it's dynamic strong typing: each object has a strong type, but names (in the wide sense, including barenames, compound names, items in containers, ...) do not have types -- each name refers to an object, the object has the type, not the name.  You can rebind the name to a different object, and that object may have a different (strong;-) type than whatever object was previously bound to that same name.
Dynamic languages all have this character, even though many go further than Python in "type laxity" ("confusing" strings and numbers, and different kinds of numbers, while Python distinguishes strings from integers from floating-point numbers, for example) -- Python is quite "type-picky"... in the dynamic sense where names, per se, have no types, though;-).
Idea for a small project, should I use Python?