Python的基础

本文内容:数据类型、条件判断语句、循环语句、字符串格式化、运算符、编码、切片、深浅拷贝、代码块、小数据池、相对路径和绝对路径


 

数据类型:整型(int);字符串(str) ;布尔型(bool);列表(list);元祖(tuple);字典(dict);集合(set)

bool:

  1. False:    ()        (  )       ("")      []      [  ]       {}      {   }      None      0

  2. True:    非0   (“”,) (“   ”)     [“”]       [“”,]       {“”}       {“”,}

Python2x 和 Python3x 的区别:

  1. print在Python2x中不用加括号就可以,在Python3x中必须加括号
  2. Python3x中可以直接使用中文,因为3的编码格式是utf-8,而2x中部可以直接使用中文,需要在文件顶头配置——# -*-coding:utf-8 -*-,才可以使用,因为2x使用的是ASCII编码格式
  3. 2x中input()方法,用户输入的是什么类型,获得到的就是什么类型,如果想要同3x一样,就需要用到raw_input()方法;3x中的input()方法获得到的都是str类型
  4. 2x的源码比较混乱,各种语言进行编写,不利于后期维护;3x的源码大部分都是由Python来编写,后期维护便利
  5. 除法运算,Python2的除法得到的结果是一个int类型的数值,而Python3的出发得到的结果是一个floor类型的数值,带小数点的
  6. Python2中xrange对象等同于 Python3中的range 对象,如果直接print(range(0,10)),则输出结果是 range(0,10)..但是在Python2中的range方法不同,如果直接print(range(0,10)),则输出结果是 遍历从0到9,依次输出

 

条件判断语句:

  • If
  1. if 条件:结果

  2. if 条件: 结果    else : 结果

  3. if 条件: 结果    elif : 结果

  4. if 条件: 结果    elif : 结果   else : 结果

n = 1
if n<1:
    print("n<1")
elif n>1:
    print("n>1")
else:
    print("n=1")

循环语句:

  • while

while 条件 :结果

while True:
    print("这是一段Python代码")
  • for

for 变量名 in 可迭代变量 :  结果

demo = "这是一个例子"
for word in demo:
    print(word, end=" ")    #end=" "  目的是为了不换行
  • 结束循环方式

1. break   结束循环。

number = 1
while number < 10:
    print("这是一段Python代码")
    break
    print("这一句代码执行不了")

# 这是一段Python代码

2. continue   中止本次循环,进入下一次循环

number = 1
while number <= 3:
    if number == 1:
        number += 1
        continue
        print("这段代码不会输出")
    print(str(number) + "--这是一段代码")
    number += 1
    
# 2--这是一段代码
# 3--这是一段代码

3.条件控制   当不满足while之后的条件后,将结束循环

number = 1 
while number < 3:
    print(number)
    number += 1

# 1
# 2

字符串格式化:

1.格式: msgs = "我的名字是%s,我学习Python已经%d个月了" % (username, times)

username = "火星人"
times = 12
msgs = "我的名字是%s,我学习Python已经%d个月了" % (username, times)
print(msgs)

# 我的名字是火星人,我学习Python已经12个月了

2.格式: msg = f"我的名字是{username},我学习Python{times}个月了"

username = "火星人"
times = 12
msgs = f"我的名字是{username},我学习Python已经{times}个月了"
print(msgs)

# 我的名字是火星人,我学习Python已经12个月了

3.格式:str的format()方法

demo = "我是{},我喜欢{}".format('小王','Python')
# demo = "我是{0},我喜欢{1}".format('小王','Python')
# demo = "我是{name},我喜欢{likes}".format(name = '小王', likes = 'Python')

# 我是小王,我喜欢Python

运算符:

1.算术运算符: +  -  *  /  %(取余) **(求幂) //(取整)

2.比较运算符:    <   >   <=    >=    ==    !=

3.赋值运算符:   +=    -=     *=     /=     **=     //=

4.逻辑运算符:  and      or      not     -执行顺序- not > and > or

(注释:and —— 前后都是真,结果才为真;当前后都是真时,取后者,当前后都是假时,取前者,当前后有一个是假,就取假

           or —— 只要有一个是真,结果就取真;当前后都是假时,取后者,当前后都是真时,取前者)

5.成员运算符 : in        not in

编码:

  1. ASCII——由美国创建,不支持中文,英文由一个字节码标识
  2. GBK——国码,由中国创建,英文由一个字节码表示,中文是由两个字节码表示
  3. Unicode——万国码,英文与中文都是由两个字节码表示,后期时,部分中文由四个字节码表示
  4. utf-8——可变长度的万国码,美国是一个字节码,欧洲是两个字节码,亚洲是三个字节码
文件写完但是还未保存时,系统以unicode的编码格式保存在内存
使用encode(‘编码’)方法,则是将内存中的 文件,以指定编码格式保存在 硬盘中
decode(‘编码’) 方法,则是以相同的编码格式 从硬盘中去读取

切片:

格式:

[开始的位置 : 结束的位置(不包括): 步长(每次跨几个索引取值)]

注意:从左到右读取,索引从 0 开始,从右往左读取,索引从-1开始,

当步长为正数时,stop_index的位置必须在star_index的右边

当步长为负数时,stop_index的位置必须在star_index的左边

demo = "Python"
demo_1 = [:]   #表示全部字符串
demo_2 = [1:]  #表示从索引 1 到结束
demo_3 = [::-1]  #表示反方向输出该字符串
demo_4 = [1:5:2] #表示截取从索引1到索引5,但不包括索引5,每隔两个步长取一个数值
demo_5 = [-1:-4:-1]  #结果为 noh
S = [1,2,3]
S[0:2] = “你好”
# 输出结果为: ['你','好',1,2,3]

# -- 以下是 假设类的 源码 --
def a(star_num, end_num, old_list, old_str):
    # s = old_list   #切片修改。。。  切片加步长,长度要统一
    new_str = list(old_str)   #将字符串转换为列表
    new_str.reverse()         #将列表反转
    num = 0
    while num < len(old_list):
        if star_num <= num < end_num:
            old_list.remove(old_list[num])  #将满足切片的范围的内容删除
        num += 1
    for sss in new_str:
        old_list.insert(star_num,sss)   #将反转后的字符串中的每个字符添加到原来的列表
    return old_list
 
s = [1,2,3,4]
s_str = "你好asd"
li = a(1,2,s,s_str)
print(li)

 

 

深浅拷贝:

浅拷贝:只拷贝一层。除了第一层其余用的都是相同的引用地址
深拷贝:全部拷贝    import copy   ---> copy.copy()
is 和 == 的区别:
is 比较的是内存地址是否相同,
== 比较的是值是否相同, is只要是相同,那么==肯定也是相同

代码块:

  1. int(float):任何数字在同一代码块下都会复用。

  2. bool:True和False在字典中会以1,0方式存在,并且复用。

  3. str:几乎所有的字符串都会符合缓存机制,具体规定如下(了解即可!):

非乘法得到的字符串都满足代码块的缓存机制:

乘数小于等于1的时候,任何字符串满足代码块的缓存机制:

乘数>=2时:仅含大小写字母,数字,下划线,总长度<=20,满足代码块的缓存机制:

 

小数据池

  1. 数字在 -5~ 256    之间,会使用小数据池里,不会重新创建新的
  2. 字符串的长度为0或者1,默认都采用了驻留机制(小数据池)。
  3. 字符串的长度>1,且只含有大小写字母,数字,下划线时,才会默认驻留
  4. 乘数小于等于1时:仅含大小写字母,数字,下划线,默认驻留。含其他字符,长度<=1,默认驻留。
  5. 乘数>=2时:仅含大小写字母,数字,下划线,总长度<=20,默认驻留。
  6. 指定驻留。没用过。

 

绝对路径与相对路径:

对于电脑中存在的 文件    D:/BianCheng/python_test/text.txt

假设 python_test 这个文件夹内有另一个 文件夹 名为 s19 ,在内部有一个文件,名为demo.py

假设 要在demo.py 文件中去往 text.txt文件中写入内容:

绝对路径: D:/BianCheng/python_test/s19/text.txt

相对路径: ../text.txt

                在相对路径中,将本文件的绝对路径与目标文件的绝对路径进行对比,然后把本文件中相同的部分改为 ..

位于同级目录的话,直接文件名即可
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值