day02_python快速入门

1. 编码

当我们在电脑上输入一段话,并保存到电脑中,在计算机中则会将中文内存转换为01010100100101...这样的形式,最终存储到硬盘上。

在计算机中有这么一个编码的概念(密码本)。

王		-> 	01010100101 010
敏		-> 	010010110 10101
...

在计算机中有很多种编码

每种编码都有自己的一套密码本,都维护着自己的一套规则,如:
	utf-8编码:
				王		-> 101010001(乱写的) 
				桂		-> 110101010(乱写的)
    gbk编码:
				王		-> 010101010(乱写的) 
				桂		-> 010100010(乱写的)
	所以,使用不同的编码保存文件时,硬盘的文件中存储的0/1也是不同的		

注意事项:以某个编码的形式进行保存文件,以后就要以这种编码去打开这个文件,否则就会出现乱码。

2. 编程初体验

  • 编码必须要保持一致:保存和打开一致,否则会出现乱码
  • 默认Pyhton解释器是以UTF-8的形式打开文件的,如果想要修改Python的默认解释器编码,可以下面这样干:
# -*- coding:utf-8 -*-

print("我是你二大爷")
  • Pycharm中写完代码,如果不规范的话,可以点击上面的code -> Reformat Code, 则软件会帮你自动规范化代码

3. 类型转换

int() str() bool()

三句话搞懂类型转换

  • 其他所有类型转换为布尔类型时,除了 空字符串,0 以外,其他所有都为True。
  • 字符串转整形时,只有那种’988’格式(全为数字)的字符串才可以转换为整形,其他都报错
  • 想要转化为某种类型,就用这种类型的英文包裹一下就行。
sr(...)
int(...)
bool(...)

4. 变量

变量,其实就是我们生活中起的别名和外号,让变量名指向某个值,格式为:【变量名=值】,以后可以通过变量名来操作其对应的值。

name = '王不易'
print(name)  # 王不易
flag = 1>18  # 意思是将,右边的'1>18'返回的结果赋值给flag,所以flag=False
address = '浙江省'+'宁波市'  # 意思是先将右边的字符串进行拼接,然后返回给address 所以address = '浙江省宁波市'
number = 1 == 2  # 先看右边再看左边。number = False

4.1 变量名的规范

三个规范(只要有一条,就会报错)

  • 变量名只能由 字母、数字、下划线组成。
  • 不能以数字为开头
  • 不能使用Python内置的关键词作为变量名
    • 如果不知道是否为内置关键词,也没有关系,当你在用内置关键词作为变量名的时候,Pycharm会给你报错
      在这里插入图片描述

三个建议

  • 下划线连接命名(小写)
#  很长的变量名,中间用_连接
farther_name = 'wangbuyi'
class_name = '计算机2101'
  • 见名知意
#  让别人看见变量名就知道这是什么意思
age = 19
color = 'red'
name = 'wby'
  • 驼峰
#  顾名思义,就是变量名中首字母大写
#  在程序中,要么选择下划线连接命名,要么驼峰命名,建议不要一起使用,容易混乱
StudentName = 'wby'
StudentAge = 18

4.2 变量内存指向关系

通过学习上述变量知识让我们对变量了有了初步认识,接下来我们就要从稍稍高级一些的角度来学习变量,即:内存指向(在电脑的内存中是怎么存储的)。

情景一

name = "wupeiqi"

在计算机的内存中创建一块区域保存字符串”wupeiqi”,name变量名则指向这块区域。
在这里插入图片描述

情景二

name = "wupeiqi"
name = "alex"

在计算机的内存中创建一块区域保存字符串”wupeiqi”,name变量名则指向这块区域。然后又再内存中创建了一块域保存字符串”alex”,name变量名则指向”alex”所在的区域,不再指向”wupeiqi”所在区域(无人指向的数据会被标记为垃圾,由解释器自动化回收)

在这里插入图片描述

情景三

name = "wupeiqi"
new_name = name

在计算机的内存中创建一块区域保存字符串”wupeiqi”,name变量名则指向这块区域。new_name变量名指向name变量,因为被指向的是变量名,所以自动会转指向到name变量代表的内存区域。

在这里插入图片描述

情景四

name = "wupeiqi"
new_name = name
name = "alex"

在计算机的内存中创建一块区域保存字符串”wupeiqi”,name变量名则指向这块区域(灰色线), 然后new_name指向name所指向的内存区域,最后又创建了一块区域存放”alex”,让name变量指向”alex”所在区域.
在这里插入图片描述

情景五

num = 18
age = str(num)

在计算机的内存中创建一块区域保存整型18,name变量名则指向这块区域。通过类型转换依据整型18再在内存中创建一个字符串”18”, age变量指向保存这个字符串的内存区域。
在这里插入图片描述

至此,关于变量的内存相关的说明已讲完,由于大家都是初学者,关于变量的内存管理目前只需了解以上知识点即可,更多关于内存管理、垃圾回收、驻留机制等问题在后面的课程中会讲解。

5. 今日练习

  1. 谈谈你了解的编码以及为什么会出现乱码的现象?

    答:当编码形式不一样的时候就会出现乱码的情况
    
       编码相当于是一个`密码本`,其中存储着文字和01010的对应关系。
       乱码的出现时因为文件的存储方式和打开方式不一致导致。另外,如何数据丢失也可能会造成乱码。
       假如:
       	武,对应存储的是:100100001000000111。如果文件中的内容丢失只剩下100100001000000,则读取时候就可能出现乱码。
    
  2. Python解释器默认编码是什么?如何修改?

    #  Python解释器默认编码是UTF-8
    #  -*- coding:gbk -*-
    
       Python解释器默认编码:utf-8
       在文件的顶部通过设置: # -*- coding:编码 -*- 实现修改。
    
  3. 用print打印出下面内容:

    ⽂能提笔安天下,
    武能上⻢定乾坤.
    ⼼存谋略何⼈胜,
    古今英雄唯是君。
    
       text = """
       ⽂能提笔安天下,
       武能上⻢定乾坤.
       ⼼存谋略何⼈胜,
       古今英雄唯是君。
       """
       print(text)
    
  4. 变量名的命名规范和建议?

    答: 命名规范: 1. 不能以数字为开头;2. 只能是数字,字母,下划线组成;3. 不能以Python默认的关键字为变量名
    		建议: 1. 使用下划线来分割很长的变量名 2. 必须让人一眼就知道这个变量是什么意思
    
       三条规范(必须遵循,否则定义变量会报错)
         - 变量名只能由 字母、数字、下划线 组成。
         - 变量名不能以数字开头。
         - 变量名不能是Python内置关键字
       二条建议(遵循可以显得更加专业,不遵循也可以正常运行不报错)
       	- 下划线命名法,多个单词表示的变量名用下划线连接(均小写)
       	- 见名知意,通过阅读变量名就能知道此变量的含义。
    
  5. 如下那个变量名是正确的?

    name = '武沛齐'  
    _ = 'alex'
    _9 = "老男孩"
    9name = "宝浪"
    oldboy(edu = 666
    
    T T T F F
    
  6. 设定一个理想数字比如:66,让用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有等于66,显示猜测结果正确。

    n = input('请输入数字:')
    if int(n) < 66:
        print('猜小了')
    elif int(n) > 66:
        print('猜大了')
    else:
        print('猜对了')
    
  7. 提示⽤户输入 “爸爸” ,判断⽤户输入的对不对。如果对, 提示真聪明, 如果不对, 提示你是傻逼么。

    n = input('请输入 "爸爸" :')
    if n != '爸爸':
        print('你是傻逼么?')
    else:
        print('真聪明')
    
  8. 写程序,成绩有ABCDE5个等级,与分数的对应关系如下.

    A    90-100
    B    80-89
    C    60-79
    D    40-59
    E    0-39
    

    要求用户输入0-100的数字后,你能正确打印他的对应成绩等级.

       score = input("请输入分数")
       data = int(score)
       
       if data >= 90 and data <= 100:
         print("A")
       elif data >= 80 and data <90:
         print("B")
       elif data >= 60 and data <80:
         print("C")
       elif data >= 40 and data <60:
         print("D")
       elif data >= 0 and data <40:
         print("E")
       else:
         print("输入错误")
    
    score = input("请输入分数")
    data = int(score)
    
    if 90 <= data <= 100:
        print("A")
    elif 80 <= data < 90:
        print("B")
    elif 60 <= data < 80:
        print("C")
    elif 40 <= data < 60:
        print("D")
    elif 0 <= data < 40:
        print("E")
    else:
        print("输入错误")
    
n = input('请输入0-100的数字: ')
if int(n) >= 90:
    print('A')
elif int(n) >= 80 and int(n) < 90:
    print('B')
elif int(n) >= 60 and int(n) < 80:
    print('C')
elif int(n) >= 40 and int(n) < 60:
    print('D')
else:
    print('E')

猜你喜欢

转载自blog.csdn.net/m0_48936146/article/details/127820200
今日推荐