学编程第五天,现在是在编一个查找完美数的程序,但是不能运行,自己研究半天没找到问题,求大佬帮助小弟又来请教python入门问题了
count = int(input())
is_perfect = 0
for i in range(count):
    for j in range(i/2+1):
        if i/j == 0:
            is_perfect += j
        if is_perfect == i:
            print(‘%d ‘ % is_perfect)
            is_perfect = 0

sel 发表于 2020-2-11 23:40
啊 还真的是 谢谢大佬值点 我再去研究下

上面那条回复更新了一下,你的代码还有其他问题,,,,,, runoob.com/python/python-tutorial.html  万丈高楼平地起 本帖最后由 夕日 于 2020-2-11 23:43 编辑

range()接受的参数需要是整数,你这能保证i/2+1是整数吗,,,,,,
并且这种东西应该有报错的吧,你都不看的吗?看不懂的话随便复制一下都能搜到一堆教程啊,,,,,,
再问出这种问题的话,我只能说你真的不适合编程(非贬低,纯建议,因为你连最基础的搜索都做不到)小弟又来请教python入门问题了
————————-
正好打开了vscode,随手复制了跑了一下,我靠你这代码,无语了
第三行 range()需要整数参数
第五行j可能为0,而0不能作为除数
再下面懒得试了,,,,,, 本帖最后由 cherbim 于 2020-2-12 00:14 编辑

贴个错误提示啊
PS:i 和 j 取值从1开始而不是0,i/j不对,不是除以,是求余 %,第二个if缩进有问题,应在第二个for外,最后一行缩进和第二个if应该同等地位

夕日 发表于 2020-2-11 23:36
range()接受的参数需要是整数,你这能保证i/2+1是整数吗,,,,,,
并且这种东西应该有报错的吧,你都不 …

啊 还真的是小弟又来请教python入门问题了 谢谢大佬值点 我再去研究下

夕日 发表于 2020-2-11 23:42
上面那条回复更新了一下,你的代码还有其他问题,,,,,,

count = int(input())
is_perfect = 0
for i in range(count):
    for j in range(1,int(i/2)+1):
        if i%j == 0:
            is_perfect += j
        if is_perfect == i:
            print(‘%d ‘ % is_perfect)
            is_perfect = 0
我改成了这样 好像还是有问题小弟又来请教python入门问题了 这是你接触的第一门语言么?
如果是第一门语言的话 出错正常, 只要会看错误提示, 善用搜索
还是搞不懂再发帖求问。

yjsx86 发表于 2020-2-11 23:49
这是你接触的第一门语言么?
如果是第一门语言的话 出错正常, 只要会看错误提示, 善用搜索
还是搞不懂再 …

之前接触过一点c语音 但是有十年没碰过了 我再研究一下小弟又来请教python入门问题了 从SICP-Python学起吧:
https://github.com/keithnull/TeachYourselfCS-CN/blob/master/TeachYourselfCS-CN.md

不知你从哪里找的教材。求完美数这种需要算法的程序对初学者来讲算很困难吧。初学者应该先把基本概念搞懂。

简单吐槽:
– 知道`/`与`//`的区别吗?
– 知道`/`与`%`的区别吗?
– C风格的print已经过时了,说明这学习材料也基本过时了

最后给个答案:
“`
n = int(input())
sum = 0
for i in range(2,n+1):
    for j in range(1,i):
        if i%j == 0:
            sum += j
    if sum == i:
        print(i)
    sum = 0
“`好热源码网www.haore.net