python学习笔记

1.python书写规则

这是我的第一个python程序,用#号来做注释

tip 格式化代码可以同时按住command+option然后按L键

import time # 导入一个时间模块,python包含很多模块,都可以用import导入进来

print(time.time()) # 在屏幕上打印出1970年1月1日0:00 到现在经过了多少秒

if 10 - 9 > 0:
# 下面print是在if语句中,需要缩进,4个空格
print(‘10大于9’)

2.python基础数据类型

python数据类型

C02GL0VNMD6T:~ swang20$ python3 #官网安装了python3.10.7就可以直接执行python3进入
Python 3.10.7 (v3.10.7:6cc6b13308, Sep 5 2022, 14:02:52) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
#如果想看数据类型可以用type()函数
type(8)
<class ‘int’>
type(‘8’)
<class ‘str’>
type(“8”)
<class ‘str’>
type(True)
<class ‘bool’>
int(‘8’) #可以强制转换,将string类型转换成int类型
8
str(8) #将int转换成string
‘8’
bool(123) #数字转换bool类型时,非0返回True,0返回False
True
bool(0)
False

3.序列

3.1字符串
记录生肖,根据年份来判断生肖

chinese_zodiac = ‘鼠牛虎兔龙蛇马羊猴鸡狗猪’

print(chinese_zodiac[0]) # 因为字符串是序列所以可以利用索引来获取字符串中的值,下标从0开始
返回结果:鼠

print(chinese_zodiac[0:4]) # 可利用:号的方式获取多个值,0:4表示从索引0开始到4之前索引为3
返回结果:鼠牛虎兔

print(chinese_zodiac[-1]) # 从后往前访问可以用负号来获取
返回结果:猪

获取年份对应的生肖,思路是利用年份去除12取余数,利用下标去取值,2022是虎年,所以需要调整下字符串顺序

chinese_zodiac_new = ‘猴鸡狗猪鼠牛虎兔龙蛇马羊’

year = 2022
print(year % 12) # 返回的结果是6,所以需要调整字符串顺序对应到索引6是虎
print(chinese_zodiac_new[year % 12])

3.2字符串常用操作

记录生肖,根据年份来判断生肖

chinese_zodiac = ‘鼠牛虎兔龙蛇马羊猴鸡狗猪’
print(‘狗’ in chinese_zodiac) #判断狗是否在字符串中
返回结果:True
print(‘狗’ not in chinese_zodiac) #判断狗是否不在字符串中
返回结果:False
print(chinese_zodiac + ‘abcd’) #字符串连接
返回结果:鼠牛虎兔龙蛇马羊猴鸡狗猪abcd
print(chinese_zodiac * 3) #对字符串重复三次
返回结果:鼠牛虎兔龙蛇马羊猴鸡狗猪鼠牛虎兔龙蛇马羊猴鸡狗猪鼠牛虎兔龙蛇马羊猴鸡狗猪

3.2元组的定义常用操作
!元组与列表的区别是,元组定义不可以修改,列表定义是可以进行修改的

数字元组的比较

(4) > (5)
False
(4) < (5)
True

包含两个数字的元组比较的时候,下面实际比较的是120是否大于220

(1,20) > (2,20)
False
(1,20) < (2,20)
True

获取日期所对应的星座

这里利用元组来保存星座
zodiac_name = (u’摩羯座’, u’水瓶座’, u’双鱼座’, u’白羊座’, u’金牛座’, u’双子座’, u’巨蟹座’
, u’狮子座’, u’处女座’, u’天秤座’, u’天蝎座’, u’射手座’)

因为星座对应了一段时间,所以利用嵌套元组来表示,(1,20)表示1月20号

zodiac_days = (
(1, 20), (2, 19), (3, 21), (4, 21), (5, 21), (6, 22), (7, 23), (8, 23), (9, 23), (10, 23), (11, 23), (12, 23))

(month, day) = (8, 8)

这里的逻辑是,利用元组的大小比较,上面已经提到过

zodiac_day = filter(lambda x: x <= (month, day), zodiac_days) # 这个语法后面会讲到
这里的目的是获取(8, 8)在zodiac_days这个元组中比(8, 8)小的元素个数,然后利用个数作为索引去zodiac_name中获取星座
zodiac_len = len(list(zodiac_day)) % 12

print(zodiac_name[zodiac_len])

返回结果:狮子座

3.3 列表的定义与常用操作
!元组与列表的区别是,元组定义不可以修改,列表定义是可以进行修改的
a_list = [‘abc’, ‘xyz’]
a_list.append(‘X’) # 列表增加元素
print(a_list)
返回结果:[‘abc’, ‘xyz’, ‘X’]
a_list.remove(‘xyz’) # 列表删除元素
print(a_list)
返回结果:[‘abc’, ‘X’]

4.条件语句

a = ‘rxyz’
#这里注意 if后面判断语句之后用:号
if a == ‘xyz’:
print(‘a的值是xyz’)
elif a == ‘abc’:
print(‘a的值是abc’)
else:
print(‘a的值啥也不是’)

5.循环

5.1 for循环

chinese_zodiac = ‘鼠牛虎兔龙蛇马羊猴鸡狗猪’

for cz in chinese_zodiac:
print(cz)
返回结果:











range函数表示,13是终止条件,从0开始不包括13就到12

for i in range(13):
print(i)
返回结果:
0
1
2
3
4
5
6
7
8
9
10
11
12

可以指定从1开始到13,但是不包括13
for i in range(1, 13):
print(i)
返回结果:
1
2
3
4
5
6
7
8
9
10
11
12

可以利用%s来作为变量插入到字符串中,下面为插入写法

for year in range(2000, 2022):
print(‘%s 年的生肖是 %s’ % (year, chinese_zodiac[year % 12]))
返回结果:
2000 年的生肖是 猴
2001 年的生肖是 鸡
2002 年的生肖是 狗
2003 年的生肖是 猪
2004 年的生肖是 鼠
2005 年的生肖是 牛
2006 年的生肖是 虎
2007 年的生肖是 兔
2008 年的生肖是 龙
2009 年的生肖是 蛇
2010 年的生肖是 马
2011 年的生肖是 羊
2012 年的生肖是 猴
2013 年的生肖是 鸡
2014 年的生肖是 狗
2015 年的生肖是 猪
2016 年的生肖是 鼠
2017 年的生肖是 牛
2018 年的生肖是 虎
2019 年的生肖是 兔
2020 年的生肖是 龙
2021 年的生肖是 蛇

5.2 while循环
num = 5

while true表示下面内容一直循环也就是死循环,所以一般都配合if去判断然后利用break去跳出循环

while True:
print(‘a’)
num = num + 1
if num == 10:
break
返回结果:
a
a
a
a
a

import time
#break是直接循环结束,continue是跳过当前循环进入下一次循环
num = 5
while True:

num = num + 1
if num == 10:
    continue
print(num)
time.sleep(1)

并没有输出10,是因为跳过了
返回结果:
6
7
8
9
11
12
13

5.3 while循环嵌套if判断

获取日期所对应的星座

这里利用元组来保存星座
zodiac_name = (u’摩羯座’, u’水瓶座’, u’双鱼座’, u’白羊座’, u’金牛座’, u’双子座’, u’巨蟹座’
, u’狮子座’, u’处女座’, u’天秤座’, u’天蝎座’, u’射手座’)

因为星座对应了一段时间,所以利用嵌套元组来表示,(1,20)表示1月20号
zodiac_days = (
(1, 20), (2, 19), (3, 21), (4, 21), (5, 21), (6, 22), (7, 23), (8, 23), (9, 23), (10, 23), (11, 23), (12, 23))

用户输入月份和日期

input函数可以自己输入,默认是string类型,需要转成int类型

int_month = int(input(‘请输入月份:’))
int_day = int(input('请输入日期: '))

n = 0

while后面跟条件,不满足直接循环结束

while zodiac_days[n] < (int_month, int_day):
if int_month == 12 and int_day > 23:
break
n += 1
print(zodiac_name[n])
返回结果:
请输入月份:8
请输入日期: 8
狮子座

6.字典的定义与常用操作

dict1 = {}
print(type(dict1))
dict2 = {‘x’: 1, ‘y’: 2}

字典新增元素方式

dict2[‘z’] = 3
print(dict2)
返回结果:
<class ‘dict’>
{‘x’: 1, ‘y’: 2, ‘z’: 3}

字典的映射关系为key:value形式,可以利用for循环dict2.keys()取出每一个key值

for dict2_key in dict2.keys():
print(dict2_key)
返回结果:
x
y
z

7.列表推导式与字典推导式

7.1列表推导式

从1到10 取所有偶数的平方

常规写法
alist = []
for i in range(1, 11):
if i % 2 == 0:
alist.append(i * i)
print(alist)
返回结果:[4, 16, 36, 64, 100]

列表推导式写法
blist = [i * i for i in range(1, 11) if (i % 2 == 0)]
print(blist)
返回结果:[4, 16, 36, 64, 100]

7.2字典推导式
zodiac_name = (u’摩羯座’, u’水瓶座’, u’双鱼座’, u’白羊座’, u’金牛座’, u’双子座’, u’巨蟹座’
, u’狮子座’, u’处女座’, u’天秤座’, u’天蝎座’, u’射手座’)

#常规写法
z_num={}
for i in zodiac_name:
z_num[i]=0
#字典推导式写法
z_num={i:0 for i in zodiac_name}

8.文件的使用

8.1文件的内置函数

一个文件的操作流程,open—>write/read ---->close
将小说的主要人物记录在文件中

open是内置函数不需要import,如果是对文件写入后面需要加’w’,如果不加的话默认是读文件

‘w’ 写入时每次都是覆盖了原文件内容
file1 = open(‘name.txt’, ‘w’)
file1.write(‘诸葛亮’) # 写入的内容
file1.close() # 文件操作完必须要关闭!!!!
下面图表示多了一个name.txt文件里面内容是诸葛亮

读取文件内容
file2 = open(‘name.txt’)
print(file2.read())
返回结果:诸葛亮
file2.close()

追加文件内容
file3 = open(‘name.txt’, ‘a’)
file3.write(‘刘备’)
file3.close()
name.txt中内容为诸葛亮刘备

name.txt文件内容为
1 诸葛亮
2 刘备
3 关羽

file4 = open(‘name.txt’)
print(file4.readline()) #读取文件第一行,注意者利用的是readline没有s
返回结果:1 诸葛亮
file5 = open(‘name.txt’)
for line in file5.readlines(): #这里可以用readlines加for循环去遍历每一行打印
print(line)
print(‘====’)
返回结果:
1 诸葛亮

====
2 刘备

====
3 关羽

9.异常的检测与处理

错误异常类型

i=j # NameError: name ‘j’ is not defined
print()) # SyntaxError: unmatched ‘)’

a=‘123’
print(a[3]) # IndexError: string index out of range

d={‘a’:1,‘b’:2}
print(d[‘c’]) # KeyError: ‘c’

year=int(input(‘input year:’))

工作台输入abc的时候报错信息为ValueError: invalid literal for int() with base 10: ‘abc’

try:
year = int(input(‘input year:’))
except ValueError:
print(‘年份要输入数字’)
输出结果:
input year:abc
年份要输入数字

#如果想捕获多种异常可以:
except (ValueError,IndexError,NameError):

try:
print(1 / 0)
except ZeroDivisionError as e: #可以将错误详细信息打印出来
print(‘0不能做除数 %s’ %e)
#返回结果:0不能做除数 division by zero

try:
a = open(‘name1.txt’)
except Exception as e:
print(e)
finally: #不管是否有异常都执行finally的代码
a.close()

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值