宇宙主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

欧基零壹微头条IP归属甄别会员请立即修改密码
查看: 1311|回复: 12

[Windows VPS] 小弟又来请教python入门问题了

[复制链接]
发表于 2020-2-11 23:28:50 | 显示全部楼层 |阅读模式
学编程第五天,现在是在编一个查找完美数的程序,但是不能运行,自己研究半天没找到问题,求大佬帮助
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:39:14 | 显示全部楼层
runoob.com/python/python-tutorial.html  万丈高楼平地起
发表于 2020-2-11 23:42:06 | 显示全部楼层
sel 发表于 2020-2-11 23:40
啊 还真的是 谢谢大佬值点 我再去研究下

上面那条回复更新了一下,你的代码还有其他问题,,,,,,
发表于 2020-2-11 23:36:44 | 显示全部楼层
本帖最后由 夕日 于 2020-2-11 23:43 编辑

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

啊 还真的是 谢谢大佬值点 我再去研究下
 楼主| 发表于 2020-2-11 23:48:37 | 显示全部楼层
夕日 发表于 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
我改成了这样 好像还是有问题
发表于 2020-2-11 23:49:04 | 显示全部楼层
这是你接触的第一门语言么?
如果是第一门语言的话 出错正常, 只要会看错误提示, 善用搜索
还是搞不懂再发帖求问。
 楼主| 发表于 2020-2-11 23:52:05 | 显示全部楼层
yjsx86 发表于 2020-2-11 23:49
这是你接触的第一门语言么?
如果是第一门语言的话 出错正常, 只要会看错误提示, 善用搜索
还是搞不懂再 ...

之前接触过一点c语音 但是有十年没碰过了 我再研究一下
发表于 2020-2-12 00:09:08 | 显示全部楼层
从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
```
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|兜哪儿主机交流论坛

GMT+8, 2024-9-23 15:21 , Processed in 0.067072 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表