Python学习笔记1.0

目录

 

一、Python是一种通用的高级语言 

二、安装及一个小游戏

三、数字和运算

四、字符串

五、流程控制语句

六、函数

七、简单数据结构

7.1 列表

7.2 元组

7.3 字典

7.4 集合set

7.5 四种数据类型比较

八、时间和日期处理

九、python的文件操作

十、数据表示格式json

十一、异常处理


一、Python是一种通用的高级语言 

     编程工具包括编译工具(编译型语言:exe,elf)和解释工具(解释型语言:Python,脚本),解释型语言直接存为文本文件。

     Python特点:

  • 高级语言:易学习,易掌握
  • 解释型语言:易修改,易调试

二、安装及一个小游戏

    (1)安装:https://www.python.org/

         步骤略。

        在Windows的环境变量中添加python目录:

在cmd中输入:

path=%path%;C:\Python
(C:\Python 为python安装目录。)

按回车键即可。

(2)小游戏

import random

num = random.randint(1,100) #获得一个整数
is_done = False #是否猜中指针
count = 0 #玩家玩的次数

while not is_done:
    guess = int(input('请输入一个1~100的整数:'))
    if guess == num:
        is_done = True
    elif guess > num:
        print('大了,再猜猜!')
    elif guess < num:
        print('小了,再猜猜!')
    count += 1

print('恭喜你猜了{}次,猜对了!!!答案就是{}!'.format(count,num))

 

三、数字和运算

int, float,complex

(1) 变量

变量命令规则:

  1. 变量可以是字母,数字,下划线
  2. 变量不能使用有特殊意义的字母
  3. 变量的第一个字符不能是数字

type(变量名)可以以查看变量类型

 

四、字符串

  • str

(1)'...'或“....”,注意有时需要用转义字符\

(2)字符较多或跨多行使用'''....'''

  • unicode编码是python3默认编码:兼容ascii和emoji等世界大部分文字系统

编码字符转换:ord()  和 chr()

  • 变量 = 字符串  

len(变量名)  #计算字符串长度

变量名[下标]  #引用字符 ,下标从0开始计数,可以是负值(表示从右向左)

变量名[下标1:下标2]  #截取字符串区间

'moumouniu{}'.format()  #格式化字符串,将{}中的内容替换为format括号中的内容

五、流程控制语句

shell中每行代表一个语句,python自上而下执行,可以在也句尾+\分行写代码

  • 条件语句

(1)一般格式

if 条件表达式1

    子语句1             #缩进一般统一用四个空格

elif 条件表达式2:

    子语句2

else:

    子语句3

注意:tab键和空格键不能混用!    

(2)表达式的结果为非0时,满足条件

      float------非0.0

      complex------非0+0j

      str-------非空字符串

      bool------非0值True (推荐使用)

例题:对一个整数进行因式分解

#因式分解
x = input("输入一个(0,1000)的整数:")
x = eval(x) #函数用来执行一个字符串表达式,并返回表达式的值
t = x
result = []  #list:用于存放因式
if t == 1:   #判断输入是否为1,要不要判断得看题干输入数字的范围
    result.append(1)
else:
    i = 2
    while True:
        if t == i:
            result.append(i)
            break
        if t % i == 0:
            result.append(i)
            t = t/i
        else:
            i += 1
print(x,'=','*'.join(map(str,result)))#把列表的每一个元素用*连接起来
  • 循环语句

(1)while(条件满足则执行循环体内容)

while 条件控制语句:

    执行内容

else:#条件不满足时执行

    执行内容

(2)关键字:break(跳出当前循环)和continue(终止当前循环,直接进行下一个循环)

(3)for语句

for x in ....:  #...可以是数组,字典等可遍历的对象

(4)循环嵌套

 

六、函数

(1)格式

def 函数名(arg1,...):

    函数体

(2)可设置默认参数

在def 函数名(arg1,arg2= ,...),参数2的值作为这个函数的局部变量‘ ’

(3)def 函数名(*参数名)

参数名前加*,一次可以传入多个参数,存成元组()

(4)def 函数名(**参数名)

参数名前加**,一次可以传入多个参数,存成字典{}    ,只支持带关键词的参数如a=1

(5)递归例题

#1+2+...+n求和

def sum_it(n):
    if n == 0:
        return 0
    else:
        return n + sum_it(n-1)

七、简单数据结构

7.1 列表

(1)格式   list = [...,...,...]

列表的内容可以是字符串,浮点数,整型,列表

(2)特点

1集合性的数据类型

2列表是有序的 ----用下标索引访问,可增删改查

一些操作详见:菜鸟教程python3 列表

(3)列表的遍历

包括直接遍历列表元素和通过索引遍历列表

list1 = [1,2,3,4,5]
for i in list1:   
    print(i*2)     #直接遍历 列表元素

for i in range(len(list1)):
    print(a[i]*2)  #通过索引 遍历列表

(4)列表的截取和分片

slice = list[st:en]  (st:起始索引 en:最后元素索引+1  省略则表示起头/结尾

(5)例题:计算质数

思路:根号做法质数判定是看它只有1和它本身可以将它整除,也就是看因数,如100 的因数 1 100;2 50;4 25;...;10 10;由此可见,两个因数一个大于等于根号100,另一个小于等于根号100.所以只要找到从2到根号100里面有没有是100的因子即可。

#计算质数:只有1和它本身可以将它整除
import math

cal_range = int(input('please input the range to calculate the prime:'))
prime_nums = []     #计算出来的质数结果存在列表中

for i in range(cal_range + 1):    #+1是为了计算包括输入的那个数字
    if i == 0 or i == 1:
        continue

    num = 2
    while num <= math.sqrt(i):    #尝试所有可能的除数
        if i % num ==0:
            break
        else:
            num += 1

    if num > math.sqrt(i):
        prime_nums.append(i)

for i in prime_nums:
    print(i)

(6)列表推导式

通过推导式生成新列表

x = [1,2,3,4]

x1 = [i*i for i in x]      #  >>>x1 = [1,4,9,16]

(7)列表字符串转化

  • join():连接

'sep'.join(seq)         (sep:分隔符。可以为空        seq:要连接的元素序列、字符串、元组、字典)

  • split():分割
str.split(str="", num=string.count(str))

 

7.2 元组

(1)格式:tup = (...,...,...,)

(2)特点:

  • 元组与列表类似,不同之处在于元组的元素不能修改
  • 元组使用小括号,列表使用方括号
  • 元组支持列表操作
  • 元组执行效率相对较高(快)

(3)元祖和列表可转化

list( )和tuple( )

(4)zip()函数:把元素打包成元组

7.3 字典

(1)格式:dict = {key1:value1,key2:value2,....}

(2)特点:

  • 键必须是唯一的(不重复),但值则不必。
  • 值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
  • 字典是无序的

(3)访问字典元素:dict[key]  (输出为对应值,无该关键字则报错)

in操作符可检测字典中关键字是否存在

(4)遍历:

#遍历关键字
for key in x:    
    print(key,value)

#同时取出关键字的值
for key,value in x.items():
    print(key,value)


(5)get()函数

get(参数1,参数2)     (参数1:需要查找的key,   参数2:如果key不存在get返回的默认值)

(6)例题:

#词频统计:统计一段英文中,每个单词出现的次数

p = '''
If I could save time in a bottle

the first thing that I'd like to do

is to save every day until eternity passes away

just to spend them with you

If I could make days last forever

if words could make wishes come true

I'd save every day like a treasure and then

again I would spend them with you
'''

lines = p.strip().split('\n') #移除字符串头尾指定的字符,这里是换行符

words_cnt = {}    #创建一个字典,存储结果
for line in lines:
    line = line.replace(',','').lower()    #删除,;lower():转换成小写
    words = line.split(' ')    #用' '分割出每个单词
    for word in words:
        words_cnt[word] = words_cnt.get(word,0) + 1    #返回指定key的值
words_lst = list(zip(words_cnt.values(),words_cnt.keys()))    #字典转列表
words_lst.sort()    #对列表排队
words_lst.reverse()    #转置
for word in words_lst:
    print(word[1],words_cnt[word[1]])

(7)dict的内部实现方式:

dict是通过hash表实现的,dict为一个数组,数组的索引键是通过hash函数处理后得到的,hash函数的 目的是使键值均匀的分布在数组中。

7.4 集合set

(1)格式:set() 或者{...,....,....}    (注:空集合必须用set())

(2)可以求差集(-),交集(&),并集(|)

(3)集合内的元素是无序的

7.5 四种数据类型比较

列表list有序不唯一可更新只有值
元组tuple有序不唯一不可更新只有值
字典dict无序唯一可更新关键字和值
集合set无序唯一可更新只有关键字

 

八、时间和日期处理

  • time模块

time.time     #时间戳:从1970年1月1日0:0:0起到现在总共经过的秒数

time.localtime()     #当地时间 是个结构体

time.strftime()     #格式化时间,便于输出  逆过程为strptime()

  • datetime

date类型         #from datetime import date   year,month,day,today

time类型        #from datetime import time   hour,minute,second,microsecond

datetime类型       #from datetime import datetime      date+time

timedelta类型     #时间段或者时间差

  • calendar  (日历相关)

calendar.weekday()    #一个日期是星期几

calendar.isleap()    #判断闰年

 

九、python的文件操作

文件系统:使用目录结构组织文件数据的系统

(1)文件读取

f = open(r'D:\pythonlearning\test.py','r')    #参数1:文件路径 参数2:只读模式
with open(r'D:\pythonlearning\test.py','r') as f   #另一种文件读取方法,无需close
f.read()    #读取整个文件,字符为单位
f.readlines()   #读取文件内容(以行为单位),并返回一个列表 (每行以\n结尾)
f.readline()   #只读取并返回一行,反复调用可以返回下一行,整个文件读完继续调用怎返回空字符
f.close()    #关闭文件对象
f.tell()    #查看文件指针位置

(2)文件写

write()  只写入缓存区,若要存取到磁盘需用flush()函数

open():

        在‘r’模式下,若文件不存在则报错;

        在‘w’模式下,若文件不存在,则会新建一个文件;

        但是两种模式都无法解决目录不存在问题(用os.makedirs(r'新建目录路径')解决)

十、数据表示格式json

json(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。是半结构化数据。

json.dumps()      #json转换成python 编码 便于将数据文本形式存储

json..loads()        #将数据解码

对应关系:

 

十一、异常处理

  • SyntaxError语法错误
  • 异常:ZeroDivisionError   NameError    TypeError

注意防御性编程

(1)异常捕获处理

try:                               #try:监视语句是否发生异常
    guess = int(input('输入一个整数:'))
except ValueError:                 #若发生异常执行命令
    print('输入有误,请重新输入')
else:                             #没有异常是执行代码
    print('输入正常')
finally:                          #不管有没有异常都执行的代码
    print('.....')

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值