day6作业

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



day6作业_第1张图片
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作业)