British Isles—hasn't a [?]
It doesn't violate any special USA grammar rules, but I can't imagine an American saying, "Venus hasn't a moon." An American would say, "Venus doesn't have a moon." If I heard someone say the "hasn't a" version, I would assume that they had learned British English or one of its more recent and closely-related derivatives, not American English. I would understand that the speaker meant that Venus has no moon, and I don't think any other American would be puzzled, either.
I wouldn't say "hasn't a moon". In British English we add "got": "Venus hasn't got a moon".
However, this sounds a bit too much like an everyday situation (I haven't got a bike, I haven't got much time) and I'd be more inclined to use "doesn't have", even though I've never lived in the USA.
PS Maybe in this case I'd be more likely to say "Venus has no moons".