0
点赞
收藏
分享

微信扫一扫

学习Python语言-代码篇

独孤凌雪 2022-04-23 阅读 70
python

前言

随着科技时代的飞速发展,Python语言的需求量和普及度越来越广,对初学者十分友好的语言,它的语法清晰易读、
面向对象、可移植性、可扩展性,跨平台的开源编程语言,支持在Windows、Mac和Linux等平台上运行。

一、Python语言是什么?

Python是一门解释型、面向对象、带有动态语义的高级程序设计语言,也称为“解释型语言”或“胶水语言”。

二、编程开发环境

1.集成开发环境:Python 3.8.4

链接:https://pan.baidu.com/s/13a_KnPPTUicm1b2434AvdQ
提取码:dgsh

2.编辑器:Pycharm 2022.1

链接:https://pan.baidu.com/s/1kXE0ur5YK5_NrE02_-BB9Q
提取码:d4mh

二、实战示例学习

1.输出Welcome to the World of ESP

print()函数:用于打印输出
print(*objects, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)
objects:表示输出的对象。输出多个对象时,需要用逗号间隔。
sep:用来间隔多个对象。
end:用来设定以什么结尾。默认值为\n(换行符),可换成其他字符。
file:写入的文件对象。
flush:用于刷新(清除)内部缓冲区/流,两个值(True/False)。

print('Welcome to the World of Python')

2.求最大值

for 迭代变量 in 字符串|列表|元组|字典|集合:
迭代变量:用于存放序列类型变量中读取出来的元素,一般不手动赋值
range()函数:创建一个整数列表,一般用在for循环中。
语法:range(start,stop[,step])
参数说明:
start:计数从start开始(0~n-1)。例如range(n)等价于range(0,n-1)
stop:计数到stop结束。例如:range(0,n)等价于[0,1,…,n]
step:步长,默认为1.例如:range(0,n)等价于range(0,n,1)

List = [33, 11, 66, 99, 55]       #直接定义   列表List
List1 = [0 for i in range(4)]   #间接定义   range():随机函数
Max = List[0]	                #定义变量Max用来存储值,初始值赋值为列表中任意一个值
#print(Max)
for i in List:                  #遍历列表
    if i > Max:                 #比较相邻两个数的大小
        Max = i                 #将i的值赋给MAX
print("这个列表中最大值为:", Max)  #输出MAX值

3.最大公约数 & 最小公倍数

最大公约数

#greatest common divisor
#辗转相除法
List = []
number1 = input("请输入第一个数字\n")
number2 = input("请输入第二个数字\n")
m = max(number1,number2)
n = max(number1,number2)
r = number1%number2
while r != 0:
    m=n
    n=r
    r=m%n
print(number1,"和",number2,"的最大公约数为",n)

4.冒泡排序

# 冒泡排序算法例子
# def函数 定义一个新函数(bubbleSort函数,arr为一个对象)
def bubbleSort(arr):
    # len()函数获取对象的长度
    # 对象可以为(字符串,列表,元组)
    n = len(arr)

    # 遍历所有数组元素
    # range()函数表示生成一个列表对象 从下标0开始

    for i in range(n):

        # Last i elements are already in place
        for j in range(0, n - i - 1):
            # 从小到大排序
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
                
# arr数组赋初始值
arr = [22, 11, 88, 66, 55, 44, 77, 99, 44, 33]

bubbleSort(arr)

print("BubbleSort排序后的数组:")
# 依次输出排序后的数组
for i in range(len(arr)):
    print("%d" % arr[i], end=','),
# 去掉最后最后一个逗号
print(arr[-1])

# range()函数补充
# 只有一个参数时:表示下标0到这个参数内的所有整数,不包含参数本身
# 有2个参数时,第一个参数,表示左边界,第2个参数表示右边界,含左不含右
# 有三个参数时,第一个表示左边界,第二个表示右边界,第三个表示步长step,
# 即两个整数之间相差的数,含左不含右

5.斐波拉契数列

判断法:

#CalFibonacci.py
#F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)
#迭代法
def CalFibonacci():                      		#def函数 定义一个新函数(CalFibonacci函数)
    number=input("请输入大于1的范围数\n")    	#number为字符串数据类型
    i,j=0,1                              		#赋值 i=0 j=1
    if int(number)<0:                    		#输入的数字小于0,重新输入
        print("请您重新输入数字\n")
    elif    int(number)==1 or int(number)==2: 	#输入的数字为1,2,输出1
            print(i)
    else:
        while i<int(number) and j<int(number): 	#输出F(1)到F(n-1)项的值
            print(i,end=',')            		#依次输入CalFibonacci数列
            i,j=j,i+j                   		#该语句从右至左执行 等价于i=j,j=i+j,i+j
        print(i)                       			#输出F(n)项的值
CalFibonacci()                          		#函数调用

递归法:
① append()函数:
用在列表末尾添加新的对象。
② 语法:
List.append(object)
③ 参数:
List:列表对象名;
object:添加到列表末尾的对象。
④ 返回值:
append()函数无返回值,但是会修改原本列表里的值。
⑤ 代码示例:

#CalFibonacci子函数部分
def CalFibonacci(n):                	#def函数 定义一个新函数(CalFibonacci函数,n为一个对象)
    if n <= 0:                      	#判断输入值小于等于0
        return 0                    	#返回0
    elif n == 1 or n == 2:          	#判断是否为F(2)和F(3)项
        return 1                    	#斐波拉契数列二,三项都为1
    else:								#当最近的if不成立时,执行下面这段语句
       return CalFibonacci(n-2)+CalFibonacci(n-1)   #F(n)=F(n-2)+F(n-1)

#main主函数部分
number=input("请输入大于1的范围数\n") 	#number为字符串数据类型
x=int(number)                       	#将number强制类型转换为整型 赋值给变量x
List = []                           	#定义一个对象名为List的空列表
for i in range(x):
    List.append(CalFibonacci(i))    	#append()函数:列表末尾添加新的对象
    if List[i] > x:                 	#当列表新增对象大于输入值number时
        break                       	#终止for循环
for i in range(len(List)-1):        	#遍历List列表
    if i==0:
        print(List[i], end=',')    		#输出F(1)项
    elif i>0 and List[i-1]+List[i]<x:
        print(List[i], end=',')     	#输出F(2)到 F(n-1)项
    else:
        print(List[i])             		#输出F(n)项

6.水仙花数 & 玫瑰花数

水仙花数的概念:指一个3位数,它的每一位上的数字的3次幂之和等于其本身(100~1000之间)
pow()函数:python中的内置函数,它接收两个参数,x和y,pow(x,y)函数返回的是x的y次方的值。
语法:pow(1,3) 等价于 1的三次方幂
① 水仙花数代码:

#narcissistic number
#水仙花数的概念:指一个3位数,它的每一位上的数字的3次幂之和等于其本身
#范围:(100~1000)
#例如:153  1*1*1+5*5*5+3*3*3=153
print("水仙花数如下所示:")
for i in range(1,10):                   		#遍历1~9 最高位(百位)不能为0
    for j in range(0,9):                		#遍历0~9 次高位(十位)
        for k in range(0,10):           		#遍历0~9 最低位(个位)
            sum1 = pow(i,3)+pow(j,3)+pow(k,3)   #例如:1*1*1+5*5*5+3*3*3=153
            sum2 = i*100+j*10+k         		#例如:1*100+5*10+3=153
            if sum1 == sum2:					#判断两式相等,输出水仙花数
                print("水仙花数:%3d"%(sum1))

② 玫瑰花数代码:

#number of four roses
#四位玫瑰花数的概念:指一个4位数,它的每一位上的数字的4次幂之和等于其本身
#范围:(1000~10000)
#例如:1634  1*1*1*1+6*6*6*6+3*3*3*3+4*4*4*4=1634
print("玫瑰花数如下所示:")
for i in range(1000,10000):
    #方法1
    a = int(i%10)           #个位
    b = int(i/10%10)        #十位
    c = int(i/100%10)       #百位
    d = int(i/1000)         #千位
    sum1 = pow(a, 4) + pow(b, 4) + pow(c, 4) + pow(d, 4)
    # 方法2
    # sum1 = pow(int(i%10),4) + pow(int(i/10%10),4) + pow(int(i/100%10),4) + pow(int(i/1000),4)
    if sum1 == i:
        print("玫瑰花数:%4d"%(sum1))

7.回文数

① 什么是回文数?

指数字从左至右数和从右至左数完全相等,例如121 232 353…

# 判断输入的数字是否为回文数(palindromic number)
# 回文数指 该数字从左至右 = 从右至左   例如 121  232 101...
# 0~9都是回文数
List = []                         	# 定义一个对象名为List的空列表
num = input("请输入大于0的数\n")     # number为字符串数据类型
number = int(num)                   # 强制类型转换
x, y , z = 0, 1 , 1                 # 赋变量x,y初值x=0 y=1
# 将输入数按个位~N位反向排序
str1 = []
for i in range(len(num)):           # 将输入数num依次存入List列表
    str1 = List.append(number%10)   # append()函数:列表末尾添加新的对象
#   print(List[i], end=' ')         # 按输入数从N位~个位依次输出
    number = number // 10           # 缩小10倍
print('\nnum=', num)
for j in range(len(List)-1):
    y *= 10
for i in range(len(List)):          # 遍历List列表
    x += List[i] * y                # 列表每个元素依次*10求和赋值给X
    y /= 10                         # 增大10倍
print('x=', int(x))
if int(num) == int(x):              # 判断输入数num是否等于X
    print("\nTrue")
else:
    print("\nFalse")

8.九九乘法口诀表

一、什么是format函数?

它是一种字符串格式化的方法,主要是用来构造字符串。
基本语法:通过 {} 和 : 来代替以前的 % 。在 {} 符号操作过程中,每一个 {} 都可以设置顺序,
分别与format的参数顺序对应,如果没有设置{}下标,默认重0开始递增。
(1)语句1:print("{:.5f}".format(3.1415926)),它的输出为3.14159,表示保留小数点后五位有效数字。
(2)语句2:print("{1} {0} {2} {1}".format(“hello”, “world”,“of ESP”)),它的输出为’world hello of ESP world’,注意下标位置。

#multiplication table
print("N阶乘法口诀表")
num = input("请输入一个数字\n")
for i in range(1,int(num)+1):
    for j in range(1,i+1):
        print("{}*{}={:1d}".format(j, i, i * j), end=" ")
    print('\n')

9.判断是否为闰年,这一天在该年份的第几天

1、闰年条件:
年份能被400整除
年份能被4整除 同时 不能被100整除

#For a leap year
#判断输入的日期,是否为闰年,并且在当前年份的第几天
#例如 2000 12 31      是闰年   在当前年份的第366天
#例如 2001 12 31      不是闰年 在当前年份的第365天
month_day = [31,28,31,30,31,30,31,31,30,31,30,31]       #1~12月的天数
sum_day = 0                                             #总天数
year  = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day   = int(input("请输入天数:"))

def Leap_Year(year):              #闰年判断条件:year能被400整除 或者  Year能被4整除 和 不能被100整除
    if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
        print(year,"年是闰年")
        month_day[1] = 29         #是闰年时,将2月天数改为29天
    else:
        print(year,"年不是闰年")

Leap_Year(year)                   #调用判断闰年函数

for i in range(int(month)-1):     #遍历月份列表
    sum_day += month_day[i]       #累加输入月份前总天数
sum_day += int(day)               #加当月天数
print("{}-{}-{}在这一年的第{:2d}天:".format(year, month,day,sum_day))

10.天天向上的力量

天天向上的力量:指周一到周五每天都在学习进步,周末松懈玩耍,累积一年后的结果为多少?

#天天向上的力量
#当每天进步1%,平年一年后的累积进步结果为 (1+1%)^365  闰年:(1+1%)^366
#假设周一到周五在进步,周六周日在退步(假设1月1号为周一)
year    = input("请输入你想从哪一年开始进步,如2023\n")
dayrate = input("请输入一个每天进步的速度,如1%请写0.01\n")
dayback = input("请输入周末每天松懈的速度,如1.5%请写0.015\n")
year1   = eval(year)
day_rate = eval(dayrate)
day_back = eval(dayback)
step_speed = 1              #退步的速度积累值
if (year1 % 4 ==0 or year1 %100 !=0) and year1 % 400 ==0:
    day_number = 366
    print("恭喜你比平年多一天!")
else:
    day_number = 365
    print("恭喜你比闰年少一天!")

for i in range(1,day_number+1):                 #从第一天开始
     # print(i,end=',')                         #遍历输出每一天
     # if i%30==0:                              #30个元素回车换行一次
     #    print()
     if (i%6==0 or i%7 ==0) and day_back != 0:  #周末时间,开始玩耍
        step_speed *= pow(1+day_back,1)         #oh my gad,知识量下滑
     else:
        step_speed *= pow(1+day_rate,1)         #学习时间,开始努力
result = step_speed                     #检验结果的时间到啦
#result = pow(1+day_rate,day_number)     #That's nice,知识量增加
#print(day_back)
print("周一到周五进步{0:%}的情况下,周末松懈{1:%}的情况下,\n一年后对应的累积效果为初始状态的{2:.5f}倍".format(day_rate,day_back,result))

总结

刚开始学习python,记录下自己的知识收获,面向大海,春暖花开!
在这里插入图片描述

举报

相关推荐

0 条评论