I would like to have different styles for my posts based on the content of each post

Depending on which ‘types’ you need, you might be looking for the Post Format functionality. It allows you to set posts as standard, quotes, galleries, etc (sort of like Tumblr). To activate it, simply toss this into your theme (probably functions.php):

add_theme_support( 'post-formats', array( 'aside', 'gallery', 'quote' ) );

Then, in your templates, you’ve got some options. You can either use conditionals to go wild in single.php, or you can make PHP files for each post format. Inside single.php, you’d want something like this:

get_template_part( 'content', get_post_format() );

Which will check for the post format and load the appropriate file. That way, a gallery formatted post can easily have something like:

do_shortcode('')

already inserted. The templates will just know when a gallery is being displayed and automatically show images.

Is that what you’re after?