Python 實例練習

前言

最近比較清閒,本來想着深入學習一下安卓的,但是沒什麼項目實踐,控件也寫了不少了,沒什麼動力。於是乎就研究下新奇的東西,學了一段時間的flutter,基本入門,寫一些界面沒什麼問題。雖說flutter是谷歌推出的跨平臺解決方案,但是鑑於之前蘋果強制下架熱更新APP,外加上覺得蘋果是不會去支持、允許競爭對手的產品的,所以,暫時擱置了flutter,學點基礎,入個門,瞭解有這樣一個東西,目前來說足夠了。
放棄flutter之後,空閒時間又不知道如何打發,所以就想學一下熱門的技術,於是乎,就挑了Python。近幾年Python真是火得一塌糊塗,學了一小段時間,推薦幾個學習的資料:

個人認爲,編程語言都大同小異,有一定編程基礎的人,學一門新語言的基礎語法,都能較快入手,所以建議不要因爲害怕是新語言,就覺得需要花費大量的時間,然後就不去學習,我個人是認爲知識是很好的東西,能學多點就學多點,讀書無用論都是沒讀書的人說的,一開始學Python,我是看着基礎語法,瞭解基礎語法之後,就根據練習題,編程。我用的是Python3.7,Python2跟Python3在代碼上,差距還是挺大的。

# 用1,2,3,4組成各不相同的3位數
for i in range(1, 5):
    for j in range(1, 5):
        for k in range(1, 5):
            if (i != j) and (i != k) and (j != k):
                print(i, j, k)

打印結果:
1 2 3
1 2 4
1 3 2
1 3 4
1 4 2
1 4 3
2 1 3
2 1 4
2 3 1
2 3 4
2 4 1
2 4 3
3 1 2
3 1 4
3 2 1
3 2 4
3 4 1
3 4 2
4 1 2
4 1 3
4 2 1
4 2 3
4 3 1
4 3 2
# 利潤,高於10w,提成10%,10-20w之間,高出10w的部分提成7.5%,20-40w之間,高出20w的部分提成5%,
# 40-60w之間,高出40w的提成3%,60-100w之間,高出60w的提成1.5%,高於100w,提成1%
money = int(input('請輸入淨利潤:'))
moneyList = [1000000, 600000, 400000, 200000, 100000, 0]
moneyRat = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1]
moneySum = 0
for i in range(0, 6):
    if money > moneyList[i]:
        moneySum = moneySum + (money - moneyList[i]) * moneyRat[i]
        money = moneyList[i]

print('提成:%d' % moneySum)

打印結果:
    請輸入淨利潤:162000
    提成:14650
# 一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
for i in range(1, 85):
    if 168 % i == 0:
        j = 168 / i
        if i > j and (i + j) % 2 == 0 and (i - j) % 2 == 0:
            m = (i + j) / 2
            n = (i - j) / 2
            x = n * n - 100
            print(x)

打印結果:
    -99.0
    21.0
    261.0
    1581.0
# 輸入某年某月某日,判斷這一天是這一年的第幾天?
year = int(input('請輸入年份:'))
month = int(input('請輸入月份:'))
day = int(input('請輸入日期:'))

months = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334)
sumDay = 0
if 0 < month <= 12:
    sumDay = months[month - 1]
else:
    print('請輸入正確的月份')

sumDay += day
leap = 0
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
    leap = 1
if (leap == 1) and (month > 2):
    sumDay += 1
print('這是%d年的第' % year + '%d天' % sumDay)

打印結果:
    請輸入年份:2018
    請輸入月份:07
    請輸入日期:06
    這是2018年的第187
# 輸入三個整數x,y,z,請把這三個數由小到大輸出。
x = int(input('請輸入X:'))
y = int(input('請輸入Y:'))
z = int(input('請輸入Z:'))

list0 = [x, y, z]
list0.sort()
print(list0)

打印結果:
    請輸入X:100
    請輸入Y:56
    請輸入Z:89
    [56, 89, 100]
# 暫停一秒輸出
import time

a = [1, 2, 3, 4, 5]
for i in a:
    print(i)
    time.sleep(1)
# 獲取當前時間
import time

print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))

打印結果:
    2018-07-06 14:13:47
# 打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個"水仙花數",因爲153=1的三次方+5的三次方+3的三次方。
for n in range(100, 1000):
    i = int(n / 100)
    j = int(n / 10 % 10)
    k = int(n % 10)
    if n == i ** 3 + j ** 3 + k ** 3:
        print(n)

打印結果:
    153
    370
    371
    407
# 輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。

import string

str1 = input('請輸入一行字符:')
chars = 0
space = 0
digit = 0
others = 0
for i in str1:
    if i.isalpha():
        chars += 1
    elif i.isspace():
        space += 1
    elif i.isdigit():
        digit += 1
    else:
        others += 1
print('字母:%d個\n空格:%d個\n數字:%d個\n其他字符:%d個' % (chars, space, digit, others))

打印結果:
    請輸入一行字符:dkpasdpla  2039290akdpskpa ']'\.'as.d'2[pds z[pwe 
    字母:27個
    空格:5個
    數字:8個
    其他字符:10
# 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加)
Tn = 0
Sn = []
a = int(input('請輸入一個數:'))
for count in range(a):
    Tn = Tn + a
    a = a * 10
    Sn.append(Tn)
    print(Tn)

sums = 0
for i in Sn:
    sums = sums + i
print("計算和爲:", sums)

打印結果:
    請輸入一個數:6
    6
    66
    666
    6666
    66666
    666666
    計算和爲: 740736
# 一球從100米高度自由落下,每次落地後反跳回原高度的一半;再落下,求它在第10次落地時,共經過多少米?第10次反彈多高?
h = []
total = []
a = 100

for i in range(1, 11):
    if i == 1:
        h.append(a)
    else:
        h.append(a * 2)
    a = a / 2
    total.append(a)

print('總高度:{0}'.format(sum(h)))
print('第10次反彈高度:{0}'.format(total[-1]))

打印結果:
    總高度:299.60937510次反彈高度:0.09765625
# 有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和
a, b, s = 2, 1, 0
for i in range(1, 21):
    s = s + a / b
    t = a
    a = a + b
    b = t
print(s)

打印結果:
    32.66026079864164
# 求1+2!+3!+...+20!的和。
t = 1
s = 0
for i in range(1, 21):
    t = i * t
    s = s + t
print(s)

打印結果:
    2561327494111820313
# 利用遞歸方法求9!

def a(k):
    if k == 0:
        sums = 1
    else:
        sums = k * a(k - 1)
    return sums

print(a(9))

打印結果:
    362880

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章