| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 215 人关注过本帖
标题:Python 3 代码运行出错,去帮忙解决一下!
只看楼主 加入收藏
SundyZuo
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-12-19
  问题点数:0  回复次数:2   
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
2018-12-19 14:51
大爱CATs
Rank: 4
来 自:重庆
等 级:业余侠客
威 望:3
帖 子:106
专家分: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







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

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