变量使用10e表示法?

6

我想知道如何在Python 2.7.9中使用10eX符号与变量一起使用。对于文本,10eX表示(10^X).00000(浮点数)。我想用一些变量代替文本,但是它不起作用。如果可能的话,我应该做什么语法上的改变,还是有其他方法可以实现?谢谢!

T = int(raw_input())
while T:
    N = int(raw_input())
    LIS = map(int,raw_input().split())
    num_lis, num = []*N, []*N
    low = int(10e+(N))
    high = int(10e+(N+1))
    temp, count = 0, 0
    for i in xrange(low,high):
        num_lis = [1]*N
        temp = i
        while temp!=0:
            r = temp%10
            num[high-1-i] = r
            temp=temp/10        
        for p in xrange[1,N]:
            for q in xrange(0,p):
                if num[q]<num[p]:
                    if num_lis[p]<(num_lis[q]+1):
                        num_lis[p]=num_lis[q]+1
            if LIS[p]!=num_lis[p]:
                break
            else:
                count++
    print count
    T-=1

当我运行解释器时,我遇到了一个错误:10e(N):语法无效。


2
请注意,10eX不等于10^X,而是等于10*10^X - Willem Van Onsem
在Python控制台中,10e1表示100,这是合乎逻辑的,因为它采用了工程计数法 - Willem Van Onsem
Python使用**表示指数运算,而不是^,因此您需要使用10**N而不是10e+(N)。在Python中,^表示按位或。 - martineau
哦,对了。我在想1eX。 - user2357112
2个回答

12

10e+4是表示为10 * 10^4的方法,而不是一种运算。您需要使用幂运算符:

low = 10 ** (N+1)
high = 10 ** (N+2)

更不用说当N很大时,使用int(math.pow(10,N))会导致浮点精度不准确。 - Jean-François Fabre

3

10e3 这样的是浮点数文本。你可以将其创建为字符串,然后使用 float() 将其转换为数字(如果你想将该数字转换为整数则可以使用 int(float())):

>>> N = raw_input()
3
>>> float("10e"+N)
10000.0
>>> #compare:
>>> 10e3
10000.0

也许最好使用@Daniel的答案,但上面的内容似乎更接近您试图使用int(10e+(N))做的事情,因为您明确询问依赖于变量的文字。

使用大N进行此操作会导致浮点不准确性。int(10E+30) = 9999999999999999635896294965248 - Jean-François Fabre
我并不是很推荐这样做,但他们问了要如何进行语法上的更改才能够创建具有可变指数的所需形式的文字。答案是:将其构造为字符串。 - John Coleman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接