美文网首页
day6作业

day6作业

作者: 七夜_174e | 来源:发表于2018-07-21 16:00 被阅读0次

    1、求 S=a+aa+aaa+aaaa+aa..a,其中a是一个数字。例如2+22+222+2222+22222,有5个数相加,几个数相加可以用input输入控制。

    num1 = int(input('请输入几个数相加:'))
    s = 0
    while True:
        if num1 < 0:
            print('输入有误,重新输入')
            num1 = int(input('请输入几个数相加:'))
        else:
            break
    for i in range(num1):
        num2 = 0
        for j in range(i+1):
            num2 += 2*(10**j)
        s += num2
    
    print(s)
    
    请输入几个数相加:5
    24690
    

    2、打印图形1
    n=4
    @
    @@
    @@@
    @@@@
    n=5
    @
    @@
    @@@
    @@@@
    @@@@@

    num1 = int(input('请输入要打印的行数:'))
    while True:
        if num1 < 0:
            print('输入有误,重新输入')
            num1 = int(input('请输入要打印的行数:'))
        else:
            break
    for i in range(num1+1):
        print('@'*i)
    
    请输入要打印的行数:3
    
    @
    @@
    @@@
    

    3、打印图形2



    num1 = int(input('请输入要打印的行数:'))
    while True:
        if num1 < 0:
            print('输入有误,重新输入')
            num1 = int(input('请输入要打印的行数:'))
        else:
            break
    
    for i in range(num1):
        s = '@'*(1+2*i)
        print(s.center(1+2*num1))
    请输入要打印的行数:2
      @  
     @@@ 
    

    4、打印图形3


    num1 = int(input('请输入要打印的行数:'))
    
    while True:
        if num1 < 0:
            print('输入有误,重新输入')
            num1 = int(input('请输入要打印的行数:'))
        else:
            break
    
    for i in range(num1 + 1):
        print('@' * (num1-i))
    
    请输入要打印的行数:4
    @@@@
    @@@
    @@
    @
    

    5、一个5位数,判断是不是回文数,即个位和万位相同,十位和千位相同 。如12321是回文数。

    num1 = int(input('请输入一个5位数:'))
    
    while True:
        if num1 // 10000 <= 0 or num1 // 10000 >= 10:
            print('输入有误,重新输入')
            num1 = int(input('请输入一个5位数:'))
        else:
            break
    
    if num1 // 10000 != num1 % 10:
        print('%d不是回文数' % num1)
    else:
        if num1 // 1000 % 10 != (num1 % 100 // 10):
            print('%d不是回文数' % num1)
        else:
            print('%d是回文数' % num1)
    
    请输入一个5位数:234
    输入有误,重新输入
    请输入一个5位数:43234
    43234是回文数
    

    6、打印图形(菱形)


    num1 = int(input('请输入一个正整数:'))
    while True:
        if num1 < 0:
            print('输入有误,重新输入')
            num1 = int(input('请输入一个正整数:'))
        else:
            break
    
    for i in range(num1):
        s = '@'*(1+2*i)
        print(s.center(1+2*num1))
    for j in range(num1):
        s = '@'*(1+2*(num1-j-2))
        print(s.center(1+2*num1))
    请输入一个正整数:3
       @   
      @@@  
     @@@@@ 
      @@@  
       @   
    

    7、打印9X9口诀:

    for i in range(1, 10):
        for j in range(1, i+1):
            print(j, '*', i, '=', j*i, end=' ', sep='')
        print('\t')
    
    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*5=5 2*5=10 3*5=15 4*5=20 5*5=25   
    1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36    
    1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49     
    1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64  
    1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81   
    

    8、输入一行字符,分别统计出其英文字母、空格、数字和其他字符个数.

    str1 = input('输入一行字符:')
    english_num = 0
    blank_num = 0
    number_num = 0
    else_num = 0
    for i in str1:
        if i.isdigit():
            number_num += 1
        elif i.isspace():
            blank_num += 1
        elif i.isalpha():
            english_num += 1
        else:
            else_num += 1
    print('该字符串有英文字母%d个,空格%d个,数字%d个,其他字符%d个' % (english_num, blank_num, number_num, else_num))
    
    输入一行字符:dsdwad  w  212!@#
    该字符串有英文字母7个,空格4个,数字3个,其他字符3个
    

    9、一个数如果恰好等于他的因子之和,这个数就称为“完数”。例如:6=1+2+3。找出1000以内所有的完数。

    print('1是完数')
    for i in range(1, 1001):
        s = []
        for j in range(1, i):
            if i % j == 0:
                s.append(j)
        if sum(s) == i:
            print('%d是完数' % i)
    
    1是完数
    6是完数
    28是完数
    496是完数
    

    10、 输入两个正整数m和n,求其最大公约数和最小公倍数。

    num1 = int(input('请输入第一个正整数:'))
    num2 = int(input('请输入第二个正整数:'))
    while True:
        if num1 < 0:
            print('输入有误,重新输入')
            num1 = int(input('请输入第一个正整数:'))
        elif num2 < 0:
            print('输入有误,重新输入')
            num2 = int(input('请输入第二个正整数:'))
        else:
            break
    a = max(num1, num2)
    b = min(num1, num2)
    while True:
        if a % b != 0:
            c = a
            a = b
            b = c % b
        else:
            d = num2 * num1 / b
            print('最大公约数是%d,最小公倍数是%d' % (b, d))
            break
    

    假设x和y的最大公约数是m,最小公倍数是n,则xy=mn,算出最大公约数后,就可以让两数相乘再除以最大公约数,即得到最小公倍数。

    相关文章

      网友评论

          本文标题:day6作业

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