Python 条件分支(if语言,for语句,while语句)

if语句

if condition:

  代码块
condition必须是一个bool类型,这个地方有一个隐式转换bool(condition)
if 1<2:
  print('1 less than 2')

代码块也就是类似于if语句的冒号后面的就是一个语句块,在if,for,def,Class等的后面。

 

 

多条件分支:

if……elif……else语句。

a = 5
if a<0:
    print('negative')
elif a==0:
    print('zero')
else:
    print('positive')

结果为:

positive
#分支嵌套
score = 80 if score<0: print('wrong') else: if score==0: print('egg') elif score <= 100: print('right') else: print('too big')
结果为:
right
#练习,给定一个不超过5位数的正整数,判断其有几位。,这个题还可以运用整除的方法。a//10000等于0说明是4位数,除1000等于0说明是4位数。
但是没有下面的这个比较好,因为这个有计算。
val = input('>>>') val = int(val) if val >= 1000: #fold,折半 if val>=10000: print(5) else: print(4) else: if val>=100: print(3) elif val >= 10: print(2) else: print(1)

val = int(input("请输入一个不超过5位数的数字:"))
if val >10000:
print("你输入的数字是5位数")
elif val>1000:
print("你输入的数字是4位数")
elif val>100:
print("你输入的数字是3位数")
elif val >10:
print("你输入的数字是2位数")
else:
print("你输入的数字是1位数")

练习1:输入2个数字,输出最大值。

print('请输入两个数字》')
a = int(input("一个数字:"))#input获得的是一个字符串,需要转换
b = int(input("另一个数字:"))
if a > b:
    print("a大")
elif a ==b:
    print(a==b)
else:
    print("b大")

 

 

 

 

 上面的折半多此一举了。

while 循环

while condition:
  block

当条件满足即condition为True,进入循环体,执行block 。要注意不要进入死循环。

如果变成-10了,就变成死循环了。要改循环的时候加等就可以了。

flag=10
while flag:
    print(flag)
    flag -= 1

结果为10到1 
count  = 1
while count  <= 10:
    print( count)
    count = count + 1
    if count == 5:
        break   # 彻底停止循环. 不会执行后面的else
else:   # while条件不成立的时候执行
    print("这里是else")


结果为:
1
2
3
4

应该注意, 负数也是真。while -1 。

for循环

or element in iteratable:
block

当可迭代对象中有元素可以迭代,进入循环体,执行block 。

for i in range(10):
    print(i+1)

结果为:
1-10

如果要倒序打印:
for i in range(10,0,-1):
print(i)

range函数作业极大,range(stop),这是从0开始的。左包右不包。range函数返回的是一个range对象,它是一个可迭代对象。

range(start,stop,step),step是步长。

循环 continue语句

中断当前循环的当次执行,继续下一次循环

 

 

for i in range(0,10):
    if i & 1:#这是与
        continue
    print(i)

结果为:
0,2,4,6,8

for i in range(10):
if not i%2:
print(i)
结果为:

0
2
4
6
8

 

for i in range(0,10,2):
  print(i)

循环 break语句

终止当前循环

#举例:计算1000一类的被7整除的前20个数(for循环)
count = 0 for i in range(0,1000,7): print(i) count += 1 if count >= 20: break
j = 0
for i in range(1,1001):
if i%7==0 and j<20:
print(i)
j+=1
结果为: 0 7 14 21 28 35 42 49 56 63 70 77 84 91 98 105 112 119 126 133

continue和break是循环的控制语句,只影响当前循环,包括while、for循环 ,如果循环嵌套, continue和break也只影响语句所在的那一层循环 ,continue和break 不是跳出语句块,所以 if cond: break 不是跳出if,而是终止if外的break所在的循环。

三目运算表达式(里面的语句块只有一句,多于一句就不行了。)

 

 

 

 

 

给定一个不超过5位的正整数,判断该数的位数,依次打印出个位、十位、百位、千位、万位的数字

 

 

 

 

 

 

num = int(input("请输入一个不大于5位数的数字:"))
if num>10000:
    a=5
    print("你输入的是{}位数".format(a))
elif num > 1000:
    a=4
    print("你输入的是{}位数".format(a))
elif num>100:
    a=3
    print("你输入的是{}位数".format(a))
elif num>10:
    a=2
    print("你输入的是{}位数".format(a))
else:
    a=1
    print("你输入的是{}位数".format(a))
c = num
for i in range(a):
    n = c // 10
    print(c - n*10)
    c=n

给定一个不超过5位的正整数,判断该数的位数,依次从万位打印到个位的数字

num = int(input("请输入一个不大于5位数的数字:"))
if num>10000:
    a=5
    print("你输入的是{}位数".format(a))
elif num > 1000:
    a=4
    print("你输入的是{}位数".format(a))
elif num>100:
    a=3
    print("你输入的是{}位数".format(a))
elif num>10:
    a=2
    print("你输入的是{}位数".format(a))
else:
    a=1
    print("你输入的是{}位数".format(a))
pre = 0
for i in range(a,0,-1):
    cur = num//(10**(i-1))
    print(cur - pre*10)
    pre = cur

 

 

 

循环 else子句 

while condition:
  block
else:
  block
for element in iteratable:
  block
else:
  block

如果循环正常的执行结束,就执行else子句;如果使用break终止,else子句不会执行。

练习1:打印一个边长为N的正方形

 

 

 

 

 上面这个用到了对称。

 

 

练习2:求100内所有奇数的和(2500)

sum = 0
for i in range(1,2501,2):
    sum+=i
print(sum)

 

练习3:判断学生成绩,成绩等级A-E。其中90分以上为A,80-89为B,70-79为C,60-69为D,60分以下为E

score = int(input("请输入学生的成绩:"))
if score>=90:
    print("成绩为A")
elif score>=80:
    print("成绩为B")
elif score>=70:
    print("成绩为C")
elif score>=60:
    print("成绩为D")
else:
    print("成绩为E")

 

练习4:求1到5阶乘之和。

x = 0
sum = 1 for i in range(1,6): sum*=i
x+=sum
print(sum)

练习5:给定一个数,判断它是否为素数(质数),质数是一个大于1的自然数只能被1和它本身整除。

#最简单的思路,按照定义来,假设有一个数(n>1),从2开始判断,一直判断到N-1.
value = int(input("请输入一个数》》")) if value>1: for i in range(2,value): if value%i==0: print("不是质数") break else: print("是质数") else: print("不是质数")

 

作业1:打印99乘法表

 

 

 上面这是最原始的逻辑。最重要的是找到边界。

print函数默认分隔符是空格,以换行结尾。

 

 

 

 

 

 这个是对齐了的。

 

 

 大于,小于是右打印,还是左打印。20是20空格。

 

for i in range(1,10):
    s = ""
    for j in range(i,10):
        s+="{}*{}={:<{}}".format(i,j,i*j,2 if j<4 else 3)
    print("{:>66}".format(s))

 

作业2:打印下面的菱形

 

 

 

 

 

作业3:打印100内的斐波拉契数列

作业4:求斐波拉契数列第101项

作业5:求10万内的所有素数

 

 
 

posted on 2020-02-08 22:15  xpc199151  阅读(644)  评论(0编辑  收藏  举报

导航