立即注册  找回密码
 立即注册
CeraNetworksBGVM服务器主机交流会员请立即修改密码Sharktech防护
查看: 72|回复: 9

小弟又来请教python入门问题了

[复制链接]

小弟又来请教python入门问题了

[复制链接]

4

主题

14

回帖

66

积分

注册会员

积分
66
sel

4

主题

14

回帖

66

积分

注册会员

积分
66
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
回复

使用道具 举报

20

主题

150

回帖

1090

积分

金牌会员

积分
1090
mfcer

20

主题

150

回帖

1090

积分

金牌会员

积分
1090
2020-2-11 23:39:14 | 显示全部楼层
runoob.com/python/python-tutorial.html  万丈高楼平地起
回复

使用道具 举报

5

主题

201

回帖

527

积分

高级会员

积分
527
夕日

5

主题

201

回帖

527

积分

高级会员

积分
527
2020-2-11 23:42:06 | 显示全部楼层

sel 发表于 2020-2-11 23:40

啊 还真的是 谢谢大佬值点 我再去研究下

上面那条回复更新了一下,你的代码还有其他问题,,,,,,
回复

使用道具 举报

5

主题

201

回帖

527

积分

高级会员

积分
527
夕日

5

主题

201

回帖

527

积分

高级会员

积分
527
2020-2-11 23:40:00 | 显示全部楼层
本帖最后由 夕日 于 2020-2-11 23:43 编辑

range()接受的参数需要是整数,你这能保证i/2+1是整数吗,,,,,,
并且这种东西应该有报错的吧,你都不看的吗?看不懂的话随便复制一下都能搜到一堆教程啊,,,,,,
再问出这种问题的话,我只能说你真的不适合编程(非贬低,纯建议,因为你连最基础的搜索都做不到)


-------------------------
正好打开了vscode,随手复制了跑了一下,我靠你这代码,无语了
第三行 range()需要整数参数
第五行j可能为0,而0不能作为除数
再下面懒得试了,,,,,,
回复

使用道具 举报

120

主题

3836

回帖

9290

积分

论坛元老

积分
9290
cherbim

120

主题

3836

回帖

9290

积分

论坛元老

积分
9290
2020-2-11 23:36:44 | 显示全部楼层
本帖最后由 cherbim 于 2020-2-12 00:14 编辑

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

使用道具 举报

4

主题

14

回帖

66

积分

注册会员

积分
66
sel 楼主

4

主题

14

回帖

66

积分

注册会员

积分
66
2020-2-11 23:36:56 | 显示全部楼层

夕日 发表于 2020-2-11 23:36

range()接受的参数需要是整数,你这能保证i/2+1是整数吗,,,,,,
并且这种东西应该有报错的吧,你都不 ...

啊 还真的是

谢谢大佬值点 我再去研究下
回复

使用道具 举报

4

主题

14

回帖

66

积分

注册会员

积分
66
sel 楼主

4

主题

14

回帖

66

积分

注册会员

积分
66
2020-2-11 23:40:55 | 显示全部楼层

夕日 发表于 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
我改成了这样 好像还是有问题

回复

使用道具 举报

124

主题

279

回帖

1850

积分

金牌会员

积分
1850
yjsx86

124

主题

279

回帖

1850

积分

金牌会员

积分
1850
2020-2-11 23:36:00 | 显示全部楼层
这是你接触的第一门语言么?
如果是第一门语言的话 出错正常, 只要会看错误提示, 善用搜索
还是搞不懂再发帖求问。
回复

使用道具 举报

4

主题

14

回帖

66

积分

注册会员

积分
66
sel 楼主

4

主题

14

回帖

66

积分

注册会员

积分
66
2020-2-11 23:48:37 | 显示全部楼层

yjsx86 发表于 2020-2-11 23:49

这是你接触的第一门语言么?
如果是第一门语言的话 出错正常, 只要会看错误提示, 善用搜索
还是搞不懂再 ...

之前接触过一点c语音 但是有十年没碰过了 我再研究一下

回复

使用道具 举报

0

主题

235

回帖

486

积分

中级会员

积分
486
我是一个大水怪

0

主题

235

回帖

486

积分

中级会员

积分
486
2020-2-11 23:42:00 | 显示全部楼层
从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|小黑屋|HS2V主机综合交流论坛

GMT+8, 2024-11-23 07:21 , Processed in 0.090267 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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