python for i in List不能print出List中所有的值

有没有带佬知道为什么从第二个print开始就只有一个值了a
下面print的也不是最后一个return 哭哭

img

img

img


对您有帮助,请点击我的回答左下角
“采纳该答案”

  因为您在for i in List:语句后用了“return”语句,该语句是函数(类方法实质也是函数)体内语句执行完毕的标志,到她这儿豆不往下执行了,将“return”关键字后的对象返回调用函数的地方。如果函数没有return 语句或return 语句后没有对象,返回“None”,也就是空,什么都没有。

  您的代码命名有问题:1. Python 类名命名应采用“驼峰命名法”,单词首字母大写,不用下划线。2. 变量名不可以与Python 关键字相同(如您的拆分列表变量list与内置函数list()重名,list()函数被变量list覆盖,list()不可用。);Python 变量命名规则为字母开头,一般不用大写字,单词用下划线“_”连接,您第一次拆分多项式的变量List。


  我复刻了您图片中的代码(未修改您的变量命名),修正了变量a、b处的return ,改用了print() 。但您最后一条return 后面是字符串与list 相加,我用join()方法拼接了字符列表。您return 1、return 0那段,算起起来是接收多项式中的常量或x的一次方的,也应该赋值给变量而不可以用return关键字,没太弄明白,没作改动。

#!/usr/bin/nve python
# coding: utf-8

class ProcessDerivative:
    
    def __init__(self, polynomial):
        self.polynomial = polynomial


    def get_first_derivative(self):
        import re
        str1 = self.polynomial
        List = re.split('\+|-', str1)
        print(List)
        result_two = []

        for i in List:
            print(i)
            
            # import re # 不用重复加载re。
            list = re.split('\*|\^', i)

            if len(list) == 1 and int(list[0]) is False:
                return 1
            elif len(list) == 1 and int(list[0]) is True:
                return 0
            elif len(list) == 2: 
                try:
                    int(list[0])
                    return list[0]
                except:
                    a = str(int(list[1])) + '*' + str(int(list[0])) + '^' + str(int(list[1]) - 1)
                    print(a)
            else:
                b = str(int(list[2])*int(list[0])) + '*' + str(list[1]) + '^' + str(int(list[2])-1)
                print(b)

                result_two = list
        return 'The first derivative is: ' + ''.join(result_two) # e.g. The first derviative is: '6*x^2+6*x+5'"


if __name__ == '__main__':
    result = ProcessDerivative('3*x^3+2*x^2')
    print(result.get_first_derivative())

img


        result_two = List[0]
        return 'The first derivative is: ' + result_two # e.g. The first derviative is: '6*x^2+6*x+5'"

img

最最后那条return 语句,您应该是想得到这样子的效果。


对您有帮助,请点击左边
“采纳该答案”

\在字符串里是转义符啊,你把加号给转义了
改成'\\+|-'
或者
r'\+|-',r表示字符串里\不再是转义符