我有6个变量,每个变量都有unknows数字。因此,如果数字那么大,我想找到主要的数字,然后为自己划分它,而其他数字则只有1或更少的数字。
示例:
a1=85550
b1=-18996
c1=45500
d1=-60000
e1=74666
f1=-35666
在这种情况下,a1是主要的,所以我必须把它除以它自己有1而其余的有0小数一个..
我试过这个但是有些值是0所以它错了。
if abs(a1>b1) and abs(a1>c1) and abs(a1>d1) and abs(a1>e1) and abs(a1>f1):
a11=a1/a1
b11=b1/a1
c11=c1/a1
d11=d1/a1
e11=e1/a1
f11=f1/a1
else:
if abs(b1>a1) and abs(b1>c1) and abs(b1>d1) and abs(b1>e1) and abs(b1>f1):
a11=a1/b1
b11=b1/b1
c11=c1/b1
d11=d1/b1
e11=e1/b1
f11=f1/b1
else:
if abs(c1>a1) and abs(c1>b1) and abs(c1>d1) and abs(c1>e1) and abs(c1>f1):
a11=a1/c1
b11=b1/c1
c11=c1/c1
d11=d1/c1
e11=e1/c1
f11=f1/c1
else:
if abs(d1>a1) and abs(d1>c1) and abs(d1>b1) and abs(d1>e1) and abs(d1>f1):
a11=a1/d1
b11=b1/d1
c11=c1/d1
d11=d1/d1
e11=e1/d1
f11=f1/d1
else:
if abs(e1>a1) and abs(e1>c1) and abs(e1>d1) and abs(e1>b1) and abs(e1>f1):
a11=a1/e1
b11=b1/e1
c11=c1/e1
d11=d1/e1
e11=e1/e1
f11=f1/e1
else:
if abs(f1>a1) and abs(f1>c1) and abs(f1>d1) and abs(f1>e1) and abs(f1>b1):
a11=a1/f1
b11=b1/f1
c11=c1/f1
d11=d1/f1
e11=e1/f1
f11=f1/f1
答案 0 :(得分:3)
将您的值保存在列表中:
values = [a1, b1, c1, d1, e1, f1]
现在任务很简单:
max_value = max(values, key=abs)
values = [v/max_value for v in values]
对于你的输入,那就是:
>>> a1=85550
>>> b1=-18996
>>> c1=45500
>>> d1=-60000
>>> e1=74666
>>> f1=-35666
>>> values = [a1, b1, c1, d1, e1, f1]
>>> max_value = max(values, key=abs)
>>> [v/max_value for v in values]
[1.0, -0.22204558737580363, 0.5318527177089422, -0.701344243132671, 0.8727761542957335, -0.4169023962594974]
这假设您使用的是Python 3;在Python 2中,整数上的/
运算符给出整数输出,因此您要使用:
max_value = float(max(values, key=abs))
只是为了使其中一个操作数成为浮点数。否则,您最终会使用[1, -1, 0, -1, 0, -1]
。
您的其他代码可以使用values
中带有索引的数字:
>>> values[0]
1.0
或者您可以使用序列分配将值分配回原始名称:
>>> a1, b1, c1, d1, e1, f1 = values
>>> b1
-0.22204558737580363
但通常您希望将数据保留在变量名称之外。
答案 1 :(得分:1)
如果要对整数进行除法,python中的/
会给出一个整数(整数)。如果答案不确切,那么它就会向下舍入。所以1/2
为0,而不是0.5。
而不是
a / b
尝试将一个转换为浮动:
a / float(b)
然后你会得到0.5,你会期望它。
您也可以直接将数字写成浮点数。例如,1.0/2
将给出0.5,因为1.0
是浮点数,而不是整数。
(另外,其他人都在谈论使用列表)
答案 2 :(得分:0)
要将两个数字x
和y
分开,请使用/
运算符:
z = x / y
答案 3 :(得分:-3)
将您的值放入列表中。
l = [85550, -18996, 45500, -60000, 74666, -35666]
按相反的顺序对列表进行排序。
l.sort(reverse = True)
然后,map
一个将每个值除以l[0]
或最大已知值的函数。
result = map(lambda x: x / l[0], l)
答案将是列表中的每个值除以整数除以最大值,包括最大值。
[1, 0, 0, -1, -1, -1]
如果不希望进行整数除法,则将x转换为浮点数。
result = map(lambda x: x / l[0], l)
[1.0, 0.8727761542957335, 0.5318527177089422, -0.22204558737580363, -0.4169023962594974, -0.701344243132671]
替代方法:不要对列表进行排序,只需编写映射函数来遍历x / max(l)
。
result = map(lambda x: x / max(l), l)