我正在尝试创建一个长计算计算器(做长除法,加法等),而在长除法部分我试图得到数除以但我不能(如numdiv)< / p>
Ex:在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
NEW
我试过
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: ''
我该如何解决这个问题?
答案 0 :(得分:1)
使用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]
也是如此。