TypeError:字符串索引必须是数字,而不是对象(Python)

2024-05-23 17:42:53 发布

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

我试图创建一个长计算计算器(做长除法,加法等),而在长除法部分,我试图得到要除法的数字,但我不能(如在numdiv中)

例如:在240/12中,我试图找到的数字是24,然后我会有另一个循环,将12相加,找到2(如24/12是2)。你知道吗

这是我的密码:

##############
#number is bigger (or equal) to number 2

number = 19000
operation = '/'
number2 = 12

##############

import math

longer = len(str(number))
shorter = len(str(number2))
if operation == '/':
    print str(number2) + '/' + str(number)
for i in range(longer - 1):
    if int(str(number)[0, i]) >= number2:
        numdiv = int(str(number)[0, i])
for i in range(1, math.trunc(numdiv / number2)):
    if number2 * (i + 1) >= numdiv:
        print (shorter + 1) * ' ' + number * i

错误是从我做的地方的最后5行

if int(str(number)[0, i]) >= number2:

上面说

TypeError: string indices must be numbers, not object

新建

我试过了

if str(number)[:i] >= number2:
        numdiv = str(number)[:i]
for i in range(1, math.trunc(numdiv / number2)):
    if number2 * (i + 1) >= numdiv:
        print (shorter + 1) * ' ' + number * i

在本例中,numdiv试图成为整数,这样做会导致问题:

ValueError: invalid literal for int() with base 10: ''

我该怎么解决这个问题?你知道吗


Tags: innumberforifrange数字mathoperation
1条回答
网友
1楼 · 发布于 2024-05-23 17:42:53

somestring[0, i]中,您试图使用元组索引到字符串中。你知道吗

证明:

>>> class mystr(str):
...     def __getitem__(self, x):
...         print(x, type(x))
... 
>>> f = mystr('foo')
>>> f[0, 1]
((0, 1), <type 'tuple'>)

尝试使用除整数以外的任何东西索引到字符串将给您一个TypeError。你知道吗

如果要从字符串中切到位置i,请使用

str(number)[0:i]

或者只是

str(number)[:i]

同样的道理。你知道吗

相关问题 更多 >