Python无法转换为in

2024-09-27 00:15:03 发布

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

我的全部代码都在下面(我不想错过任何东西)。因为某些原因,我总是得到一个错误,我不能把一个浮点转换成一个整数?在

import math

def getRange(input):
    if (1 <= input < 10):
        return [1,1,9]
    elif (10 <= input < 190):
        return [2,10,99]
    elif (190 <= input < 2890):
        return [3,100,999]
    elif (2890 <= input < 38890):
        return [4,1000,9999]
    elif (38890 <= input < 488890):
        return [5,10000,99999]
    elif (488890 <= input < 5888889):
        return [6,100000,999999]

def getDigit(input):
    workingRange=getRange(input)
    multi_digit_dec = ((input-workingRange[1])/workingRange[0])+workingRange[1]
    multi_digit_float = math.floor((input-workingRange[1])/workingRange[0])+workingRange[1]
    print multi_digit_float
    multi_digit_int = input(multi_digit_float)
    decimal_remainder = multi_digit_int - multi_digit_dec
##    digit_id = decimal_remainder * len(str(multi_digit_int))
##    actual_digit = str(multi_digit_dec)[digit_id]
##    return actual_digit


getDigit(100)

我的错误是:

^{pr2}$

上面更新的代码反映了名为int的变量对输入的更改


Tags: 代码inputreturndef错误mathfloatmulti
3条回答

不要使用int作为变量名(函数getDigit)。在

elif语句的堆栈中,如果首先测试输入数是否小于1,则不需要检查除第一个之外的范围的下限。这将省去elif中的一半措辞,而且,对于这样的测试使用循环更紧凑。例如,下面的代码生成下面显示的输出。在

def getRange(k):
    if k < 1: return None
    e = 1
    for d in [10, 190, 2890, 38890, 488890, 5888889]:
        if k<d:
            return [e, 10**(e-1), 10**e -1]
        e += 1
    return None

for i in range(14):
    print '{:8} {:20}'.format(i * 3**i, getRange(i * 3**i)),
    if i&1: print

输出:

^{pr2}$

问题是您使用了int作为变量名,并且隐藏了built-in function。重命名变量。在

一般来说,熟悉names of the built-in functions,避免这类问题是值得的。在

相关问题 更多 >

    热门问题