鱼C论坛

 找回密码
 立即注册
查看: 2857|回复: 5

求教!由于一直忙于科研没时间学,Python 新手!

[复制链接]
发表于 2015-9-6 21:56:14 | 显示全部楼层 |阅读模式

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

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

x
##def qiushuixianshu(a,b):
## for i in range(a,b):
##    sid = 0
##    temp = i
##    while temp:
##        sid = sid + (temp%10)**3
##        temp //=10
##    if sid == i :
##        print(i)
##        
##        
def qiushuixianshu(a,b):
    for i in range(a,b):
        for x in range(0,10):
            for y in range(0,10):
                for z in range(0,10):
                    if i == 100*x + 10*y + z and i == x**3+y**3+z**3:
                        print(i)
两个程序都是用来求“水仙数”(abc=a^3+b^3+c^3,例如153=1^3+5^3+3^3),上面程序是看到小甲鱼老师编程后稍微改了一下,下面一个是我自己写了一个,都可以用来求解。
问题:上面一个程序的while是怎么跳出循环的,上面的for内套while循环,是先for循环一次后,进入while循环,然后while循环一直循环直到跳出循环再继续执行for循环,还是怎么个循环顺序?while temp: 中的temp和什么进行逻辑运算,怎么判断temp是True还是False ???
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-9-6 22:31:02 | 显示全部楼层
QQ截图20150906222732.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-6 22:32:18 | 显示全部楼层
还是自己解决算了,不偷懒!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-6 23:24:33 | 显示全部楼层
当temp的值为0时会跳出while循环,while 0相当于while False,布尔值0为false非0为true,楼主可联想C或者C++代码,同样的理解方式。
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;

  4. void qiushuxianshu(int a, int b) {
  5.         for (int i = a; i <= b; ++i) {
  6.                 int temp = i;
  7.                 int sid = 0;
  8.                 while (temp) {
  9.                         sid += pow((temp % 10), 3);
  10.                         temp /= 10;
  11.                 }
  12.                 if (sid == i)
  13.                         cout << i << endl;
  14.         }
  15. }

  16. int main() {
  17.         qiushuxianshu(1, 200);
  18.         return 0;
  19. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-7 08:43:21 | 显示全部楼层
hongchh 发表于 2015-9-6 23:24
当temp的值为0时会跳出while循环,while 0相当于while False,布尔值0为false非0为true,楼主可联想C或者C+ ...

嗯,C ++没学过,暂时也没时间学,由于搞科研,一直用的是Matlab,主要就是编些小程序画图,拟合数值计算之类,顶多simulink模拟仿真下!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-7 09:53:08 | 显示全部楼层
夕阳游龙 发表于 2015-9-7 08:43
嗯,C ++没学过,暂时也没时间学,由于搞科研,一直用的是Matlab,主要就是编些小程序画图,拟合数值计算 ...

好吧,其实就是while 后面的判断条件返回一个布尔值给用来做判断,当布尔值为真时进入循环,假时退出循环。如果直接写数字,比如本题的while temp,这里temp为整型数字,不是布尔值,这里会发生隐式类型转换把temp的值转成一个临时的布尔值交给while循环判断,而布尔值本身也是整型数字,0为false,非0为true,所以这里当temp == 0 时循环就会退出了。如果不习惯这种写法也可以写成 while temp > 0 或者 while temp != 0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-17 11:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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