вот решение по вашему коду.ваш код прав, что вам не хватало, был случай, когда значение my_list[i]+0.1*i
уже присутствует.то есть, например, когда 20 там, вы увеличиваете его до 20,1 (происходит), но вы пропускаете это, но когда 20,1 там.вы просто проверяете только на 20, а не на 20.1.вот почему 20.1 приходит в вашем решении, а не 20.2.
my_list = [20,20,20,30,20,30,40,50,15,11,20,40,50,15]
my_list.sort()
dup_list = []
for i in range (len(my_list)):
if my_list[i] not in dup_list:
dup_list.append(my_list[i])
else:
j=1
res = True
while res:
val = my_list[i]+j*0.1
if val not in dup_list:
dup_list.append(val)
res = False
j+=1
print(dup_list)
#output [11, 15, 15.1, 20, 20.1, 20.2, 20.3, 20.4, 30, 30.1, 40, 40.1, 50, 50.1]