Как вычесть наименьшее число из каждого целого числа в списке, используя цикл while? - PullRequest
0 голосов
/ 03 ноября 2018

ввод:

5
30
50
10
70
65

5 - это число, следующее за числом.

Мой код:

n = int(input())
list = []
i = 0
while len(list) < n:
    integer = int(input())
    list.append(integer)
    i = i + 1
    minList = min(list)
    integers = list[i - 1] - minList
    print(integers)

Полагаю, вычесть наименьшее число из 5 целых чисел.

Правильный вывод: 20 40 0 60 55

Мой вывод: 0 20 0 60 55

Я понимаю, почему мои выходные данные неверны, поскольку наименьшее число составляет 20, пока не введено 10, но я не знаю, как это исправить. Я пробовал разные способы, но ни один из них не работает. Как вычесть наименьшее число из каждого целого числа?

Ответы [ 5 ]

0 голосов
/ 03 ноября 2018

Попробуйте это:

l = list()
for _ in range(int(input())):
    l.append(int(input()))
xmin = min(l)
print(*[x - xmin for x in l])

Выход:

C:\Users\Documents>py test.py
5
30
50
10
70
65
20 40 0 60 55
0 голосов
/ 03 ноября 2018

Это похоже на головоломку по умолчанию для сайтов, таких как Hackerrank ... взять все входные данные, а затем выполнять свои операции на всех входных данных. Не вмешивайтесь в данные, продолжая собирать данные (если это не имеет смысла).

Хороший способ получить все данные:

n = int(input())    # get how many inputs follow

# get n inputs, perform the int() conversion, store as list.
data = list(map(int, (input().strip() for _ in range(n))))

# calculate the min value
min_value = min(data)

# print all reduced values in order each on one line
print( *[x-min_value for x in data], sep = "\n")
# or comma seperated:
print( *[x-min_value for x in data], sep = ",")

Выход:

# print with sep="\n"
20
40
0
60
55

# print with sep=","
20,40,0,60,55

Прочитайте доку для map () , int () , min () и посмотрите на Встроенные функции : do не используйте их как имена для своих переменных, также не используйте list, dict, set, tuple.

0 голосов
/ 03 ноября 2018

Сначала соберите все входные данные, затем найдите минимальное значение и напечатайте числа.

n = int(input())
numbers = []
while len(numbers) < n:
    integer = int(input())
    numbers.append(integer)
smallest = min(numbers)
for number in numbers:
    print number - smallest
0 голосов
/ 03 ноября 2018
size = int(input())
lst = [int(input()) for _ in range(size)]
m = min(lst)
res = [abs(n - m) for n in lst]
0 голосов
/ 03 ноября 2018

Получить входные данные в список. Возьмите минимум этого списка, используя min(), а затем вычтите минимальное значение из каждого из элементов списка:

n = int(input())                  # Read number of numbers
lst = []

for _ in range(n):
    lst.append(int(input()))      # Append to list

min_value = min(lst)              # Take the minimum number
final_lst = [abs(x-min_value) for x in lst]  # Subtract minimum from each number
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...