作业

作者: 堪怜咏絮才 | 来源:发表于2018-07-22 17:49 被阅读75次

    1. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是⼀个数字。例如2+22+222+2222+22222(此时共有5个数相 加),⼏个数相加有键盘控制。

    n = int(input('请输入你想相加的次数:'))
    a = int(input('请输入你想相加的数字:'))
    sum1 = 0
    for i in range(1,n+1):
            sum1 += a
            a = a*10**i+a
    print(sum1)
    结果:请输入你想相加的次数:8
    请输入你想相加的数字:9
    100101120120220019188097715102
    

    2. 打印图形1(正三角形)

    n = int(input('请输入一个N值:'))
    for x in range(n):    #该循环主要是为了控制行数,n值即代表了行数
        for y in range(x+1):#该循环表示不换行的情况下输出的次数(控制该行的个数),y的值跟随x的值变化而变化
            print('@',end = '')
        print('')           #该功能是执行完y中的for循环,然后换行,执行下一次的x中的for循环
    结果:C:\Users\VM590\Desktop\Python\我的程序\venv\Scripts\python.exe C:/Users/VM590/Desktop/Python/我的程序/day7-周天作业/作业练习.py
    请输入一个N值:3
    @
    @@
    @@@
    

    3. 打印图形2(等腰三角形) (前面有空格,必须考虑空格的个数怎么打印)

    n = int(input('请输入一个数字,打印一个等边三角形:'))
    for x in range(1, n+1):#控制打印的行数
        for y in range(n-x):#控制空格的个数
            print(' ', end = '')#每次循环print输出之后不换行
    
        for z in range(x):#控制打印符号的个数,要想不换行的输出某次循环操作,可以设置end=''
            print('@ ', end = '' )#注意@后面的空格,不然得不到想要的图形
    
        print("")#每次一个主循环结束之后,换行
    结果:请输入一个数字,打印一个等边三角形:6
         @ 
        @ @ 
       @ @ @ 
      @ @ @ @ 
     @ @ @ @ @ 
    @ @ @ @ @ @ 
    

    4. 打印图形3(倒三角形)

    n = int(input('请输入一个n值:'))
    for x in range(n):
        for y in range(n-x):
            print('@', end = '')
        print('')
    结果:请输入一个n值:4
    @@@@
    @@@
    @@
    @
    

    5. 输⼊两个正整数m和n,求其最⼤公约数和最⼩公倍数。

    # 5. 输⼊两个正整数m和n,求其最⼤公约数和最⼩公倍数。
    m = int(input('请输入一个正整数m:'))
    n = int(input('请输入一个正整数n:'))
    if m > n:
        for x in range(n, 0, -1):
            if m % x == 0 and n % x == 0:
                print('%d和%d的最大公约数是:%d' % (m,n,x))
                print('%d和%d的最小公倍数是:%d' % (m,n,m*n/x))#两个数的最小公倍数=两个数的积/最大公约数
                break
    else:
        for y in range(m, 0, -1):
            if m % y == 0 and n % y ==0:
                print('%d和%d的最大公约数是:%d' % (m,n,y))
                print('%d和%d的最小公倍数是:%d' % (m,n,m*n/y))
                break
    结果:请输入一个正整数m:35
    请输入一个正整数n:53
    35和53的最大公约数是:1
    35和53的最小公倍数是:1855
    

    6. ⼀个数如果恰好等于它的因⼦之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数

    list1 = []
    for x in range(1, 1001):#一个主for循环下面可以进行许多操作
        for y in range(1, x):
            if x % y == 0:
                list1.append(y)
    
        sum1 = 0
        for i in list1:
            sum1 += i
    
        if sum1 == x:
            print('%d是完数' % x)
        list1 = []#列表不清空循环进行不下去,不能正确的输出列表,因为每一次循环都要用到空列表
    结果:6是完数
    28是完数
    496是完数
    

    7. 输出9*9⼝诀

    for x in range(1, 10):  #从1取到9
        for y in range(1,x+1):  #y的值由x来控制
            print('%d×%d=%d' % (x, y, x*y),end = ' ')   #主要是要注意在一个循环中打印出来的不算是多个内容,多个内容指的是一次操作打印
        print('')                                       #多个内容
    结果:1×1=1 
    2×1=2 2×2=4 
    3×1=3 3×2=6 3×3=9 
    4×1=4 4×2=8 4×3=12 4×4=16 
    5×1=5 5×2=10 5×3=15 5×4=20 5×5=25 
    6×1=6 6×2=12 6×3=18 6×4=24 6×5=30 6×6=36 
    7×1=7 7×2=14 7×3=21 7×4=28 7×5=35 7×6=42 7×7=49 
    8×1=8 8×2=16 8×3=24 8×4=32 8×5=40 8×6=48 8×7=56 8×8=64 
    9×1=9 9×2=18 9×3=27 9×4=36 9×5=45 9×6=54 9×7=63 9×8=72 9×9=81 
    

    1. ⼀个5位数,判断它是不是回⽂数。即12321是回⽂数,个位与万位相同,⼗位与千位相同。

    while True:#让判断可以一直进行下去
        number = input('请输入一个五位数:')
        number1 = int(number)#将字符串转化为数字
        if len(number) == 5:
            if number[0] == number[-1] and number[1] == number[-2]:#判断是不是回文数
                print('%d是一个回文数' % number1)
    结果:请输入一个五位数:23432
    23432是一个回文数
    请输入一个五位数:45654
    45654是一个回文数
    请输入一个五位数:78987
    78987是一个回文数
    请输入一个五位数:
    

    2. 打印图形(菱形)

    n = int(input('请输入一个数字打印菱形:'))
    for i in range(1, n+1):#执行循环的次数
        for x in range(n-i):#同一级的for循环可以实现在同一行输入内容
            print(' ',end = '')#循环的内容
        for y in range(i):  #因为上一行的结尾没有没有执行换行的操作,所以这个与上一级的循环是同一个操作在同一行输出内容
            print('@ ',end = '')#这一行只是循环操作中输出的内容,但是换不换行需要自己通过end来设定
        print('')#该行的作用是在大的循环中执行最后的换行操作
    for m in range(1,n):#上一级的大循环结束之后执行这个大的for循环
        for o in range(m):
            print(' ', end = '')
        for p in range(n-m):
            print('@ ',end = '')
        print('')
    #总结:对于循环里面套循环的操作,记住每一个循环是一个一个的执行,分清缩进的等级。记住每一级的循环都要执行完毕之后才能进行下一步的操作
    # 循环操作的规则是只要满足条件就会执行,记住for和while的执行规则即可
    结果:请输入一个数字打印菱形:5
        @ 
       @ @ 
      @ @ @ 
     @ @ @ @ 
    @ @ @ @ @ 
     @ @ @ @ 
      @ @ @ 
       @ @ 
        @ 
    

    3. 输⼊⼀⾏字符,分别统计出其中英⽂字⺟、空格、数字和其它字符的个数。

    str1 = input('请随便输入一串字符:')
    Alphabet = 0
    space = 0
    digital =0
    other =0
    for item in str1:
        if item.isalpha():
            Alphabet += 1
        elif item.isspace():
            space += 1
        elif item.isdigit():
            digital += 1
        else:
            other += 1
    print('英文字母:%d 空格:%d 数字:%d 其他字符:%d' %(Alphabet, space, digital, other))
    结果:请随便输入一串字符:hjh 645432957250,、235%#%*((¥@@
    英文字母:3 空格:1 数字:15 其他字符:11
    

    1.已知⼀个列表,求列表中⼼元素。

    list1 = [1, 2, 3, 4, 5, 6]
    number = len(list1)
    if not number:
        print('空表')
    elif number % 2:
        print('中心元素为:', list1[int((number - 1) / 2)])
    else:
        print('中心元素为:', list1[int((number / 2) - 1)], list1[int(number / 2)])
    结果:中心元素为: 3 4
    

    2.已知⼀个列表,求所有元素和。

    list1 = [1, 2, 3, 4, 5, 6]
    sum1 = 0
    for item in list1:
        sum1 += item
    print(sum1)
    结果:21
    

    3.已知⼀个列表,输出所有奇数下标元素。

    list1 = ['a','b','c','d','e','f','g']
    print(list1[1::2])
    结果:['b', 'd', 'f']
    

    4.已知⼀个列表,输出所有元素中,值为奇数的。

    list1 = [23,68,25,89,16,47,59,99,3,4]
    for item in list1[:]:
        if int(item) % 2:
            print(item)
    结果:23
    25
    89
    47
    59
    99
    3
    

    5.已知⼀个列表,将所有元素乘⼆。(到底是下面的哪一种?)

    list1 = ['a','b',2,8,7,'fkahj']
    list2 = list1*2
    print(list2)
    
    list1 = ['a','b',2,8,7,'fkahj']
    list2 = list(i*2 for i in list1)
    print(list2)
    结果:['a', 'b', 2, 8, 7, 'fkahj', 'a', 'b', 2, 8, 7, 'fkahj']
    ['aa', 'bb', 4, 16, 14, 'fkahjfkahj']
    

    6.已知⼀个列表,将所有元素加到第⼀个元素中。

    list1 = [2,3,4,7,8,9,6,5]
    item = list1[0]
    for i in list1[1:len(list1)]:
        item += i
    list1.insert(0,item)
    del list1[1]
    print(list1)
    结果:[44, 3, 4, 7, 8, 9, 6, 5]
    

    7.已知⼀个列表A,将奇数位置元素存到B列表中,偶数元素存到C列表中。

    A = ['a',5,'hffj',8784,' ',[],{}]
    B = []
    C = []
    for item in A[0:len(A):2]:
        B.append(item)
    for item1 in A[1:len(A):2]:
        C.append(item1)
    print(B,C)
    结果:['a', 'hffj', ' ', {}]      [5, 8784, []]
    

    8.把A列表的前5个元素复制到B列表中。

    A = ['a',5,'hffj',8784,' ',[],{}]
    B = []
    B = B + A[0:5]
    print(B)
    结果:['a', 5, 'hffj', 8784, ' ']
    

    9.把1----36分别放⼊列表中,计算列表数组对⻆元素之和。6 * 6的列表

    list1 = [1,2,3,4,5,6,
             7,8,9,10,11,12,
             13,14,15,16,17,18,
             19,20,21,22,23,24,
             25,26,27,28,29,30,
             31,32,33,34,35,36]
    sum1 = 0
    for n in range(18):
        sum1 = list1[n] + list1[35-n]
        print(sum1)
    结果:37
    37
    37
    37
    37
    37
    37
    37
    37
    37
    37
    37
    37
    37
    37
    37
    37
    37
    

    10.有⼀个⻓度是10的列表,列表内有10个不重复的数字,要求按从⼤到⼩排序。

    list1 = [1,99,88,27,34,75,14,8,36,54]
    list1.sort()#sort()函数可以从小到大进行排列
    list1.reverse()# reverse()函数可以反向排列
    print(list1)
    结果:[99, 88, 75, 54, 36, 34, 27, 14, 8, 1]
    

    11.有⼀个⻓度是10的列表,要求删除某⼀个位置的元素

    list1 = [1,99,88,27,34,75,14,8,36,54]
    index = int(input('请输入你想要删除的元素的下标:'))
    del list1[index]
    print(list1)
    结果:请输入你想要删除的元素的下标:0
    [99, 88, 27, 34, 75, 14, 8, 36, 54]
    

    12.有⼀个⻓度是10的列表,按递增排列,⽤户输⼊⼀个数,插⼊适当位置。

    list1 = [12,68,94,101,205,304,478,895,1478,2018]
    number = float(input('请输入你想插入的数字:'))
    count = 0
    if number > list1[-1]:
        list1.append(number)
        print(list1)
    for i in list1:
        count += 1
        if number < i:
            break
    if count <= 10:
        list1.insert(count-1,number)
        print(list1)
    结果:请输入你想插入的数字:0
    [0.0, 12, 68, 94, 101, 205, 304, 478, 895, 1478, 2018]
    请输入你想插入的数字:4555
    [12, 68, 94, 101, 205, 304, 478, 895, 1478, 2018, 4555.0]
    

    13.有⼀个⻓度是10的列表,数组内有10个⼈名,要求去掉重复的

    list1 = ['赵','钱','孙','李','周','王','赵','钱','孙','李']
    list2 = []
    for item in list1:
        if item not in list2:
            list2.append(item)
    print(list2)
    结果:['赵', '钱', '孙', '李', '周', '王']
    

    14.把A列表的第三到第六位之间的元素删除。

    A = ['赵','钱','孙','李','周','王','赵','钱','孙','李']
    del A[2:6]
    print(A)
    结果:['赵', '钱', '赵', '钱', '孙', '李']
    

    15.已知A列表,B列表,定义⼀个列表C,要求C包含A,B数组中的数据(⽆重复值)。

    A = ['赵','钱','孙','李','周','王']
    B = ['赵','钱','孙','李',1,2,3,4,5,6]
    for m in A:
        if m not in B:
            B.append(m)
    print(B)
    结果:['赵', '钱', '孙', '李', 1, 2, 3, 4, 5, 6, '周', '王']
    

    相关文章

      网友评论

          本文标题:作业

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