The correct option is B have learnt
Here, 'have learnt' in present perfect tense is correct because it is used indicate
an action which started in the past and has continued up untill now. Here, variety of people, animals, and plants that 'have learnt' (present perfect) to live under very hot and dry conditions.
'Has learnt' is incorrect because the subject is in plural, not singular. So, verb has to be in plural (have), not singular (has).
'Had learnt' in past perfect is incorrect because it
is used to indicate a completed action of the past that happened before another
event took place.
'Have been learning' in present perfect continuous tense
is incorrect because it is used to indicate an action that started at some
point in the past and may or may not be complete.