通过normalizing_zybook调整列表中的值

问题描述 投票:0回答:7

1.7 LAB:通过标准化调整列表中的值

在分析数据集(例如人体身高或人体体重数据)时,常见的步骤是调整数据。这可以通过标准化为 0 到 1 之间的值或丢弃异常值来完成。

编写一个程序,首先从输入中获取整数列表。输入以一个整数开头,指示后面的整数个数。然后,通过从所有整数中减去最小值来调整列表中的每个整数。

例如:如果输入是:

5
30
50
10
70
65

输出为:

20
40
0
60
55

5表示列表中有5个整数,分别是30、50、10、70和65。列表中的最小值是10,因此程序从列表中的所有整数中减去10。

任何人都可以用Python解决这个问题吗?

这是我的代码。

arr1 = []

input = int()

for i in range(0,input):
    e = int(intput())
    
arr1.append(e)

k = min(arr1)

for i in range(0,val):
    arr1[i] = arr1[i] - k
    
for i in range(0,val):
    print(arr1[i])

这是错误。

Traceback (most recent call last):
  File "main.py", line 8, in <module>
    arr1.append(e)
NameError: name 'e' is not defined
python normalization
7个回答
0
投票

您可以使用列表理解:

input = [5,30,50,10,70,65]
input = input[1:]
output = [i - min(input) for i in input]

print(output)
[20, 40, 0, 60, 55]

0
投票

这就是我解决问题的方法

list = []

values = int(input())

for n in range(values):
    number = float(input())
    list.append(number)

largest = max(list)

for number in list:
    number = number / largest
    print(f'{number:.2f}')

0
投票
def get_minimum_int(nums):
    low = min(nums)
    return low

if __name__ == '__main__':
    num = int(input())
    nums = []
    while num != -1:
        nums.append(num)
        num = int(input())
    l = get_minimum_int(nums)
    for n in nums:
        print(n - l)

0
投票

我不知道你的问题是否得到解答,但我也有同样类型的任务。 我的是: “对于此程序,通过将所有值除以最大值来调整值。输入以一个整数开头,指示后面的浮点值的数量。

输出每个浮点值保留小数点后两位,可以通过以下方式实现: print('{:.2f}'.format(your_value))

例如:如果输入是:

5
30.0
50.0
10.0
100.0
65.0

输出为:

0.30
0.50
0.10
1.00
0.65

5表示列表中有5个浮点值,分别是30.0、50.0、10.0、100.0和65.0。 100.0 是列表中的最大值,因此每个值都除以 100.0。”

这就是我解决我的问题的方法:

x = int(input())
dislist = []


i = 1
while i <= x:
    y = float(input())
    dislist.append(y)
    i += 1

q = max(dislist)


for item in dislist:
    item = item / q
    print('{:.2f}'.format(item))

告诉我你的想法:)


0
投票

我发现你的代码存在一些问题。

input = int()`

input
位于从用户获取输入字符串的函数名称中。
int()
只是返回
0
。您正在将值
0
分配给名为
input
的变量,从而使输入函数不再可访问。

for i in range(0,input):
  e = int(intput())

因为

input
0
,所以这是一个空范围。循环永远不会运行。这很好,因为它不知道
intput
是什么。

因为循环永远不会运行,所以

e
永远不会被定义,这就是为什么你会得到这样的错误。

另一个风格注释:

arr1
是一个
list
,因此使用暗示它是数组的名称会产生误导。

您可能想要类似以下代码调整版本的内容。

n = int(input())

vals = []
for _ in range(0, n):
    e = int(input())
    vals.append(e)

k = min(vals)

for i in range(0, n):
    arr1[i] = -= k
    
for i in range(0, n):
    print(arr1[i])

可以使用列表理解来简化收集输入数字。

vals = [int(input()) for _ in range(0, n)]

0
投票

在分析数据集(例如人体身高或人体体重数据)时,常见的步骤是调整数据。这种调整可以通过标准化为 0 到 1 之间的值或丢弃异常值来完成。

对于此程序,通过将所有值除以最大值来调整值。输入以一个整数开头,指示后面的浮点值的数量。

输出每个浮点值,小数点后两位。

这就是我解决这个问题的方法。

# Get the number of floating points the user wants to use
user_num = int(input())

# Declare num_list to store floating points from the user
num_list = []

# Get floating point numbers from the user and add them to num_list 
for i in range(user_num):
    num_list.append(float(input()))

# Find the largest floating point 
max_num = max(num_list)

# Divide each floating point number in num_list by the max_num and print the result
for num in num_list:
    num_result = num / max_num
    print(f'{num_result:.2f}')

-1
投票

这可能对您的实验室有帮助:

user_int = []

while True:
  user_input = int(input())
  user_int.append(int(user_input))

  if len(user_int) > (int(user_int[0])):
    break

user_int.pop(0)

vals = min(user_int)

for user_vals in user_int:
  my_vals = user_vals - vals
  print(my_vals)
© www.soinside.com 2019 - 2024. All rights reserved.