zoukankan      html  css  js  c++  java
  • 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万内的所有素数

     
     
  • 相关阅读:
    实现货币金额中文大写转换的程序
    大数阶乘的计算(三)
    全国15亿人口中选1000个代表有多少种选法?
    DB Query Analyzer 中断SQL语句的执行
    Android_Preference存取数据
    Centos 学习笔记软件包管理
    Centos学习笔记文件搜索命令
    《计算机时代》2011年第12期刊登出《DB Query Analyzer中断SQL语句的执行》
    Centos学习笔记linux用户管理
    Centos学习笔记 linux 常用命令:压缩解压命令
  • 原文地址:https://www.cnblogs.com/xpc51/p/11497687.html
Copyright © 2011-2022 走看看