美文网首页
循环嵌套里关于赋值的小坑

循环嵌套里关于赋值的小坑

作者: Miltonlong | 来源:发表于2017-11-29 00:46 被阅读25次
  • 题目:有1、2、3、4个数字,打印出所有每一位互不相同且无重复数字的三位数?
# 其实这用一个很简单的嵌套循环就可以写出来的,直接上代码。

for x in range(1,5):
    for y in range(1,5):
        for z in range(1,5):
            if x != y and x != z and y != z:
                x = str(x)
                y = str(y)
                z = str(z)
                print(x+y+z)

咋一看代码没有任何问题,但是运行出来结果不正确。要求每一位都互不相同,但是打印出的结果有相同的。


仔细看过代码,循环和判定条件都没有问题。后面终于看明白了,犯了一个很弱智的错误,在嵌套循环里面,最里面一级的循环结束了才会跳到上一级循环一次,再进入到最里面一级的循环,也就是,在第一次循环后,x,y,z 都被强制转换成了字符串,第二次循环时,只有 z 被重新赋值为了整数,拿字符串和整数作比较当然会出问题。
反应过来后,才发现这个错误虽然很弱智,但是有时还真不太容易看出来。
稍作修改,如果要用这种写法,则必须把转换后的字符串重新赋给一个新的变量,程序才争取。

for x in range(1,5):
    for y in range(1,5):
        for z in range(1,5):
            if x != y and x != z and y != z:
                a = str(x)
                b = str(y)
                c = str(z)
                print(x+y+z)

注:在嵌套循环的时候一定要注意变量问题,因为下一次的循环开始,是按照上一次变量的赋值而进行的

相关文章

  • 循环嵌套里关于赋值的小坑

    题目:有1、2、3、4个数字,打印出所有每一位互不相同且无重复数字的三位数? 咋一看代码没有任何问题,但是运行出来...

  • 第四天

    for与for的嵌套形式,for与if的嵌套形式。以及关于如何跳出循环中的“break”的。for循环结构与if ...

  • 循环下 深层嵌套的对象赋值

    如果不把数据copy出来,直接更改对象值,会失败,循环完之后对象的数据只对最后一次的循环生效 所以先copy出来要...

  • [Python基础]D6 循环嵌套、函数基础

    while 循环嵌套 4.1 循环嵌套 while 嵌套就是:while 里面还有 while 4.2 循环嵌套演...

  • [js]循环赋值时的坑

    废话不说,先看代码: 本来按照预期的顺序,结果应该是: 然而结果说明自己还是图样: 后来想了一下,改变了代码: 这...

  • Java学习day-06:嵌套循环

    一、嵌套循环专题 1.什么是嵌套循环? 在一个循环语句内部再嵌套一个或多个循环,称为嵌套循环。while、do...

  • 从网络下载UITabBarItem.image赋值

    一个小坑,关于TabBarItem.image图的设置,如果需要从网上下载图再赋值,必须先给它赋值一张默认的图 才...

  • JavaScript 实现99乘法表

    写出99乘法表就必须涉及到for循环的嵌套咱们先来看看嵌套格式 for循环嵌套格式: 当循环与循环发生嵌套时遵循下...

  • UITableView嵌套WKWebView的那些坑

    UITableView嵌套WKWebView的那些坑 UITableView嵌套WKWebView的那些坑

  • JAVA 嵌套for循环

    嵌套for循环_1(重要) A: 嵌套循环的概述 嵌套循环是指在一个循环语句的循环体中再定义一个循环语句的语法结构...

网友评论

      本文标题:循环嵌套里关于赋值的小坑

      本文链接:https://www.haomeiwen.com/subject/kcbybxtx.html