美文网首页
Python 基础语法之三(练习)

Python 基础语法之三(练习)

作者: Alexander_Zz | 来源:发表于2019-07-06 15:23 被阅读0次

    一、基础练习

    1.1 给定一个不超过 5 位的正整数,判断该数的位数,依次打印出个位、十位、百位、千位、万位的数字
    • 判断位数,折半思想
    num = int(input('>>>'))
    if num >= 1000:
        if num > 9999:
            print ('5')
        else:
            print ('4')
    elif num >= 100:
        print ('3')
    elif unm >=10:
        print ('2')
    else:
        print ('1')
    
    • 参考答案
    num = int(input('>>>'))
    if num >= 1000:
        if num > 9999:
            digit = 5
        else:
            digit = 4
    elif num >= 100:
        digit = 3
    elif unm >=10:
        digit = 2
    else:
        digit = 1
    print ('digit is',digit)
    
    var = num
    for i in range(digit):
        n = var // 10
        print (var - n*10)
        var = n
    
    参考答案.png
    1.2 打印一个边长为 n 的正方形
    • 参考答案
    var = int(input ('>>>'))
    for i in range(var):
        if i == 0 or i == var-1:
            print ('@'*var)
        else:
            print ('@'+' '*(var-2)+'@')
    
    参考答案.png
    1.3 求 100 内所有奇数的和
    • 参考答案
    sum = 0
    for i in range(100):
        if i & 1:
            sum += i   # 与 sum = sum + i 相同
        else:
            continue
    else:
        print (sum)
    
    奇数和.png
    • 偶数和
    sum = 0
    for i in range(101):
        if i & 1:
            continue
        else:
            sum += i
    else:
        print (sum)
    
    偶数和.png
    • 效率版本
      减少计算,提升效率
    sum = 0
    for i in range(1,100,2):
        sum += i
    else:
        print (sum)
    
    1.4 判断学生成绩,成绩等级 A - E。其中,90 分以上为 'A',80 - 89 分为 'B',70 - 79 分为 'C',60 - 69 分为 'D',60 分以下为 'E'
    • 参考答案
    score = int(input('>>>'))
    if score > 69:
        if score < 80:
            print ('C')
        elif score < 90:
            print ('B')
        else:
            print ('A')
    else:
        if score < 60:
            print ('E')
        else:
            print ('D')
    
    参考答案.png
    1.5 求 1 到 5 阶乘之和
    • 参考答案
    n = int(input('>>>'))
    c = 1
    x = 0
    for i in range(1,n+1):
        c *= i
        x += c
    else:
        print (x)
    
    参考答案.png
    1.6 给一个数,判断它是否是素数(质数)
    • 参考答案
      质数:一个大于1的自然数只能被1和它本身整除
    x = int(input())
    for i in range(2,x):
        if x % i == 0:
            print ('No')
            break
    else:
        print ('Yes')
    
    参考答案.png
    1.7 打印九九乘法表
    • 参考答案
    for i in range(1,10):
        for j in range(1,i+1):
            print (j,'*',i,'=',i*j,end='\t')
        else:
            print ()
    
    • 打印乘法表上半部分
    for i in range(1,10):
        print(' '*7*(i-1),end='')
        for j in range(i,10):
            product = i*j
            if product < 10:
                end = '  '
            else:
                end = ' '
            print(str(i)+'*'+str(j)+'='+str(i*j),end=end)
        print()
    
    九九乘法表.png 乘法表上半部分.png
    1.8 输入两个数,比较大小后,从小到大升序打印
    • 参考答案
    x = int (input ('>>>'))
    y = int (input ('>>>'))
    if x >= y:
        print (y,x)
    else:
        print (x,y)
    
    • 真值 if 条件 else 假值
      Python 没有三目运算符
    x = input ('1st: ')
    y = input ('2nd: ')
    print (y,x) if x>y else print (x,y)
    
    参考答案.png 真值 if 条件 else 假值.png
    1.9 给一个半径,求圆的面积和周长。(π = 3.14)
    • 参考答案
    radius = int (input ('>>>'))   # radius,半径
    pi = float (3.14)   # pi,圆周率
    print ('perimeter is',radius * 2 * pi)   # perimeter,周长
    print ('area is',pi * radius ** 2)   # area,面积
    
    参考答案.png
    1.10 输入 n 个数,求每次输入后的算数平均数
    • 参考答案
    count = 0   # count,计数
    summation = 0   # sum / summation,求和
    while True:
        x = input ('quit enter F ,plz input a num ')
        if x != 'F':
            summation += int(x)
            count += 1
            print ('avg is',(summation // count))   # avg,平均数
        else:
            break
    
    参考答案.png
    1.11 打印菱形
    • 思路
    行号    个数    前空格    总空格
     1       1       3         6
     2       3       2         4
     3       5       1         2
     4       7       0         0
     5       5       1         2
     6       3       2         4
     7       1       3         6
    
    • 参考答案
      range 可以从负数开始,不要被束缚住思想
    for i in range(-3,4):
        if i<0:
            prespace = -i
        else:
            prespace = i
        print (' '*prespace + '*'*(7-prespace*2))
    
    # 精简版本
    for i in range(-3,4):
        print (' '*(-i) + '*'*(7+i*2)) if i<0 else print (' '*i + '*'*(7-i*2))
    
    参考答案.png 精简版本.png
    1.12 打印对顶三角形
    • 思路
    序号    对称序列    星号数    总空格    前置空格    后置空格
     1         3         7        0          0          0
     2         2         5        2          1          1
     3         1         3        4          2          2
     4         0         1        6          3          3
     5         1         3        4          2          2
     6         2         5        2          1          1
     7         3         7        1          0          0
    
    # 可以看出,和签到空格、起终点有关
    
    • 参考答案
    n = 7
    e = n//2
    for i in range(-e,n-e):
        prespace = -i if i<0 else i
        print (' '*(e-prespace) + '*'*(2*prespace+1))
    
    # 精简
    n = 7
    e = n//2
    for i in range(-e,n-e):
        print (' '*(e+i) + '*'*(2*(-i)+1)) if i<0 else print(' '*(e-i) + '*'*(2*i+1))
    
    参考答案.png
    1.13 打印闪电
    • 思路
    行号    个数    前空格    后空格    总空格    数据
     1       1       3         3         6      -3
     2       2       2         3         5      -2
     3       3       1         3         4      -1
     4       7       0         0         0       0
     5       3       3         1         4       1
     6       2       3         2         5       2
     7       1       3         3         6       3
    
    • 参考答案
    for i in range(-3,4):
        if i<0:
            print (' '*(-i) + '*'*(4+i))
        elif i>0:
            print (' '*3 + '*'*(4-i))
        else:
            print ('*'*7)
    
    参考答案.png
    1.14 斐波那契数列
    • 定义
      指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
    • 100 以内数列打印
    print (0)
    print (1)
    a = 0
    b = 1
    while True:
        c = a + b
        if c > 100:
            break
        a = b
        b = c
        print (c)
    
    • 求数列 101 项
      答案:101,573147844013817084101
    # 方案一
    i = 1
    j = 1
    count = 0
    while True:
        i,j = j,i+j
        count += 1
        if count == 100:
            break
    print (i)
    
    # 方案二
    a = 1
    b = 1
    index = 2
    print ('{0},{1}'.format(0,0))
    print ('{0},{1}'.format(1,1))
    print ('{0},{1}'.format(2,1))
    while True:
        c = a + b
        a = b
        b = c
        index += 1
        print ('{0},{1}'.format(index,c))
        if index == 101 :
            break
    
    100 以内.png 101 项方案二.png 101 项方案一.png
    1.15 猴子吃桃问题
    • 猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,有多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第十天早上想吃时,只剩下一个桃子了。求第一天共摘了多少桃子。
    • 思路
    total = x
        
           剩下
    
    d1    x/2-1
    d2    d1/2-1
    d3    d2/2-1
    ...
    d9    d8/2-1
    d10   1
    
    • 参考答案
    peach = 1
    for i in range(9):
        peach = 2*(peach+1)
    print (peach)   # 1534
    

    相关文章

      网友评论

          本文标题:Python 基础语法之三(练习)

          本文链接:https://www.haomeiwen.com/subject/yvouhctx.html