Python:';int';对象不可下标(伪随机生成器) 我尝试创建中间平方伪随机数生成器(它基本上是一个输入,在输入的中间得到数字并将其平方,即:1234~23 ^ 2)< /P>

Python:';int';对象不可下标(伪随机生成器) 我尝试创建中间平方伪随机数生成器(它基本上是一个输入,在输入的中间得到数字并将其平方,即:1234~23 ^ 2)< /P>,python,Python,这是我的代码,第6行出现“int”对象不可下标错误: middle = 0 def get_middle(): x = 1 y = int(input('type a number: ')) middle = str(y[x:y-2]) return middle get_middle() result = middle * middle print(result) 我试着从中间切掉数字的长度。如果你想把它当作一个字符串,不要把它变成一个数字。或者至少,把绳

这是我的代码,第6行出现“int”对象不可下标错误:

middle = 0

def get_middle():
    x = 1
    y = int(input('type a number: '))
    middle = str(y[x:y-2])
    return middle

get_middle()
result = middle * middle
print(result)

我试着从中间切掉数字的长度。

如果你想把它当作一个字符串,不要把它变成一个数字。或者至少,把绳子也绕着

strval = input('type a number: ')
intval = int(strval)
middle = strval[x:intval-2]
return int(middle)

使用
y
作为切片的
str
和减法的
int
,应该使用两个单独的变量

x = 1
val = input('type a number: ')
y = int(val)
middle = val[x:y-2])

如果不知道中间的“
数字”是什么意思,我就假设您要删除第一个和最后一个字符。现在,如果你真的只需要中间的数字,或者在偶数长度的情况下是两个数字,它看起来更像第二个函数

def get_middle(input_string):
    middle = input_string[1:-1]
    return int(middle)

def get_very_middle(input_string):
    if len(input_string) % 2 == 0:
        index = int(len(input_string) // 2)
    else:
        index = int(len(input_string) // 2) + 1
    middle = input_string[index-1:-(index-1)]
    return int(middle)

y = "0"
while len(y) < 3:
    y = input('type a number, with more than 3 digits: ')
    inty = int(y)


middle = get_middle(y)
print(middle)
result = middle * middle
print(result)
print("The very middle:")
middle = get_very_middle(y)
print(middle)
result = middle * middle
print(result)
def get_middle(输入字符串):
中间=输入字符串[1:-1]
返回整数(中间)
def get_very_middle(输入字符串):
如果len(输入字符串)%2==0:
index=int(len(输入字符串)//2)
其他:
index=int(len(输入字符串)//2)+1
中间=输入字符串[索引-1:-(索引-1)]
返回整数(中间)
y=“0”
而len(y)<3:
y=输入('键入一个数字,超过3位:')
inty=int(y)
中间=获得中间(y)
印刷品(中)
结果=中间*中间
打印(结果)
打印(“最中间:”)
中间=非常中间(y)
印刷品(中)
结果=中间*中间
打印(结果)

我也打印出中间的数字,这样您就可以准确地看到您正在平方的内容。

您能定义中间的数字吗?
?为什么要将x硬编码为1?如果这个数字有6位数呢?你似乎只是从第一个数字到最后一个第二个数字。他总是想忽略第一个字符,但很明显,数字1本身就可以做到。而且,y-2可能不是你想要的。在您的示例中,y-2=1232。我不知道那有什么用。