Python:'int'对象不可订阅(伪随机生成器)

时间:2014-10-14 19:08:54

标签: python

我试图创建中间方形pseaudorandom数字生成器(它基本上接受输入,获取输入中间的数字并对其进行平方,即:1234 - > 23 ^ 2)

这是我的代码,我得到了' int'对象不是第6行的可订阅错误:

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)

我试着把数字的长度从中间切出来。

3 个答案:

答案 0 :(得分:2)

如果您要转身并将其视为字符串,请不要将其转换为数字。或者至少,也要保持字符串。

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

在不知道你的意思的情况下," number in the middle",我只是假设您想要切断第一个和最后一个字符。现在,如果你真的只想要中间数字,或者在偶数长度的情况下只需要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)

我也打印出中间的数字,这样你就可以准确地看到你在做什么。