01-列表作業

weixin_34208283發表於2018-07-23
  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 = str(n)
flag = 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))