python的for和while循环

循环

while 循环

  • Python中while语句的一般形式:
    while 判断条件:
    语句

while 的列子

#!/usr/bin/env python3
 
n = 100
 
sum = 0
coun = 1
while coun <= n:
    sum = sum + coun
    coun += 1
 
print("1 到 %d 之和为: %d" % (n,sum))

#输出
1 到 100 之和为: 5050

while 循环使用 else 语句

#!/usr/bin/python3
 
count = 0
while count < 5:
   print (count, " 小于 5")
   count = count + 1
else:
   print (count, " 大于或等于 5")
# 输出
0  小于 5
1  小于 5
2  小于 5
3  小于 5
4  小于 5
5  大于或等于 5

for循环

  • Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。

例子

a="asdfgjk"
for i in a:
    print(i)
#输出
a
s
d
f
g
j
k

continue:

  • 结束本次循环,跳到下次循环

break

  • 结束当前的循环。
#!/usr/bin/python3
 
for let in 'abcde':     
   if let == 'b':
      break
   print ('当前字母为 :', let)
#输出
当前字母为 : a
  
var = 10                    
while var > 0:              
   print ('当期变量值为 :', var)
   var = var -1
   if var == 5:
      break
print ("拜拜!")
#输出
当期变量值为 : 10
当期变量值为 : 9
当期变量值为 : 8
当期变量值为 : 7
当期变量值为 : 6
拜拜!

乘法口诀

for i in range(1,5):
    for j in range(1,i+1):
        print('{1}*{0}={2}'.format(i,j,i * j),end=" ")
    print()

#输出
1*1=1 
1*2=2 2*2=4 
1*3=3 2*3=6 3*3=9 
1*4=4 2*4=8 3*4=12 4*4=16 

练习1

  1. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
#!/bin/python

for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if i != j and i!=k and j!=k: 
                print(i,j,k)    

  1. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
    程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
for i in range(100,1000):
    j=i//100
    k=(i-j*100)//10
    l=(i-j*100)%10
    if j**3 + k**3 + l**3 == i:
    	print(i)
  1. 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
#!/bin/python

for i in ['x','y','z']:
	for j in ['x','y','z']:
		for k in ['x','y','z']:
			if i != j and  j !=k and i != k:
				if i != 'x' and k != 'x' and k != 'z':
					print("a vs %s,b vs %s,c vs %s"%(i,j,k))

练习2

  1. 将一个正整数分解质因数。例如:输入90,打印出90=233*5。
    程序分析:对n进行分解质因数,应先找到一个最小的质数i,然后按下述步骤完成:
    (1)如果分解后商为1,则说明分解质因数的过程已经结束,打印出即可。
    (2)如果商不为1,则应打印出i的值,并用n除以i的商,作为新的正整数进行分解,
     重复执行第一步。
    (3)如果n不能被i整除,则i的值加1,重复执行第一步。
#! /bin/python

f=[]

n=int(input("please input int:"))

for i in range((n//2+1)):
    for k in range(2,n):
        m=n%k
        if m == 0:
            f.append(k)
            n=n//k
            break
if len(f) == 0:  
    print('该数字没有任何质因数。')
else:  
    f.append(n)  
print(f)
  1. 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
    程序分析:采取逆向思维的方法,从后往前推断。
#! /bin/python

sum=1
a=1
for i in range(0,9):
    a=(a+1)*2
    sum=sum+a
    
print(sum,a)

你可能感兴趣的:(study,python)