作业

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, '周', '王']

你可能感兴趣的:(作业)