Okay, so I reckon you're running into this issue 'cause SymPy isn't recognizing the inputs you're giving it as special values right off the bat. When you feed it 1/2 or 1/1, it just thinks "ah, a decimal number, let me give you a decimal answer." And it doesn't even check whether the decimal you gave it might represent a neat fraction of pi or anything like that.
On the other hand, when you use sqrt(), it's like a flag to SymPy to say "hey, this isn't just any old number, it's a special one!" Because sqrt(1) is more mathematically "complex" than just 1, SymPy pauses to think "wait a minute, I better check if this is a special value before I spew out a decimal answer." And so it recognizes that sqrt(1)/2 and sqrt(1)/1 are really 1/2 and 1/1, and it checks if those are special values (which they are, corresponding to pi/3 and pi/4), and so it gives you the answer in terms of pi.
It's a bit like if I asked you "what's half of 2?" and you said "1," but if I asked you "what's half of the square root of 4?" you might think "wait, square root of 4, that's 2, oh, half of 2 is 1!" It's the same answer, but the way I asked the question made you think about it a little differently.