Re your second question concerning She has put the pudding in the fridge for three hours
(it's much easier for other readers to find past questions and explanation if you start a new thread for each question and give it a specific title) :
No, it doesn't mean a repeated action, and the time phrase does not depend on the the verb. If it were repeated and if the time phrase did refer to the verb, it would be : She has been putting the cake in the oven for three hours.
- clearly an unusual way to cook.
In this use of the present perfect ( ie past event(s) with a present result) there is a contrast in meaning between the simple and continuous. Compare : Present perfect simple : I've cut my finger!
= a single past event with a present result ( = my finger is bleeding) Present perfect continuous :
Someone has been cutting pictures out of this book! = continuous or repeated actions with a present result ( = the book is ruined)
So here the sentence is understood as : She put the cake in the oven and it's cooking at the moment. It must cook for three hours. She has put the cake in the oven
= single past action with present result (= and it's cooking at the moment
) with the meaning of the time phrase being inferred to refer to the length of time of the cooking - not of the action of putting it in the oven.
This is a good example of why, although the present perfect verb form includes reference to a past event, it is actually a present tense - the focus is on what is happening at the moment - even if that is not explicitly stated in the sentence - and the past event is only the incidental cause of the present situation.
See this thread for an analysis of the present perfect simple and continuous : difference btwn been doing/ done?