Python基础1——变量 输入 字符串 编码

0.关于python2和python3的区别

  • 1.解释器默认的编码方式不同

    • python2:ASCII编码
    • python3:UTF-8编码
  • 2.输入函数名不同

    • python2:name = raw_input('请输入姓名')
    • python3: name = input('请输入姓名')
  • 3.输出的语法不同

    • python2:print ""
    • python3:print()
  • 4.对整型数的处理不同

    • python2
      • 32bit机器上的整型占32bit,64bit机器上的整型占64bit,超出长度后会转换为long型
      • 9/2 = 4,整型除法只能保留整数位
      • 导入from __future__ import division 上述结果变成4.5
    • python3
      • 所有整型都用int,没有long
      • 9/2 = 4.5,整型除法保留所有
  • 5.range()方法

    • python2
      • xrange(num) 不会在内存中立即创建,而是在循环时边循环边创建,能节省内存
      • range(num) 在内存中立即生成所有的元素,消耗一定内存=
    • python3
      • range(num) 类似python2中的xrange(num),节省内存
      • list(range(num))
  • 6.定义模块

    • python2:文件中必须有__init__.py
    • python3:不需要__init__.py
  • 7.字典的键、值、键值对方法

    • keys() values() items()
      • python2:列表
      • python3:迭代器 可以循环但不可以索引取值
  • 8.map/filter

    • val = map(lambda x:x+100, [11, 22, 33])
    • py2:返回列表
    • py3:不直接生成列表,而是返回一个迭代器,可以循环但不可以索引,可强制list(val)转换后使用索引
  • 9.字符串类型不同

    • python3:str bytes
    • python2:unicode str
    • python3中的str、bytes分别与python2中的Unicode、str对应
  • 补充:解释器与编译器

    • 编译型(C C++ Java C# Go):代码写完后,编译器将其变成另外一个文件,然后交给计算机执行
    • 解释型(python php ruby javascript perl):写完代码交给解释器,解释器会从上到下一行行代码执行:边解释边执行
    • 编译型语言和解释型语言的区别类似于全文翻译VS实时翻译
      • 有时候运行软件会提示“xxx.dll文件缺失”,该文件就是编译后的结果。
      • 出现错误时
        • python代码要运行到某一句才知道错误(边解释边执行),所以错误之前的print可以正常输出
        • C语言代码必须通过编译才能知道错误,如果有错误,错误前方的语句中即使前方有printf也无法输出

1.变量与常量

  • 一个数据值(字符串、整数、列表等)在程序中可能被使用多次,为方便表示,可以为它起一个“别名”,叫做变量。
  • “别名”不是随便取的,变量名有两个要求
    • 变量名只能包含字母、数字、下划线
    • 数字不能开头且不能是python的关键字(皇帝名字中的字别人不能带)
  • 常量是不允许修改的值,Python中没有真正意义上的常量,只是执行了一种约定

2.数据输入

  • input输入得到的内容永远是字符串,如果要进行数据运算记得强制类型转换
a = int(input("输入一个整数:"))
print(a+3)

3.注释

"""
    在这里写多行注释  使用一对三引号
"""

# 在这里写单行注释

4.引号

  • 1.单引号
print('hello')
print('床前明月光,\n疑是地上霜')
  • 2.双引号
print("hello")
  • 3.三引号
print('''床前明月光,
疑是地上霜''')
print("""床前明月光,
疑是地上霜""")

5.字符串:本身不能修改或删除【不可变类型】

  • 5.1格式化
    • 1.%s
    name = input('姓名:')
    do = input('在干什么:')
    template = "%s在教室, %s."%(name, do,)
    
    template2 = "我是%s, 年龄%s, 职业%s."%("tom", "20", "吃饭",)
    
    • 2.%d
    template = "我是%s, 年龄%d, 职业%s."%("tom", 20, "吃饭",)
    
    • 3.%%
    name = 'tom'
    template = "%s现在手机的电量是100%%"%(name,)
    
  • 5.2常用方法
    • 1.特有方法
      • upper() 将所有英文字母转为大写,有返回值
      • lower() 将所有英文字母转为小写,有返回值
      • isdigit() 判断字符是否是数字,有返回值
      • strip() 移除字符串头尾指定的字符 (默认为空白符,也可以是换行符、制表符有),返回值
      • lstrip() 移除字符串左侧开头的特定字符(可以是换行符、制表符),有返回值
      • rstrip() 移除字符串右侧开头的特定字符(可以是换行符、制表符),有返回值
      • replace("被替换的字符/子序列", "要替换为的内容") 全部替换,有返回值
      • replace("被替换的字符/子序列", "要替换为的内容", 1) 只替换找到的第一个,有返回值
      • split("进行分割的基准字符") 将字符串按照基准字符进行分割,结果返回一个列表
      • split("进行分割的基准字符", 1) 1表示从找到的第1个目标字符处开始分割,结果返回一个列表,2个元素
      • rsplit("进行分割的基准字符") 表示从右边开始分割,结果返回一个列表
      • rsplit("进行分割的基准字符", 1) 表示从右边找到的第1个目标字符开始分割,结果返回一个列表,2个元素
      data = "吴用|root|wuyong@qq.com|hi"
      v2 = data.split("|", 2)
      print(v2)  # ['吴用', 'root', 'wuyong@qq.com|hi']  从右边找到的第2个"|"开始分割,列表中3个元素
      
      file_path = "/Library/Frameworks/code.cc/python/movie.mp4"
      ret = file_path.rsplit(".", 1)
      print(ret)  # ['/Library/Frameworks/code.cc/python/movie', 'mp4']
      
      • startswith("字符串") 判断是否以指定字符串开头,返回布尔值
      • endswith("字符串") 判断是否以指定字符串结尾,返回布尔值
      • format() 格式化字符串
      name = '我叫{0}, 年龄:{1}'.format('张三', 20)
      
      • encode('utf-8') 将字符串使用utf-8进行编码,可用来证明各种编码下单个汉字占据的字节数量
      name = '张三'
      v1 = name.encode('utf-8')
      v2 = name.encode('gbk')
      print(v1, v2)  # 证明了utf-8编码一个汉字用3B,而gbk编码一个汉字用2B
      
      • join() 循环每个元素,并在元素和元素之间加入连接符,不用写if,尤其要注意只用于字符串,不能用于列表等其他类型
      name = 'lisi'
      result = "**".join(name)
      
      • zfill() 填充0,常用于将二进制填充为8bit
      # 应用场景:处理二进制数据
      data = "101" # "00000101"
      v1 = data.zfill(8)
      print(v1) # "00000101"
      
    • 2.公共方法
      • 切片
        • v[1:5]
      • 索引
        • 索引取值下标从0开始
        • v = "oldboy" v1 = v[0] 下标非负表示从前往后取 v2 = v[-1] 下标为负数表示从后往前取
      • len() 计算字符串的长度
      • 步长
        • v[1:7:2] 第三个参数为步长
      • for循环
      • range(0, 10)
        • 生成一个数字列表 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
      • 成员运算 in

6.浮点型(float)

  • 1.在类型转换时需要,在浮点型转换为整型时,会将小数部分去掉。
v1 = 3.14 
data = int(v1)
print(data) # 3
  • 2.通过round函数保留小数点后N位
v1 = 3.1415926
result = round(v1,3)
print(result) # 3.142
  • 3.浮点型的坑【所有语言中】
# 项目中如果遇到精确的小数计算可以用decimal库
import decimal
v1 = decimal.Decimal("0.1")  # 以字符串的类型传入
v2 = decimal.Decimal("0.2")
v3 = v1 + v2
print(v3) # 0.3

7.数据类型转换

v2 = str(v1) # 数字转字符串
v2 = int(v1) # 字符串转数字
v2 = bool(v1) # 数字转bool值
v1 = 'alex' v2 = bool(v1) # 字符串转布尔值
v1 = True v2 = int(v1) # 布尔值转换其他
  • 1."" 0 转换bool之后是False
  • 2.or和and的短路特性
    • x or y: if x is False, then y, else x
      • 第一个值转换成布尔值如果是真 则value=第一个值
      • 第一个值转换成布尔值如果是假 则value=第二个值
      • 如果有多个or条件 则从左到右依次进行上述流程
    • x and y: if x is False then x; else y
      • 第一个值转换成布尔值如果是真 则value=第二个值
      • 第一个值转换成布尔值如果是假 则value=第一个值
      • 如果有多个and条件 则从左到右依次执行上述流程
    • not x
      • if x is False, then True, else False

8.编码

  • 1.ascii
    • 美国标准信息交换吗
    • 共128个字符,范围为0~127
  • 2.unicode
    • 也称万国码
    • ucs2 通过2B来表示的unicode
    • ucs4 通过4B来表示的unicode
  • 3.utf-8
    • UTF-8通常用于网络传输和硬盘数据存储
    • 表示中文字符时用3B代表一个汉字
    • 公司中爬虫等涉及编码的统一采用utf-8
  • 4.utf-16
    • windows电脑另存文件时的unicode选项实际上不是unicode,而是utf-16
  • 5.gbk
    • 亚洲国家用,包含21886个中文汉字和图形符号
    • 表示中文用2B
  • 6.gb2312
    • 亚洲国家用,包含6763个中文汉字
    • 表示中文用2B
  • 7.单位
    • 某编码中字符占据多少字节
    • 1024B = 1KB
    • K M G T E Z Y N D
    • 硬盘存储的大小本质上在于存多少个01代码
  • 8.补充
    • 以什么编码存储就要以什么编码打开,建议Pycharm设置成UTF-8编码
    • 在Python中,字符串的默认字符编码通常是Unicode(也称为UTF-16或UTF-32,取决于Python的内部实现细节)。Python 3.x 系列默认使用Unicode字符串,这意味着在Python 3中,所有的字符串都是Unicode字符串。
    • 在Python 3中,当创建一个字符串字面量(例如 "Hello, world!"),Python会将其视为Unicode字符串。这意味着可以存储任何Unicode字符,包括那些在ASCII中不存在的字符(例如,中文、阿拉伯文字等)。
      s = "你好,世界!"
      print(s)
      
    • 在Python 2.x中,默认的字符串类型是字节串(byte strings),而不是Unicode字符串。如果想要创建一个Unicode字符串,你需要使用前缀u或者使用unicode()函数。但在Python 2.x中,即使是加了u前缀的字符串,在Python内部仍然是以UTF-8或其他编码形式存储的Unicode对象。
      s = u"你好,世界!"
      print(s)
      s = unicode("你好,世界!", "utf-8")
      print(s)
      
    • 从Python 3开始,推荐的做法是直接使用字符串字面量,因为它们默认就是Unicode。如果想明确指明一个字符串用UTF-8或其他编码解码,可使用encode()和decode()方法
      # 将Unicode字符串编码为UTF-8字节串
      s_encoded = s.encode('utf-8')
      print(s_encoded)
       
      # 将UTF-8字节串解码回Unicode字符串
      s_decoded = s_encoded.decode('utf-8')
      print(s_decoded)
      
    • 综上,在Python 3中,默认的字符串类型是Unicode字符串。如果需要处理字节数据(例如读取或写入文件时),应该使用.encode()和.decode()方法来转换字节和字符串。在Python 2中需要更明确地区分和处理Unicode和字节串。在两种情况下,都可以指定使用特定的字符编码(如UTF-8)进行转换。
      v = 'alex' # unicode编码存储在内存,因为Python3中所有字符串都是unicode编码
      v = 'alex'.encode('utf-8') # 将字符串转换成字节(由unicode编码转换为utf-8编码)
      v =  'alex'.encode('gbk') # 将字符串转换成字节(由unicode编码转换为gbk编码)
      

9.案例

  • 1.请通过循环打印 1 2 3 4 5 6 8 9 10
count = 1
while count <= 10:
    if count != 7:
        print(count)
    count = count + 1

count = 1
while count <= 10:
    if count == 7:
        count = count + 1
        continue
    print(count)
    count = count + 1
  • 2.while...else结构
count = 1
while count < 10:
    print(count)
    count = count + 1
else: # 不再满足while后的条件时触发 或条件=False break强行跳出while循环时不执行else代码块
    print('ELSE代码块') 
print('结束')

count = 1
while True:
    print(count)
    if count == 10:
        break
    count = count + 1
else: # 不执行 因为while是强制退出 条件依然为True
    print('ELSE代码块') 
print('结束')
  • 3.验证码检测
check_code = 'iyUF'
code = input('请输入验证码%s:'%(check_code,))
if code.lower() == check_code.lower():
    print('登录成功')
  • 4.gitee + gitbash 同步代码
    • 4.1 建立仓库。登录Gitee账号,单击主页面右上角“+”新建仓库,输入仓库名称,“归属”选择“xxx组织”,“仓库介绍”写姓名,其余保持默认,单击“创建”。
    • 4.2 选择目录。进入D盘存储代码的目录“codes”,右键鼠标——Open Git Bash here调出命令行。
    • 4.3 初始化。在本地目录中创建一个新的Git仓库。
    指令:git  init
    
    • 4.4 关联用户。配置用户名和邮箱,因为后续在下载有权限验证的远程仓库代码的时候,需要验证身份,此时git会默认使用配置的用户名或者邮箱进行登录,然后手动输入密码。
    指令:git  config  --global  user.name  "17862731832"
    git  config  --global  user.email  "1733041816@qq.com"
    
    • 4.5 关联仓库。将本地仓库和远程仓库进行关联。
    指令:git remote add origin https://gitee.com/code_202206/22222222.git
    
    • 4.6 添加索引。将当前工作目录中的文件内容添加到索引(也称为暂存区),以准备进行下一次提交。
    指令:git add .
    
    • 4.7 设置标记。提交更改并写入提交信息。
    指令:git commit -m "homework"
    
    • 4.8 同步上传。将本地分支的更改推送到远程仓库的指定分支,此时Git Bash会缓冲一段时间,随后弹出登录的对话框,要求输入用户名和密码。
    指令:git push -u origin master
    
    验证:在Gitee主页上出现了最新的同步信息。
posted @ 2024-11-29 17:05  pycoder_666  阅读(71)  评论(0)    收藏  举报