鱼C论坛

 找回密码
 立即注册
查看: 1937|回复: 2

新手求助贴

[复制链接]
发表于 2020-1-16 16:48:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数


for i in range(100, 1000):
    temp = 0
    while temp <= 10000:
        x = (i//100) ** 3
        y = (i//10) ** 3
        z = (i%10) ** 3
        sum = x + y + z
        temp = temp + 1
    if sum == i:
        print(sum,"是水仙花数")

不抱错也不显示结果
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-1-16 16:51:12 | 显示全部楼层
怎么能写 while temp <= 10000 呢,while 循环完全可以去掉。另外不是 (i//10) ** 3,而是 (i % 100 // 10) ** 3。正确代码:

  1. for i in range(100, 1000):
  2.     x = (i // 100) ** 3
  3.     y = (i % 100 // 10) ** 3
  4.     z = (i % 10) ** 3
  5.     sum = x + y + z
  6.     if sum == i:
  7.         print(sum, "是水仙花数")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-18 08:04:00 | 显示全部楼层
本帖最后由 怂怂 于 2020-1-18 08:10 编辑

我也是新手,哈哈哈哈,刚学两天
我的看法是:你这个代码会在'while temp <=10000:'和'temp=temp+1'之间反复进行。为什么呢?因为你while和if属于“同等的地位”,如果你要把if放在while里面,那么if就要再缩进一下。否则while语句就会一直运行到temp=10001结束,然后再拿sum跟i比较
这是我的看法,哈哈哈哈,不知道对不对


while (guess != secret) and (times > 0):
    temp = input()
    guess = int(temp)
    times = times - 1 # 用户每输入一次,可用机会就-1
    if guess == secret:
        print("我草,你是小甲鱼心里的蛔虫吗?!")
        print("哼,猜中了也没有奖励!")
    else:
        if guess > secret:
            print("哥,大了大了~~~")
        
以上是小甲鱼作业答案的节选,可以看到,if要嵌套在while里面,就必须要缩进
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-21 20:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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