全球主机交流论坛

标题: 小弟又来请教python入门问题了 [打印本页]

作者: sel    时间: 2020-2-11 23:28
标题: 小弟又来请教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

作者: 夕日    时间: 2020-2-11 23:36
本帖最后由 夕日 于 2020-2-11 23:43 编辑

range()接受的参数需要是整数,你这能保证i/2+1是整数吗,,,,,,
并且这种东西应该有报错的吧,你都不看的吗?看不懂的话随便复制一下都能搜到一堆教程啊,,,,,,
再问出这种问题的话,我只能说你真的不适合编程(非贬低,纯建议,因为你连最基础的搜索都做不到)
-------------------------
正好打开了vscode,随手复制了跑了一下,我靠你这代码,无语了
第三行 range()需要整数参数
第五行j可能为0,而0不能作为除数
再下面懒得试了,,,,,,
作者: cherbim    时间: 2020-2-11 23:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: mfcer    时间: 2020-2-11 23:39
runoob.com/python/python-tutorial.html  万丈高楼平地起
作者: sel    时间: 2020-2-11 23:40
夕日 发表于 2020-2-11 23:36
range()接受的参数需要是整数,你这能保证i/2+1是整数吗,,,,,,
并且这种东西应该有报错的吧,你都不 ...

啊 还真的是 谢谢大佬值点 我再去研究下
作者: 夕日    时间: 2020-2-11 23:42
sel 发表于 2020-2-11 23:40
啊 还真的是 谢谢大佬值点 我再去研究下

上面那条回复更新了一下,你的代码还有其他问题,,,,,,
作者: sel    时间: 2020-2-11 23:48
夕日 发表于 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
我改成了这样 好像还是有问题
作者: yjsx86    时间: 2020-2-11 23:49
这是你接触的第一门语言么?
如果是第一门语言的话 出错正常, 只要会看错误提示, 善用搜索
还是搞不懂再发帖求问。
作者: sel    时间: 2020-2-11 23:52
yjsx86 发表于 2020-2-11 23:49
这是你接触的第一门语言么?
如果是第一门语言的话 出错正常, 只要会看错误提示, 善用搜索
还是搞不懂再 ...

之前接触过一点c语音 但是有十年没碰过了 我再研究一下
作者: 我是一个大水怪    时间: 2020-2-12 00:09
从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
```
作者: sel    时间: 2020-2-12 00:17
我是一个大水怪 发表于 2020-2-12 00:09
从SICP-Python学起吧:
https://github.com/keithnull/TeachYourselfCS-CN/blob/master/TeachYourselfCS-CN ...

谢谢大佬,我是在https://github.com/jackfrued/Python-100-Days/这里学的,刚学到第五天
刚刚自己研究了下现在已经可以运行了,但是效率好像很低,要算很久
count = int(input())
for i in range(count):
    is_perfect = 0
    for j in range(1, i // 2 + 1):
        if i % j == 0:
            is_perfect += j
    if is_perfect != 0 and is_perfect == i:
        print('%d ' % is_perfect, end='')
我这就去看你给的素材
作者: 我是一个大水怪    时间: 2020-2-12 00:40
sel 发表于 2020-2-12 00:17
谢谢大佬,我是在https://github.com/jackfrued/Python-100-Days/这里学的,刚学到第五天
刚刚自己研究了下 ...

我推荐的不一定适合你。但这种100天学python就是新时代的培训班,所有内容建立在灌输而非真正的理解上,任何行业都没有一蹴而就的办法。
作者: sel    时间: 2020-2-12 00:56
我是一个大水怪 发表于 2020-2-12 00:40
我推荐的不一定适合你。但这种100天学python就是新时代的培训班,所有内容建立在灌输而非真正的理解上, ...

我不急着学的,刚才看了下你给的列表,看起来是我需要的,我是真的想系统的学习编程,想编一些靠自己实现想法的程序 大佬方便留个联系方式吗




欢迎光临 全球主机交流论坛 (https://hostloc.gdisk.cf/) Powered by Discuz! X3.4