标题:Python 3 代码运行出错,去帮忙解决一下!
只看楼主
SundyZuo
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-12-19
 问题点数:0 回复次数:4 
Python 3 代码运行出错,去帮忙解决一下!
源代码如下:
程序代码:
# coding=utf-8
def divisor(a,b):
    if a==b:
        return a
    else:
        for i  in range(max(a,b)/2+1):
            if a%i==0 and b%i==0:
                return int(i)
def multiple(a,b):
    c=divisor(a,b)
    return a*b/c
news=[]
s=input("请输入你的两个数字,用逗号隔开:")
for i in s.split(","):
    news.append(int(i))
mdivisor=divisor(news[0],news[1])
multiple=multiple(news[0],news[1])
print("最大公约数为:%d,最小公约数为:%d" % (mdivisor,multiple))

运行结果是:
Traceback (most recent call last):
  File "C:/Users/PycharmProjects/untitled/线性方程/练习3.py", line 18, in <module>
    mdivisor=divisor(news[0],news[1])
  File "C:/Users/PycharmProjects/untitled/线性方程/练习3.py", line 8, in divisor
    for i  in range(max(a,b)/2+1):
TypeError: 'float' object cannot be interpreted as an integer
搜索更多相关主题的帖子: Python 运行 出错 for multiple 
2018-12-19 14:51
大爱CATs
Rank: 4
来 自:重庆
等 级:业余侠客
威 望:3
帖 子:108
专家分:250
注 册:2015-1-13
得分:0 
'float' object cannot be interpreted as an integer
很明显 在经历max(a, b) / 2 + 1计算之后 这个数已经变成了浮点类型,range内不能传浮点类型的数据

解决办法:
for i  in range(1, int(max(a,b)/2)+1)


逻辑没有进行修改,看不懂你想实现什么功能,最小公约数?
print(1)

弹指一挥间
2018-12-23 11:58
runfox545
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-12-25
得分:0 
楼上正解,自己做个强制类型转换就可以了

白月黑羽 - Python在线教程
2018-12-25 22:17
cc2017896543
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2019-2-26
得分:0 
回复 楼主 SundyZuo
其实大多数时候 英语还是很重要的,一个float 和 int  看英文就可以知道错误类型 。

[此贴子已经被作者于2019-2-26 10:53编辑过]

2019-02-26 10:52
蒸汽机师
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2019-3-9
得分:0 
回复 4楼 cc2017896543
正解,根据提示确实很清楚了
2019-03-09 21:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-492125-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.597100 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved