python3.6中的类型错误:必须是string not in

2024-06-16 08:37:28 发布

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

我试图做一个程序,可以找到一个确定的积分,但当我运行它时,我得到了一个错误消息,我甚至在搜索了几个网站的答案后,我还是搞不清。这是我的代码:

    class Intagrals:
    def main(self):
        Coefficient = input("Coefficeient: ")
        Exponet = input("Exponet: ")
        X_start = input("X_Start: ")
        X_end = input("X_End: ")
        self.equation_parts(Coefficient,Exponet,X_start,X_end)

        '''
        For main to always run:    if __name__ == '__main__':
                                       main()
        '''
    def equation_parts(self,coefficient,exponet,x_start,x_end): #x_start and x_end are the beggining and end valuse to be set for x in the intagral
        exponet += 1 #adds one to exponet for equation to be solved correctly
        a_over_n_plus_1_x = coefficient/exponet #creates terms before x

    def math_of_intagral(self):
        solve_for_x = self.a_over_n_plus_1_x * self.x_end
        raise_to_power_end_x = solve_for_x ** self.exponet
        if self.x_start != 0:
            solve_for_start_x = self.a_over_n_plus_1_x * self.x_start
            raise_to_power_start_x = solve_for_start_x ** self.exponet
            return raise_to_power_end_x - raise_to_power_start_x
        else:
            return raise_to_power_end_x
intagrals = Intagrals()

然后在我输入一些代码后显示此错误消息:

^{pr2}$

有人能帮忙吗?在


Tags: toselfforinputmaindefstartover
3条回答

您正在从输入中读取Exponet,它始终是一个字符串,当您试图用exponet += 1递增它时,会出现错误。在

您应该修改您的输入以获得一个整数而不是字符串,所以更改这一行

Exponet = input("Exponet: ")

为了这个

^{pr2}$

如果你使用

something = input("Exponet: ")

python总是把它当作字符串。把它转换成整数

^{pr2}$

在这里,当您输入Exponet:2时,Python认为它是一个字符串,但是当您尝试递增时,由于您输入了string,它无法增加整数值。在

无论何时在python中使用^{}函数,它都会返回一个字符串。引用文档(emphasis mine):

The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that.

从文档中可以看到,input()函数将输入转换为字符串并返回它。因此,您不能对它执行+= 1之类的操作,因为它是一个字符串。在

要将字符串转换为int,需要使用int()函数。因此,代码行将是:

Exponet = int(input("Exponet: "))

这将修复您的问题,因为int()函数将字符串转换为int,然后您应该能够对它们执行+=之类的操作。在


旁注:Exponet是一个错误的拼写,它是Exponent(注意额外的n)。在

相关问题 更多 >