Форум сайта python.su
0
Пытаюсь написать функцию, которая будет возвращать мин. и макс. значения цифр из заданного пользователем числа. Не могу понять почему на числе = 123, минимальное число получается равным 2.
Спасибо
def minmax(M): x=[M[0],M[0]] # задаем минимальное и максимальное значение как первые два элемента массива х for i in range(0,len(M)): # сравниваем каждую цифру со всеми другими цифрами for j in range(0,len(M)): if int(M[i])<int(M[j]) and int(x[1])>int(M[i]): # условие на минимум x.insert(1,int(M[i])) if int(M[i])>int(M[j]) and int(x[0])<int(M[i]): # условие на минимум x.insert(0,int(M[i])) print("minimum=",x[1]) print("maximum=",x[0]) return minmax(input("enter a number"))
Отредактировано rover233 (Сен. 10, 2017 22:05:52)
Офлайн
73
def minmax(m): m = [ int(i) for i in list(m)] # m = list(map(int,list(m))) # return (min(m), max(m)) на этом можно закончить min_m,max_m = m[0],m[0] for i in m: if i <min_m: min_m = i if i >max_m : max_m = i return(min_m, max_m) min_,max_ = minmax(input("enter a number ")) print(min_,max_ )
Офлайн
0
marvellikСпасибо за версию, она, конечно, быстрее и лаконичнее, но я пытаюсь понять в чем у меня ошибка.
Офлайн
294
rover233Это пому что вы делаете зачемто insert. А накой ляд вы insert делаете? когда вы делаете insert все остальные элементы списка сдвигаются. В итоге у вас например х = (2,1). в последнем прохождении цикла находиться 3 котороая больше 2. Вы делаете инсерт(0), тройка занимает нулевой индекс, двойка соотвевенно 1, единица - 2. На выходе х = (3,2,1).
но я пытаюсь понять в чем у меня ошибка.
[code python][/code]
Отредактировано PEHDOM (Сен. 10, 2017 22:58:35)
Офлайн