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

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