本帖最后由 sunrise085 于 2020-4-17 14:49 编辑
先说一下前面几个输出都是怎么来的。看注释。
- num=input("shuru:")
- list1=num.split(" ")
- print(len(list1)) #那个3,是这里输出的
- for i in list1:
- i=eval(i)
- print(type(i)) #那三个<class 'int'>是这里输出的
复制代码
最后的那个<class 'str'>是调用函数时,第一次for循环那个print(type(lst[j]))输出的。
之后程序就出错了。
出错原因是因为在主程序中你并没有将list1重点 各个元素变化层int类型,调用函数的时候,if lst[j] % i == 0 and j == len(lst) - 1 这一句对str类型的lst[j]进行求余,就出错了
另外,你的程序逻辑问题特别大。根本实现不了求几个数的最大公约数
按照你的思路,在你能看明白的情况下帮你修改了一下
- def gcd(lst):
- i = 1
- while i<=min(lst): #循环的结束条件应该是这几个数的最小值
- for j in range(len(lst)):
- #print(type(lst[j]))
- if lst[j] % i != 0:#lst[j]不能整除i,跳出本层循环,继续下一个数的判断
- i+=1
- break
- else: #都能整除,标记这个数,进行下一个数的判断
- result=i
- i+=1
- return result
- num=input("shuru:")
- list1=num.split(" ")
- print(len(list1))
- for i in range(len(list1)):
- list1[i]=eval(list1[i]) #这里应该将list1的值变为int类型
- print(type(list1[i]))
- k=gcd(list1)
- print(k)
复制代码