如何用python划分数字

2024-04-26 04:55:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有6个变量,每个变量都有未知数。所以,由于这里的数字很大,我想找出主要的一个,然后再把它自己除以,其他的,只有一个或更少的数字。

示例:

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

Tags: andifa1absb1f1d1c1
3条回答

python中的/给您一个整数(整数)。如果答案不准确的话,它会被舍入。所以1/2是0,而不是0.5。

而不是

a / b

尝试将一个转换为浮点:

a / float(b)

然后你会得到,比方说,0.5,在你期望的地方。

你也可以直接写一个浮点数。1.0/2将给出0.5,例如,因为1.0是浮点数,而不是整数。

(还有,其他人对使用列表的看法)

把你的价值观列在一个清单上:

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

但通常情况下,您希望将数据保留在变量名之外。

要分割两个数字xy,请使用/运算符:

z = x / y

相关问题 更多 >