试图在python中修复do while循环。

时间:2013-09-14 01:31:24

标签: python loops while-loop conditional do-while

我主要有使用visual basic编程的经验,并且我正在尝试学习python。我试图以do until循环的形式创建一个条件循环。我不知道如何在python中做到这一点,我可以使用一些帮助。我有一个do until循环,其中包含if语句。这就是我所拥有的。

number = 18
do while number = 1
if number%2==0 then
number = number/2
else number = (number*3)+1
loop 
print(number)

任何帮助都会很棒。感谢

4 个答案:

答案 0 :(得分:1)

Python中没有do … while循环。我相信FAQ中的某个地方可以解释原因,以及如何解决它。

但这并不重要,因为你所写的不是do … while循环,它只是一个简单的while循环。在每种语言中do … while的唯一一点就是你将测试条件放在循环体之后而不是之前,这样可以保证循环至少运行一次,这样可以避免这样做预循环设置,你必须在循环内复制。

所以,要将代码翻译成Python:

number = 18
while number == 1:
    if number%2==0:
        number = number/2
    else:
        number = (number*3)+1
print(number)

然而,值得注意的是,自循环之前的number = 18以来,第一次永远不会是== 1,所以这只是跳过整个事情并打印出来{{1} }。

您可能想要18while number != 1,但在任何人编写之前,您必须弄清楚您真正想要写的内容。

答案 1 :(得分:0)

Python中没有'do / while'。最接近的是一个循环,保证循环一次,然后在1次迭代后得到退出测试。

while True:                          # kinda like 'do'
   # do something at least once
   if fail_condition():              # here is your 'while' test
       break                         # end the loop if 'fail_condition' is True
                                     # loop again if 'fail_condition' is not True       

您的代码(Collatz/Hailstone?)大致如下:

number, i = 18, 0
while number>1:
    i+=1
    if number%2==0:     
        number = number/2
    else: 
        number = (number*3)+1

print 'Reached {} after {} loops'.format(number,i)
# prints 'Reached 1 after 20 loops'

答案 2 :(得分:-1)

即使在python中也是上面的代码?而不是做,而只是一会儿。在if语句之后,没有。快速重新格式化将如下所示:

number = 18
while number == 18:
    if number%2==0:
        number = number/2
    else:
        number = (number*3)+1 
print(number)

答案 3 :(得分:-2)

do while不是python中常用的构造。只需使用while循环。

https://wiki.python.org/moin/WhileLoop

例如,您的代码可以修改如下。

number = 18
while number == 1:
    if ( number % 2 ) == 0:
        number = number / 2
    else:
        number = ( number * 3 ) + 1
print number

这些语言之间最大的区别之一是python是关于制表符分隔的。您无需指定循环的开始和结束,选项卡会为您执行此操作。此外,不是条件语句后的':'。

但我会注意到上述代码不会产生任何有效答案。也许你的意思是循环运行而数字不等于1?