You shouldn't always set out to make your software fit a design pattern, but if it matches one you use it. In many cases most things you do will have a design pattern that is merely a pattern that was observed from many different software implementations as being common.
For instance if you have a set of classes that all need to be synchronized. Well that works well with the Observer or Publish/Subscribe pattern where one class is the notifier and the other listens for notifications. http://en.wikipedia.org/wiki/Observer_pattern
Or say you want to limit memory use in a game engine then you might create an ObjectPool. http://en.wikipedia.org/wiki/Object_pool
Or maybe you want to simplify a set of objects into a simplr API then use the Facade pattern: http://en.wikipedia.org/wiki/Facade_pattern
Many times just using functional patterns like encapsulation or inheritance are fine. It depends on the problem. In most cases much of what you try to code will be solved in a pattern, but patterns aren't the only way to code. In many cases you start designing or have a need and it becomes a pattern.
Remember patterns originated from observing many types of software problems, it is not the starting point but the reflection of software architecture.
http://en.wikipedia.org/wiki/Design_pattern_(computer_science)
Many samples of patterns at dofactory.com: http://www.dofactory.com/Patterns/Patterns.aspx
Python design patterns: http://video.google.com/videoplay?docid=-3035093035748181693
Forcing design patterns is like forcing OO. It should come naturally from needs in the project at hand.