python程序顺序、分支与循环语句
if...elif...else 语句
1 # 求一个不超过五位数的正整数是几位数 2 n=int(input('please input number:')) 3 if n<1000: 4 if n<10: 5 print('one') 6 elif n<100: 7 print('two') 8 else: 9 print('three') 10 else: 11 if n<10000: 12 print('four') 13 else: 14 print('five') 15 # 注释:本体使用折半思想,折半思想适合用在在一个大量数据中查找某个数
for循环
1 # 给定一个正整数,判断该数的位数,打印出个位、十位、百位、千位到最高位的数字 2 代码一(从个位到最高位) 3 a=input() 4 b=len(a) 5 a=int(a) 6 for i in range(b): 7 print(a%10) 8 a=a//10 9 代码二(从最高位到个位) 10 a=input() 11 b=len(a) 12 a=int(a) 13 for i in range(b,0,-1): 14 print(a//10**(i-1)) 15 a=a%10**(i-1) 16 #注释:找到规律,可以用几行循环代码得出结果
1 # 求100以内所有奇数之和: 2 sum=0 3 for i in range(1,100,2): 4 sum+=i 5 print(sum) 6 注释:range函数步跳是效率很高的循环
while循环
1 # 打印前n个斐波那契数列(使用临时变量法) 2 a=0 3 b=1 4 sum=0 5 n=int(input()) 6 while n>0: 7 sum=a+b 8 a = b 9 b = sum 10 n -= 1 11 print(a) 12 13 # 打印前n个斐波那契数列数列(不使用临时变量) 14 a=0 15 b=1 16 c=0 17 n=int(input()) 18 while c<n: 19 a,b=b,a+b 20 c+=1 21 print(a)
if语句,for循环与while循环都可以彼此嵌套
1 # 打印菱形(菱形为奇数行) 2 n=int(input()) 3 m=n//2 4 for i in range(-m,m+1): 5 if i<=0: 6 print((-i)*' '+(n+2*i)*'*') 7 else: 8 print(i*' '+(n-2*i)*'*') 9 10 #打印闪电型图形(奇数) 11 n=int(input('odd number:')) 12 b=n//2 13 for i in range(-b,b+1): 14 if i<0: 15 print((-i)*' '+(b+i+1)*'*') 16 elif i==0: 17 print(n*'*') 18 else: 19 print(b*' '+(b-i+1)*'*') 20 21 # 打印对角三角形(奇数) 22 n=int(input()) 23 m=n//2 24 for i in range(-m,m+1): 25 if i<=0: 26 print((m+i)*' '+((-i)*2+1)*'*') 27 else: 28 print((m-i)*' '+((i)*2+1)*'*') 29 30 注释:像这种打印对称图形的问题都可以采用这种方法,将图形分成两部分考虑
1 # 输入若干个数,打印出最大数(有退出条件) 2 代码一: 3 n=0 4 while True: 5 b=input() 6 if b=='q': 7 break 8 elif n==0: 9 b=int(b) 10 a=b 11 n=n+1 12 print(a) 13 else: 14 b=int(b) 15 if b>a: 16 a=b 17 print(a) 18 else: 19 print(a) 20 #注释:n的作用只在第一次循环中将第一次输入的值赋值给b,并打印出来;输入q退出 21 代码二 22 a=int(input()) 23 while True: 24 b=input() 25 if b: 26 b=int(b) 27 if b>a: 28 a=b 29 print('max is'a) 30 else: 31 print('max is'a) 32 else: 33 break 34 #注释:该代码简洁,退出条件为回车键(因为回车键代表输入空,为假;假则进入else,执行break,打断循环)
1 # 打印九九乘法表 2 for i in range(1,10): 3 for j in range(1,i+1): 4 print(j,'×',i,'=',j*i,end='\t') 5 print() 6 7 # 打印右上方乘法表 8 for i in range(1,10): 9 s='' 10 for j in range(i,10): 11 s += '{}*{}={:<{}}'.format(i,j,i*j,3 if j<4 else 4) 12 print('{:>70}'.format(s) ) 13 #注释:.format函数{}可以嵌套;该方法运用了 三目表达式
三目表达式:熟练运用三目表达式可减少代码行数
if 条件1:
语句1
else:
语句2
三目表达式:语句1 if 条件1 else 语句2 # 没有冒号