c/c++语言开发共享表达式中的变量赋值

这是我的代码,用于在低于10,000,000的fibonnacci序列中生成值。

3 fibs = [1,1] 4 while((x = fibs[-1] + fibs[-2]) <= 10000000): 5 fibs.append(x) 

我试图在while循环的条件下进行x样式的C赋值。 不幸的是,python告诉我这是一个语法错误。 什么是最简单的解决方案?

    在Python中,赋值不是表达式,因此没有值。

    最简单的解决方案是在循环的第一部分进行赋值:

     fibs=[1,1] while fibs[-1] <= 10000000: fibs.append(fibs[-1] + fibs[-2]) 

    基本上:

     fibs = [1] x = 1 while(x <= 10000000): fibs.append(x) # It is not possible for "fibs" not to have # at least two elements by now x = fibs[-1] + fibs[-2] 

    (实际上,它是Python的设计目标之一,以避免混合表达式和C语言的分配 - 这就是为什么没有x++x-- ,这也是一个半常见问题解答。)

    不允许在Python表达式中赋值的原因是由此构造引起的其他语言中常见的,难以发现的错误。

    请查看https://effbot.org/pyfaq/why-can-ti-use-an-assignment-in-an-expression.htm

     from functools import partial from itertools import imap, islice, takewhile import operator fibs = [1, 1] for x in takewhile(partial(operator.ge, 10000000), imap(operator.add, fibs, islice(fibs, 1, None))): fibs.append(x) 

    哦等等,你说“最简单”? 没关系。

      以上就是c/c++开发分享表达式中的变量赋值相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/550105.html

      (0)
      上一篇 2021年1月14日
      下一篇 2021年1月14日

      精彩推荐