Python学习日记
1.应用领域
Web开发
数据处理与分析
人工智能
自动化运维开发
云计算
爬虫
游戏开发
2.搭建开发环境
Python解释器(3以上)
实现输出
—— print("hello world!")
pycharm社区版本
配置主题颜色
file——setting——appearance——theme
创建新的文件
file——new——pyfile——name
3.Python的基础知识
变量:类似于标签
不需要提前定义变量名,直接赋值各种类型变量
命名规则
慎用l和O,避免混淆
必须以字母开头
标识符命名规则:
——由字母、下划线” "和数字组成。第一个字符不能是数字。
——不能使用Python中的保留字。
——区分字母大小写。number = 0,Number = 1,NUMBER = 2 ,是3个完全不同的变量。
——Python中以下划线开头的标识符有特殊意义,一般应避免使用相似的标识符。
保留字:
基本数据类型:
(1) 数字类型:
整数(正、负、零)
浮点数(整数.小数)
复数(实部+虚部)
(2) 字符串类型:
连续的字符序列 、不可变序列、
通常用 ' '、" "、'" "'、"" ""
形式上三引号序列’" "'可分布在多行,其余不可以
转义字符
算术运算符:
赋值运算符:
比较运算符:
逻辑运算符:
优先级:
同一优先级按照从左往右执行
注释:
单行: #
多行注释:三引号(‘’‘……’‘’)或者(“”“……”“”)
4. 函数学习
type(变量名) ——判断一个对象的数据类型
浮点数转换成整数:
int(小数)函数 ——直接省去小数部分
整数转换为浮点数:
float(整数)函数 ——小数点后加0
浮点数运算会有略微偏差,可以忽略不计
将整数转换为字符串
str(变量名)
在字符串中使用转义字符:(第一列是姓名,第二列是成绩)
score_list = 'Name\tScore\nMerkel\t90\nZweig\t95'
print(score_list)
#\t 制表位
#\n 换行
#\\ ====> 输出\(真实的\)
#\' ====> 输出单引号
算数运算
x%y #求余数
x // y #x/y的整数部分
x ** y #x的y次方
输入和输出
variable = input('提示文字')
#variable是变量
print(variable)
eg:
name = input('请输入您的名字:')
score = input('请输入您的成绩:')
print(name,',您的成绩是:',score,sep='',end='。')
##sep表示分隔符,美化输出
##end表示打印字符之后一什么结尾,print默认结尾换行
input输入对象永远是字符串
导入和使用库
import 库名
eg:
import random #导入随机库
5. 流程控制语句
程序结构:
左侧是顺序结构的流程图,编写完毕的语句按照编写顺序依次被执行;
中间是选择结构的流程图,它主要根据条件语句的结果选择执行不同的语句;
右侧是循环结构的流程图,它是在一定条件下反复执行某段程序的流程结构,其中,被反复执行的语句称为循环体,决定循环是否终止的判断条件
选择结构语句
##if语句
'''if表达式:
语句块'''
score = float(input('请输入你的成绩'))
if score >=60 :
print('success!!')
'''if 表达式:
语句块1
else :
语句块2'''
if score >=60:
print('success!')
else :
print("it's worse!" )
'''if 表达式1:
语句块1
elif 表达式2:
语句块2
……
else:
语句块n'''
循环结构语句
#for循环
'''for 迭代变量 in 对象 :
循环体'''
#其中,迭代变量用于保存读取出的值;对象为要遍历或迭代的对象,该对象可以是任何有序的序列对象,如字符串、列表和元组等;循环体为一组被重复执行的语句。
for i in [1,2,3]:
print(i)
#range()函数
range(start,end,step)
#end不可以省略,用于指定计数的结束值(不包括该值)
#step,指定步长
for i in range(1,101):
print(i,end=',')
#for循环遍历字符串
mystr ='既见君子,云胡不喜'
for word in mystr:
print(word)
while循环
'''while 条件表达式:
循环体 '''
#遍历1~100
n = 1
while n <= 100:
print(n,end=',')
n+=1
嵌套循环:
'''while 条件表达式1:
while 条件表达式2:
循环体2
循环体1 '''
'''while 条件表达式:
for 迭代变量 in 对象:
循环体2
循环体1 '''
'''for 迭代变量1 in 对象1:
for 迭代变量2 in 对象2:
循环体2
循环体1 '''
'''for 迭代变量 in 对象:
while 条件表达式:
循环体2
循环体1 '''
跳转语句:
跳出循环,for循环结束重复之前,或者while循环找到结束条件之前
两种方法来做到:
-使用continue语句直接跳到循环的下一次迭代。
使用break完全中止循环。
#break语句跳出最内层循环
'''while 条件表达式1 :
执行代码
if 条件表达式2:
break '''
#continue语句跳出最内层循环的剩余语句
'''while 条件表达式1 :
执行代码
if 条件表达式2:
continue '''
案例:
(1)用range()函数遍历水仙花数
编程打印输出100~ 999的所有水仙花数。水仙花数是指一个n位数(n≥3),其各位上的数字的n次幂之和等于它本身。
例如153是一个水仙花数,因为153=13+53+3^3.
#x//y表示x/y的整数部分
#x**y表示x的y次方
for i in range(100,1000):
bai=i // 100
shi=(i % 100) // 10
ge = i % 10
if bai**3+shi**3+ge**3 == i:
print(i,'是一个水仙花数')
(2)使用while循环折叠山峰的高度
世界最高山峰珠穆朗玛峰的高度为8848m。现在有- -张足够大的纸张,厚度为0.001m,请问折叠多少次,可以保证厚度不低于珠穆朗玛峰的高度。
start = 0.001 #纸张初始高度
h = 8848
n=0 #初始折叠次数
while start<h:
n+=1
start = start*2
print('0.001m的纸张需要折叠',n,'次,可以保证厚度不低于珠穆朗玛峰')
(3)打印斐波那契数列
a=1
b=1
c=int(input('请输入一个大于2的正整数:'))
while a<c:
temp = a #暂存一下 ,也可以精简为a,b=a+b,a
a = a+b
b = temp
print(b,end=' ')
(4)打印乘法表
#普通
for i in range(1,10)
for j in range(1,i+1)
print(j,'*',i,'=',i*j,end='\t')
print()
(5)制作猜数游戏
由计算机生成一个1到100的随机数,并由用户进行猜测,如果猜测正确,显示祝贺语,猜测错误,提示是过大还是过小。
import random
ans = random.randint(1,100) #产生随机数
while Ture :
x=input('请输入1~100的整数:')
if int(x)==ans:
print('congratulations!!')
break
elif int(x)>ans:
print("sorry,it's bigger than ans!")
else:
print("sorry,it's not enough!")
6.列表
Python中数据容器:
列表
元组
字典
集合
序列:
有序序列:用于存储多个值的连续内存控件,按一定顺序排序,每个值(元素)分配一个数字(索引/位置)——列表、元组、字符串
无序序列:不支持索引、切片、相加和相乘操作——集合、字典
索引可以为负数
索引切片
切片操作可以访问一定范围内的元素——通过切片操作可以生成一个新的序列,实现切片访问。
sname[start:end:step]
sname:表示序列的名称
start:表示切片开始的位置(包括该位置),默认为0
end:表示切片截止的位置(不包括该位置),默认是序列长度
step:步长,默认为1,可以省略,最后一个冒号也省略
序列相关计算:
相加:两个序列首尾连接
乘法:数乘——序列的元素变成原来的n倍
检查是否为序列成员:使用in关键字
计算序列长度的最大、最小值:len()计算长度;max()最大;min()最小
(1)列表
概念:列表由一系列按特定顺序排列的元素组成,它是Python中内置的可变序列。在形式 上,列表的所有元素都放在一对中括号”[] "中两个相邻元素之间使用逗号”,"分隔。在内容上,可以将整数、实数、字符串、列表、元组等任何类型的内容放到列表中,并且在同一个列表中,元素的类型可以不同,因为它们之间没有任何关系。
a. 创建列表:
用赋值运算符直接创建
listname = [element 1,element 2,...,element n]
使用list()函数创建
使用list()函数可以直接将一个可以迭代的对象, 如range对象,字 符串,元组等转换为列表。
listname = list('迭代对象')
eg: print(list(range(1,101)))
b. 删除列表
del listname
c. 访问列表元素
可以通过索引和切片访问列表部分元素
索引:print(listname[i])——访问列表的第i个元素
切片:print(listname[i:j])——访问第i到j-1位置的元素,可以设置步长,当步长为负数,列表的顺序倒过来
d. 遍历列表
直接使用for循环实现:直接使用for循环遍历列表,只能输出元素的值。
使用for 循环和enumerate() 函数实现:可以实现同时输出索弓|值和元素内容
enumerate()返回可迭代的对象,索引和索引指向的元素
for i in range(length(listname)):
print(i,listname[i])
#更简单的方法
for i,j in enumerate(listname):
print(i,j,sep=':\t')
#用冒号分隔
e. 添加列表元素
添加一个元素:append()在列表末尾追加元素
listname.append(obj)
obj为要添加到列表末尾的对象
添加一个列表到另一个列表:可以用“+”运算符,但是速度比较慢;一般采用extend()方法
listname.extend(seq)
listname为原列表,seq为要添加的列表。执行结束,seq内容添加到listname后面
poet_1=['李白','白居易','杜甫']
poet_2=['苏轼','陆游']
print(poet_1)
#添加poet_2到poet_1
#逐个
for i in poet_2:
poet_1.append(i)
print(poet_1)
#直接合并/+
print(poet_1+poet_2)
poet_1.extend(poet_2)
斐波那契数列
lst=[1.1]
n= int(input('请输入一个大于2的整数:'))
while True:
if (lst[-1]+lst[-2])>n:
break
lst.append(lst[-1]+lst[-2])
print(lst)
f. 修改和删除列表元素
修改:通过索引修改
删除:
通过索引,利用del实现
del listname[索引]
根据元素值删除,remove()的方法
listname.remove(obj) 有多个值相同的元素时,只会删除第一个
g. 获取指定元素出现的次数
使用count()方法
listname.count(obj) 只能精确匹配,即 不能是元素值的一部分
删除重复元素,重复的数据只保留一个
for i in range(listname.count('元素值')-1):
listname.remove('元素值')
h. 获取指定元素首次出现的下标
index()方法获取首次出现的位置(索引)
listname.index(obj)
第i次出现的索引的位置:
n=listname.index(obj,i-1)
j. 统计数值列表中个元素的和
sum(iterable[,start])
iterable:表示要统计的列表
start:表示统计结果从哪个数开始(索引)
k. 对列表元素进行排序
(1)sort() 方法:对原列表中的元素进行排序,排序后原列表的元素顺序
发生改变
listname.sort(key=None,reverse = False)
key:用于指定版本规则。key=str.lower:表示不区分大小写
reverse:可选参数。=TRUE时,降序;=FALSE时,升序。默认升序
(2)sorted()方法:原列表的元素顺序不变,产生一个副本,可以赋值给另一个新的列表输出。
sorted(iterable,key=None,reverse=False)
案例
(1)输入并处理班级成绩:
成绩储存在一个列表中;
可以多次输入成绩,直到按-1截止;
对成绩进行从高到低的排序;
输出班级的人数,最高分,最低分和平均分。
score_list = []
#利用while循环进行成绩录入,直到-1结束
while True:
score = float(input('请输入成绩,输入-1结束:'))
if score == -1:
break;
#当输入不是-1时,将score放入列表当中
score_list.append(score)
#对列表成绩进行降序排序
score_list.sort(reverse=True)
print(score_list)
#人数
n=len(score_list)
#最大、最小值、平均分
ma=score_list[0]
mi=score_list[n-1]
avg=sum(score_list)/n
print('考试人数:',n)
print('最高分:',ma,'最低分',mi,'平均值',avg)
(2)计算某天是该年的第几天
y = int(input('请输入四位数的年份'))
m = int(input('请输入月份'))
d = int(input('请输入日期'))
ans = 0
#md数组存储每月的天数
md = [31,28,31,30,31,30,31,31,30,31,30,31]
#用索引取出月份对应的天数
for i in range(m-1)
ans+=md[i] #ans此时为所输入的月份之前的月份的天数总和
ans+=d
#判断是否是闰年(能不能被400整除/可被4整除且不能被100整除),二月29天,月份需要大于2才考虑是不是闰年
if m>2 and (y/400==0 or (y/4==0 and y/100!=0))
ans+=1
print('该天是该年的第',ans,'天')