for循环遍历指定的可迭代对象,该对象的长度即对象中元素的个数是确定的,所以循环的次数是确定的。还有一种情况,就是一直循环,直到满足指定的条件为止,此时循环次数是不确定的,事先未知。这种循环用while循环来实现。[大谦MATLAB,dqmatlab点com]
简单while循环
【MATLAB】
while循环以不定的次数来求一组命令的值。while循环的一般形式如下所示:
while 表达式
执行语句…;
end
只要表达式的值为真,就一直执行while和end语句之间的语句。
【Python】
简单while循环结构首先计算条件表达式,如果结果为真,执行循环体中的语句,否则不执行。
while 判断条件:
执行语句…
Python中没有MATLAB中Do…Loop结构的第2种形式。
下面用简单while循环求两个自然数的最大公约数和最小公倍数。求两个自然数最大公约数的算法是:
给定两个自然数m和n, m>n;
m除以n得余数r;
如果r=0,则n是最大公约数,算法结束;否则执行步骤4;
将n值赋给m,r值赋给n,重复执行步骤2。
得到两个自然数的最大公约数后,它们的乘积除以它们的最大公约数就得到它们的最小公倍数。
【MATLAB】
在命令窗口输入下面的代码。
>> m=100;
>> n=15;
>> m0=100;
>> n0=15;
>> if m>=n
r=mod(m,n);
while r~=0
m=n;
n=r;
r=mod(m,n);
end
b=m0*n0/n;
n
b
end
回车,显示:
n =
5
b =
300
所以,100和15的最大公约数为5,最小公倍数为300。
【Python】
在Python IDLE Shell窗口输入:
>>> m=100
>>> n=15 #给定两个自然数m和n,m>n
>>> m0=100
>>> n0=15
>>> if m>=n:
r=m%n #求模
while r!=0: #如果余数不等于0,执行算法第4步
m=n
n=r
r=m%n
b=m0*n0/n #n为最大公约数,b为最小公倍数
print('最大公约数为'+str(n))
print('最小公倍数为'+str(b))
连续回车,显示:
最大公约数为5
最小公倍数为300.0
Python中有分支的while循环
Python提供了一种有分支的while循环,该结构中有else关键字,语法格式为:
while 判断条件:
执行语句…
else:
执行语句…
当判断条件满足时,执行第1个冒号后面的语句块;不满足时执行第2个冒号后的语句块。
下面用有分支的while循环对1至10累加求和。当迭代变量的取值大于10时给出提示。在Python IDLE Shell窗口输入:
>>> sum=0
>>> n=0
>>> while(n<=10): #实现累加求和
sum+=n
n+=1
else: #n的值大于10时给出提示
print('数字超出0-10的范围,计算终止。')
print(sum)
连续回车,显示:
数字超出0-10的范围,计算终止。
55
while循环嵌套
下面用嵌套的while循环生成九九乘法表。
【MATLAB】
在命令窗口输入下面的代码。
>> i=0;
>> while i<9
j=0;
i=i+1;
while j<i
j=j+1;
fprintf('%d*%d=%d ',j,i,i*j);
end
fprintf('\n');
end
回车,生成九九乘法表。
【Python】
在Python IDLE Shell窗口输入:
>>> i=0
>>> while i<9: #外层循环
j=0
i+=1
s=''
while j<i: #内层循环
j+=1
s+=str.format('{0}*{1}={2} ',j,i,i*j) #每行求和等式
print(s)
连续回车,生成九九乘法表。