簡體   English   中英

如何使用while循環從列表中的每個整數中減去最小的數字?

[英]How do I subtract the smallest number from each integer in a list using a while loop?

輸入:

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,但是我不知道如何糾正它。 我嘗試了不同的方法,但是沒有一個起作用。 如何從每個整數中減去最小的數字?

將輸入獲取到列表。 使用min()獲取此列表的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

首先收集所有輸入,然后找到最小值並打印數字。

n = int(input())
numbers = []
while len(numbers) < n:
    integer = int(input())
    numbers.append(integer)
smallest = min(numbers)
for number in numbers:
    print number - smallest
size = int(input())
lst = [int(input()) for _ in range(size)]
m = min(lst)
res = [abs(n - m) for n in lst]

對於像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()的doku並查看內置函數 :不要將那些用作變量的名稱,也不要使用listdictsettuple

嘗試這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM