What is logic?
==============

Logic is the most important for a person starting to discover the world
-----------------------------------------------------------------------

The basic logic is dichotomy, is True or False in human language, or is 0 or 1 in computer language. It is the smallest and simplest classification which human can recognize
and communicate with each other. So learning logic for children and young men is very important, because this is the base of all knowledge, and the base of all religion.

**If you can't judge a thing is right or not, is existed or not, in one certain view point, you don't know the world, as you don't know yourself either.**

Learning Logic by Solving Sudoku
--------------------------------

Learning logic can be a very happy thing if we teach it as a game, and Sudoku is the one. There are several good reasons to study logic by Solving sudoku:

- Its rules are so simple, everybody can know it in 5 minutes, 
- It is so complicated that have more than billions of combinations.
- It can be separated into different difficult levels easily.
    
Learning Logic by Learning Python Programming
---------------------------------------------

Learning a computer language is the nature way to learn logic. Python is a interpreter script language, you can get every resource from https://www.python.org/. 
I recite a period of Python FAQ<https://docs.python.org/3/faq/general.html> about for the beginning programmers:

Q:  
    Is Python a good language for beginning programmers?

A:  
    Yes.
    
    It is still common to start students with a procedural and statically typed language such as Pascal, C, or a subset of C++ or Java. Students may be better served by learning Python as their first language. Python has a very simple and consistent syntax and a large standard library and, most importantly, using Python in a beginning programming course lets students concentrate on important programming skills such as problem decomposition and data type design. With Python, students can be quickly introduced to basic concepts such as loops and procedures. They can probably even work with user-defined objects in their very first course.
    
    For a student who has never programmed before, using a statically typed language seems unnatural. It presents additional complexity that the student must master and slows the pace of the course. The students are trying to learn to think like a computer, decompose problems, design consistent interfaces, and encapsulate data. While learning to use a statically typed language is important in the long term, it is not necessarily the best topic to address in the students' first programming course.

    Many other aspects of Python make it a good first language. Like Java, Python has a large standard library so that students can be assigned programming projects very early in the course that do something. Assignments aren't restricted to the standard four-function calculator and check balancing programs. By using the standard library, students can gain the satisfaction of working on realistic applications as they learn the fundamentals of programming. Using the standard library also teaches students about code reuse. Third-party modules such as PyGame are also helpful in extending the students' reach.

    Python's interactive interpreter enables students to test language features while they're programming. They can keep a window with the interpreter running while they enter their program's source in another window.
    
Features of this Library
------------------------

There are so many sudoku's puzzle games and studying in the world. Some are made for fun, some are for the studying of mathematics,  while this library focus on logic learning.
And the logic mainly is in human view, not in computer science view. So, there are some features in this package:

1. This is mainly for studying logic for human.
2. It is NOT to plan to be a normal programming courses.
3. It is NOT to plan to be a studying of serious mathematics.
4. The methods of solving a sudoku are mainly in a human view, NOT in computer science view.
5. Let people to find their own methods to solve a sudoku, and name these methods in their own way. (This is not in this package, but should be arranged this in the courses.)
6. Let people learning python to implement their own methods.
7. Studying OOP programming to solve a sudoku. OOP method can be treated as human behavior.
