如何使用foreach和if从列表中筛选数字?输出结果不符问题排查
问题分析与修正方案
你的代码逻辑是:只要当前遍历到的c(来自集合A)满足40<=c<=60,或者d(来自集合B)满足20<=d<=30,就同时输出这一对c和d。这就导致:
- 当
c=50时,满足第一个条件,会输出50和对应的d=12 - 当
d=23时,满足第二个条件,会输出对应的c=98和23
最终得到的输出是50、12、98、23,和你的预期不符。
修正后的代码
要实现只输出符合条件的单个元素(50和23),需要将两个条件分开判断,分别输出符合要求的c或d:
set A { 50 98 76 34 67} set B { 12 23 48 59 65} foreach c $A d $B { if {40 <= $c && $c <= 60} { puts $c } if {20 <= $d && $d <= 30} { puts $d } }
这段代码会独立检查每个c和d,仅输出满足对应条件的元素,运行后输出结果为50和23,符合预期。
内容的提问来源于stack exchange,提问作者Shubham SD
相关产品推荐
相关产品推荐

