2017-06-20 60 views
1

我意识到这个问题可能重复herehere,我似乎无法理解在while循环读取变量的位置以及更新所述变量时为什么不再引用已更新变量的基本原理。在嵌套(while)循环中放置变量的位置?

我想查询一个数字,如果一个隐藏的数字b小于输入,加1并打印结果,直到b不再小于输入。

在这个例子中,如果输入的号码是5,我所要的输出是

3 
4 
5 

我知道这可以用for回路来完成,但我想在循环中更复杂的方式b当我不知道我需要迭代多少次。我已将if作为while以及类似(非)结果尝试过。提前致谢。

a=raw_input("Input number: ") 
b=2 
while True: 
    if b<a: 
     b+=1 
     print b 
    else: 
     break 

编辑:错过了5输出,谢谢。

+5

它看起来像你输入一个字符串和治疗它像一个数字。也许你应该试着用'a = int(raw_input(“Input number:”))'' – khelwood

+0

@kehlwood亲爱的神。好吧,我是个白痴。我来自Matlab和R背景。总是忘记类型。谢谢! –

回答

1

你的代码应该以这种形式工作,但原始输入函数返回一个字符串,而不是一个号码......

所以,你需要这样做:

a=int(raw_input("Input number:")) 
1
a=int(raw_input("Input number: ")) 
b=3 
while True: 
    if b<a: 
     print b 
     b+=1 
    else: 
     break 

您的代码很好!您只需要在if语句中交换打印和增量,以便只在打印打印的数字后才增加该变量。在这个版本中,你需要用b等于3来启动程序!

希望它有帮助! 干杯!

2

它看起来这是你问什么:

a=int(raw_input("Input number: ")) 
b=2 

while b < a: 
    b+=1 
    print b 

ETA:执行嵌套代码之后的“而”循环的条件将被检查。在这种情况下,当'b'是4时,1将被添加到'b'并且它将打印该值,但是由于'b'不再小于'a',所以循环不会重新开始。

0

你原来的例子打印:

3 
4 
5 

显式规格要求显式代码。 在您的代码中,当条件被选中时,var b是4,然后它会递增并执行打印功能,而不检查您指定的条件。

您想要再次使用条件即b < a作为打印功能。

例如

a=int(raw_input("Input number:")) 
b=2 
while True: 
    if b < a: 
     b += 1 
    if b < a: 
     print b 
    else: 
     break 

FWIW,这个破解给一点洞察零索引

a=int(raw_input("Input number:")) 
b=2 
while True: 
    if b+1 <a: 
     print b+1 
    else: 
     break 
    b += 1