循环
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、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)
- 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如: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)
- 两个乒乓球队进行比赛,各出三人。甲队为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
- 将一个正整数分解质因数。例如:输入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)
- 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
程序分析:采取逆向思维的方法,从后往前推断。
#! /bin/python
sum=1
a=1
for i in range(0,9):
a=(a+1)*2
sum=sum+a
print(sum,a)