Python-day-05作业(列表2)

01-列表作业

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

代码:

a = 2
n = int(input('n:'))
sum = 0  # 和
number = 0 # 每次循环被加的数字
for _ in range(n):
    number = number * 10 + a
    print(number, end=' ')
    sum += number

print('和:',sum)


  1. 打印图形1
    n=4
    @
    @@
    @@@
    @@@@
    n=5
    @
    @@
    @@@
    @@@@
    @@@@@
n = 5
# 使用循环控制行数,同时X控制每一行@的数量
for x in range(1,n+1):
    print('@'*x)


  1. 打印图形2
    n=3
    @
    @@@
    @@@@@

n == 4
@
@@@
@@@@@
@@@@@@@

"""
分析:
n = 5
    @
   @@@
  @@@@@  
 @@@@@@@
@@@@@@@@@

第1行  @1个  空格4个
第2行  @3个  空格3个
第3行  @5个  空格2个
第4行  @7个  空格1个
第5行  @9个  空格0个
规律:@:行数*2 - 1
     空格:n - 行数
"""
n = 5

# 使用x来获取行数
for x in range(1,n+1):
    # 先打印空格
    print(' '* (n - x), end='')
    # 再打印@
    print('@'* (x * 2 - 1))


  1. 打印图形3
    n=3
    @@@
    @@
    @
n = 3
# x的取值是0~n-1
for x in range(n):
    print('@'*(n-x))


  1. 输 两个正整数m和n,求其最 公约数和最 公倍数。
"""
最大公约数:两个或多个整数共有约数中最大的一个。
最小公倍数:两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。
"""

m = 10
n =  15
#Python中的三目运算符: 为真时的结果 if 判定条件 else 为假时的结果  
max1 = m if m > n else n
min1 = m if m < n else n

"""a.求最大公约数"""
# x的取值范围是min1 ~ 1
for x in range(min1,0,-1):
    if (m % x == 0) and (n % x == 0):
        print('%d和%d的最大公约数是:%d' % (m, n, x))
        break  

"""b.求最小公倍数"""
x = max1
while True:

    if (x % m == 0) and (x % n == 0) :
        print('%d和%d的最小公倍数是:%d' % (m, n, x))
        break

    x += 1


  1. 个数如果恰好等于它的因 之和,这个数就称为 "完数 "。 如6=1+2+3.编程 找出1000以内的所有完数
# 使用x将1000以内的所有的数都拎出来
for x in range(1,1001):
    sum1 = 0
    for y in range(1,x):
        # 找出所有x的因子,并且加起来
        if x % y == 0:
            sum1 += y
    # 所有的因子加完后,判断x是否是完数
    if x == sum1:
        print('%d是完数' % x)


  1. 输出9*9 诀
"""
第1行: 1x1=1
第2行: 1x2=2 2x2=4
第3行: 1x3=3 2x3=6 3x3=9
第4行: 1x4=4 2x4=8 3x4=12  4x4=16
...

规律:MxN
M: 每一行 1 ~ 行数
N: 每一行 都是行数

"""
n = 0 # 第一个数
m = 0 # 第二个数
# x为行数,取值是1-9
for x in range(1,10):
    # 每一行,m是行数
    m = x

    # 每一行,n是1 ~ 行数
    for y in range(1,x+1):
        n = y
        # 注意:同一行显示的是end不能是换行
        print('%dx%d=%d' % (n, m, n*m), end=' ')

    # 一行的内容打印完了,就换行
    print()


  1. 一个5位数,判断它是 是回 数。即12321是回 数,个位与万位相同, 位与千位相同。
n = 12321
n_str = sag = True  # 假设n是回文数
 # index是字符串下标,范围是0-2
for index in range(3):
    pre = n_str[index]
    # 下标返回是 4-2
    back = n_str[5 - index - 1]
    # 如果前面的数字和对应的数不相等,说明不是回文数
    if pre != back:
        flag = False
        break

if flag:
    print('%d是回文数' % n)


  1. 输入字符串,分别统计出其中英 字 、空格、数字和其它字符的个数。
str1 = 'ahb 76jk kkj%6 shj98%'
letter_count = 0
number_count = 0
space_count = 0
other_count = 0

for char in str1:
    # 字母:
    if ('a'<=char<='z') or ('A'<=char<='Z'):
        letter_count += 1
        continue

    # 数字
    if '0'<=char<='9':
        number_count += 1
        continue

    # 空格
    if char == ' ':
        space_count += 1
        continue

    # 其他
    other_count += 1

print('字母:%d个, 数字:%d个, 空格:%d个, 其他:%d个' % (letter_count, number_count, space_count, other_count))

你可能感兴趣的:(Python-day-05作业(列表2))