首页 > 编程语言 >day02 Python基础

day02 Python基础

时间:2022-11-30 11:56:42浏览次数:43  
标签:count name Python day02 基础 num text print True

1. Python语法

1.1 编码

  • 使用工具写汉字、字母、数字,写完之后,你是需要保存到硬盘上

    卢慧yyds666                01010101010101101010101001010101000111101
    
  • 一套编码(密码本)UTF-8

    卢			100000011100101
    慧			111111100000001
    y			 111111110000001
    d			 111111101000001
    s			 111111100010001
    6			 111111100000101
    
  • 用软件去打开 user.txt

    卢			100000011100101
    慧			111111100000001
    y			 111111110000001
    d			 111111101000001
    s			 111111100010001
    6			 111111100000101
    
    卢慧yyds666
    

在计算机中不止有一套编码(密码文)

以后在写文件时,一定要记住自己文件保存时,用的是什么编码,以后再打开这个文件时,就需要用同样的编码去打开,否则,就会出现乱码的情况

在Python开发过程中这种规则依然要遵循:

  • 在文件中写python代码(我们以后要以utf-8编码去保存代码)

    print("Hello World")
    
  • python解释器打开代码并读取文件内容,转换成计算机能够识别的语言

    Python解释器会打开咱们的文件
    默认:Python3.x版本解释器,默认会使用utf-8编码去打开文件
    
    >>>C:\python39\python.exe  D:\code\first.py
    

1.2 输出

让程序在内部帮助我们做事,做完事之后将结果输出出来

print("你好呀")
print("欢迎使用xxx系统")

例如:找到某个目录下所有的以为 .png 为结尾的文件

import os

for item in os.listdir("/Users/wupeiqi/PycharmProjects/gx_day01"):
    if item.endswith('png'):
        print(item)
  • 输出的基本用法

    print("郭德纲")
    
  • 不要换行

    print("伤情最是晚凉天", end="")
    print("憔悴私人不堪言", end="")
    

1.3 数据类型

什么是数据类型?学了他有什么用?

  • 字母、数字、汉字、成语、文言文; 基于这些知识写文件/作文 --> 老师批改。【学中文经验】
  • 本文、数字、真假。。。 ; 基于数据类型写代码文件 --> 计算运行。 【学编程语言】

1.3.1 整型(int)

表示我们生活中的数字,例如:19、180、150

19
20
300
300 + 19
2 * 6
80 - 77
100 / 10
98 % 10
print(19)
print(300 + 19 )

1.3.2 字符串(str)

用来表示我们生活中的本文信息,例如:"李国良" "中国北京昌平区"

# 单行文本
"毛谦"
'李国良'

# 多行文本
"""陈丽萍"""
'''梁吉宁'''
print("毛谦")
print('毛谦')

字符串之间可以进行相加,就是字符串拼接。

"李国良" + "yyds"
"李国良yyds"

字符串和数字相乘,等到的就是让字符串重复多少次

"毛谦" * 3
"毛谦毛谦毛谦"

转换

str(19)       # 19    ->     "19"
int("88")     # "88"  ->     88

int("广西联通")  # 无法转换,报错

1.3.3 布尔类型(bool)

  • 真 True
  • 假 False
1  >  2     			-> False
1  ==  2				-> False
"梁吉宁" == "陈青"		 -> False
22 == 22 				-> True

整型、字符串类型 -> 布尔值

  • 整型, 0转换为布尔值为False,其他均为True

    print(  bool(0)  )   # False
    print(  bool(-1)  )  # True
    print(  bool(100)  ) # True
    
  • 字符串,空字符串转换为布尔值为False,其他均为True

    print(  bool("")  )  # False
    print(  bool("s")  )  # True
    print(  bool(" ")  )  # True
    

1.4 变量

变量,就是我们给某个值取名称/外号

格式:变量名 = 值

addr = "中国北京市昌平区沙河镇xxx校区1号楼3单元909"

print(addr)
print(addr)
print(addr)
print(addr)
age = 18
name = "邓新成"
is_success = 1 > 19  # False

addr = "中国北京" + "沙河"

address = "中国北京" + "海淀区" + name   # "中国北京海淀区邓新成"
result = 1 == 2  # False

print(result)

1.4.1 规范

name = "吴国凤"
  • 变量名中只能包含:字母、数字、下划线

  • 不能以数字开头

  • 不能使用Python内置的关键字

    [‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘exec’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘not’, ‘or’, ‘pass’, ‘print’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
    

1.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变量指向保存这个字符串的内存区域

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

1.5 注释

让Python解释器看到之后,自动忽略的代码

  • 单行注释

    # 注释内容
    
    快捷键:
    	- win:control + ?
        - mac:commond + ?
    
  • 多行注释

    """
    注释的内容
    ...
    ..
    """
    

1.6 输入

为什么要有输入呢?

text = input("提示信息")
print(text)
v1 = input("请输入数字:")  # "100"
v2 = input("请输入数字:")  # "200"

result = v1 + v2
print(result)  # "100200"
v1 = input("请输入数字:")  # "100"
v2 = input("请输入数字:")  # "200"

result = int(v1) + int(v2)
print(result)  # 300

2. 条件语句

2.1 基本条件

if 条件:
    pass
else:
    pass
num = 1
if num > 9:
    print(123)
    print(456)
else:
    print(666)
    print(999)
username = input(">>>")
password = input(">>>")

if username == "admin" and password == "123":
	print("成功")
else:
    print("失败")

2.2 多条件

if 条件A:
    条件A成立,。。
    。。。
    。。。
elif 条件B:
    条件A不成立,条件B
    。。
    。。
elif 条件C:
    C成立
    ...
    ...
else:
    上述都不成立
# 猜数字

num = input("请猜数字,猜对赠送500w,请开始:")
data = int(num)

if data > 66:
    print("太大了")
elif data < 66:
    print("太小了")
else:
    print("恭喜你获得500w")

提示:所有的条件中的else可以省略

if True:
    pass
if 条件A:
    pass
elif 条件B:
    pass

2.3 嵌套

if 条件A:
    if 条件:
        if xx:
            pass
        else:
            pass
    else:
        pass
elif 条件B:
    pass

模拟:联通10010客服

print("欢迎致电10010,提供以下服务:1.话费业务;2.宽带业务;3.企业业务;4.人工服务")
choice = input("请选择序号:")
if choice == "1":
    print("话费业务专区") 
    print("1.查询话费;2.缴话费;3.话费异常")
    second_choice = input("请输入:")
    if second_choice == "1":
        print("话费查询")
        print("你的话费余额是100w")
	elif second_choice == "2":
        print("成功缴费100元")
	elif second_choice == "3":
        print("....")
        print("....")
	else:
        print("输入错误")
	print("END")
elif choide = "2":
    print("宽带业务专区")
    print("宽带业务专区")
    print("宽带业务专区")
    print("宽带业务专区")
    print("宽带业务专区")
elif choide = "3":
    print("企业业务")
elif choide = "4":
    print("人工服务专区")
    
print("感谢您的来电,再见。")

3. while循环

print("开始")

while 条件 :
	...
	..
	...

print("结束")

3.1 循环基本使用

示例1:

print("开始")
while True:
    print("乔杉喜欢大保健")
    print("代言人")
print("结束")

# 输出:
开始
乔杉喜欢大保健
代言人
乔杉喜欢大保健
代言人
乔杉喜欢大保健
代言人
...

示例2:

print("开始")
while 1 > 2:
    print("123")
print("结束")

# 输出
开始
结束

示例3:

num = 1

print("开始")
while num > 2:
    print("123")
print("结束")

# 输出
开始
结束

示例4:

num = True

print("开始")

while num:
    
    print("123")
    
    num = False
    
print("结束")

# 输出
开始
123
结束

示例5:

print("开始")
num = 1
while num < 3:
    print("123")
    num = 5
print("结束")

# 输出
开始
123
结束

示例6:

print("开始")
num = 1
while num < 3:
    print("123")
    num = num + 1  # num=2   num=3
print("结束")

# 输出
开始
123
123
结束

练习题

  1. 猜数字,给他三次机会

    print("开始")
    count = 1
    while count <= 3:
        num_string = input("请输入你要猜的数字:")
        num = int(num_string)
        if num > 66:
            print("大了")
        elif num < 66:
            print("小了")
        else:
            print("正确")
            count = 100
        count = count + 1
    
    print("结束")
    
  2. 猜数字,一直猜,指导猜对为止

    print("开始")
    count = 1
    
    while count == 1:
        num_string = input("请输入你要猜的数字:")
        num = int(num_string)
        if num > 66:
            print("大了")
        elif num < 66:
            print("小了")
        else:
            print("正确")
            count = 100
    
    print("结束")
    
    print("开始")
    flag = True
    
    while flag:
        num_string = input("请输入你要猜的数字:")
        num = int(num_string)
        if num > 66:
            print("大了")
        elif num < 66:
            print("小了")
        else:
            print("正确")
            flag = False
    
    print("结束")
    

3.2 break

break不能自己独立使用,只能放在循环的内部

break,立即终止循环(从循环中跳出来)

print("开始")
while True:
    print("中国联通")
    break
    print(123)
print("结束")

# 输出
开始
中国联通
结束
print("开始")
while True:
    print("中国联通")
    if 1 == 1:
	    break
    print(123)
print("结束")

# 输出
开始
中国联通
结束
print("开始")
while True:
    print("中国联通")
    if 1 > 1:
	    break
    print(123)
print("结束")

# 输出
开始
中国联通
123
中国联通
123
中国联通
123
...

猜数字,一直猜,指导猜对为止

print("开始")
while True:
    num_string = input("请输入你要猜的数字:")
    num = int(num_string)
    if num > 66:
        print("大了")
    elif num < 66:
        print("小了")
    else:
        print("正确")
		break

print("结束")

3.3 continue

continue不能自己独立使用,只能放在循环的内部

continue,立即结束当前循环,开始下次循环

print("开始")
while True:
    print(1)
    continue
    print(2)
print("结束")

# 输出
开始
1
1
1
1
1
...

案例:输出 1 ~ 10,不要7

count = 1
while count < 11:
    if count == 7:
        continue
        
    print(count)
    count = count + 1
    
# 输入?
1
2
3
4
5
6
count = 1
while count < 11:
    if count == 7:
        continue
    	count = count + 1
    print(count)
    count = count + 1
    
# 输入?
1
2
3
4
5
6
count = 1
while count < 11:
    if count == 7:
		count = count + 1
        continue
    print(count)
    count = count + 1
    
# 输入
1
2
3
4
5
6
8
9
10

4. 字符串格式化

4.1 format(推荐)

text = "我的名字叫{0}今年{1}岁".format("武沛齐",18)
print(text) # "我的名字叫武沛齐今年18岁"
text = "我的名字叫{0}今年{1}岁,就是{0}".format("武沛齐",18)
print(text) # "我的名字叫武沛齐今年18岁,就是武沛齐"
text = "我的名字叫{}今年{}岁,就是{}".format("武沛齐",18,"武沛齐")
print(text)
tpl = "我的名字叫{},今年{}岁。"

v1 = tpl.format("武沛齐",18)  # 我的名字叫武沛齐,今年18岁。
v2 = tpl.format("邱恩婷",17)  # 我的名字叫邱恩婷,今年17岁。

注意:

text = "我的名字叫{n1}今年{xx}岁,就是{p2}".format(n1="武沛齐",p2=18,xx="武沛齐")
print(text)

4.2 %

text = "我的名字叫%s今年%d岁"  %("武沛齐",18)

print(text) # "我的名字叫武沛齐今年18岁"
tpl = "我的名字叫%s,今年%d岁。"

v1 = tpl %("武沛齐",11)
v2 = tpl %("谢鹏",12)

4.3 f-string

Python3.6+之后才有的另外一种格式化

name = "武沛齐"
age = 18
text = f"我的名字{name},今年{age}岁"
print(text)

5. 运算符

  • 算数运算符

    value = 9 % 2
    print(value) # 1
    
  • 比较运算符

    >
    >=
    <
    <=
    ==
    !=
    
  • 赋值运算

    v1 = 123
    
    num = 10
    num = num + 2  # num += 2
    
    num = 10
    num = num - 2  # num -= 2
    
    count = 1
    while count<11:
        print(count)
        count = count + 1   # count += 1
    
    count = 10
    while count > 0:
        print(count)
        count = count - 1   # count -= 1
    
  • 成员运算,xx中是否xx

    v1 = "日本" in "日本人不是人"  # True
    v2 = "俄罗斯" in "日本人不是人"  # False
    
    text = "日本人不是人"
    v3 = "日本" in text   # True
    
    text  = input("请输入你的评论:")
    if "日本" in text:
        print("不能包含不是人的信息")
    else:
        print(text)
    
    text  = input("请输入你的评论:")
    if "日本" not in text:
        print(text)    
    else:
        print("不能包含不是人的信息")
    
  • 逻辑运算

    v1 = True and True   # True
    v2 = True and False  # False
    
    user = input(">>>")
    pwd = input(">>>")
    if user == "root" and pwd == "123":
        print("成功")
    else:
        print("失败")
    

关于逻辑运算符的特别应用:

  • 一般

    # v1 =  条件 and/or  条件
    v1 = user == "root" and  pwd == "123"
    
  • 高级用法(很少写,面试题+源码)

    v1 = 值  and/or 值
    
    v1 = 2 and 4
    
    print(v1)
    """
    值 and 值
    
    逻辑运算的结果取决于那个值?结果等于值。
    v1 = 2 and 4
    """
    
    v1 = 6 and 9   # 9
    v2 = 0 and 1   # 0
    v3 = 88 and 0  # 0
    v4 = "" and 9  # ""
    v5 = "梁伟" and "罗小春"  # "罗小春"
    v6 = 1 or 2    # 1
    v7 = 0 or 2    # 2
    
    # 先分析and,or
    v8 = 1 and 8 or 9 and 10 or 11 or 12 and 0 or "" and "卢慧"
    
    name = 19
    if bool(name):
        v1 = name
    else:
        v1 = 666
    
    name = 19
    v1 = name or 666
    

6. 基础概念

6.1 进制

计算机底层全都都是 0101010101010 (二进制)

0
1
10
11
100

武     100010000010000111100011

转换:

  • 十进制 -> 其他进制

    v1 = bin(238)
    print(v1) "0b11101110"
    
    v2 = oct(238)
    print(v2) # "0o356"
    
    v3 = hex(238)
    print(v3) # "0xee"
    
  • 其他进制,转换成十进制整数

    d1 = int("0b11101110", base=2)
    print(d1) # 238
    
    d2 = int("0o356", base=8)
    print(d2) # 238
    
    d3 = int("0xee", base=16)
    print(d3) # 238
    

6.2 计算机中的单位

内存:8G、硬盘:1T、流量:300M

计算机底层本质上都是010101010,计算机中为了方便表示搞了一些单位

10001111 10001111 10001111 10001111 10001111
  • b(bit),位

    0   	1位
    1   	1位
    100   	3位
    
  • B(byte),字节

    8位是一个字节。
    10001111   			1个字节
    10001111 10001111   2个字节
    
  • KB(kilobyte),千字节

    1024个字节就是1KB(千字节)。
    
    10010110 11010110  10010111 .. ,1KB
    1KB = 1024B= 1024 * 8 b
    
  • M(Megabyte),兆 -> 8388608

    1024KB就是1M
    1M= 1024KB = 1024 * 1024 B = 1024 * 1024 * 8 b  
    
  • G(Gigabyte),千兆

    1024M就是1G
    1 G=  1024 M=  1024 *1024KB =  1024 * 1024 * 1024 B =  1024 * 1024 * 1024 * 8 b
    
  • T(Terabyte),万亿字节

    1024个G就是1T
    
  • ...其他更大单位 PB/EB/ZB/YB/BB/NB/DB 不再赘述

假设:

  • 办理:1G套餐(1024 * 1024 * 1024 * 8)

  • 密码文:

    武		10110011 10110011     -> 16位表示1个中文字符串
    

6.3 编码

咱们的电脑,存储和发送文件,发送的是什么?电脑里面是不是有成千上万个二极管,亮的代表是1,不亮的代表是0,这样实际上电脑的存储和发送是不是都是010101啊

我们发送的内容都是010101010这样写的内容比较多就不知道是什么了,所以我们想要明确的区分出来发送的内容就需要在某个地方进行分段.计算机中设定的就是8位一断句

6.3.1 ascii编码

计算机:
储存文件,或者是传输文件,实际上是010101010
计算机创建初期是7位一段,但是发明者说为了拓展留出一位,这样就是8位一段句。8位有多少种可能? 256

最开始的编码,只是照顾了美国

在ascii编码中是用1个字节来表示二进制,所以他只能有256中可能

NUL     00000000
...
@		01000000
...
H		01001000
...
ÿ		11111111

随着计算机的发展. 以及普及率的提高. 流⾏到欧洲和亚洲. 这时ASCII码就不合适了. 比如: 中⽂汉字有几万个. 而ASCII 多也就256个位置. 所以ASCII不行了. 怎么办呢?

这时, 不同的国家就提出了不同的编码用来适用于各自的语言环境. 比如, 中国的GBK, GB2312, BIG5, ISO-8859-1等等

6.3.2 gbk和gb2312

GBK, 中⽂国标码,⾥⾯包含了ASCII编码和中⽂常⽤编码. 16个bit, 2个byte

GB-2312,国家信息委员会制作(1980年)

GBK,GB-2312的扩展,包含了中日韩等文字。(1995)

6.3.3 unicode(万国码)

随着全球化的普及,发展到欧洲,亚洲等国家,发现这些根本不够用,所以创建了万国码,⾥⾯包含了全世界所有国家⽂字的编码. 32个bit, 4个byte, 包含了 ASCII

  • ucs2,用固定的2个字节去表示二进制和文字的对应关系。 2**16 = 65535
  • ucs4,用固定的4个字节去表示二进制和文字的对应关系。 2**32 = 4294967296
文字				 二进制
且             01001110 00010100                         ucs2
且             00000000 00000000 01001110 00010100       ucs4
文字 						 二进制					 十六进制
༃                    1001010101010101010              0F03

缺点,固定都用4个字节去存储文字对应的二进制 -> 浪费空间/浪费流量

6.3.4 utf-8编码

对unicode进行压缩,用尽可能少的自己来表示数据

最⼩字符占8位   

  1. 英⽂: 8bit 1byte   

  2. 欧洲⽂字:16bit 2byte   

  3. 中⽂:24bit 3byte

注意事项:

- 以后开发时,一定要使用utf-8编码。
- UTF-8编码中,1个中文用3个字节来表示。

6.3.5 Python

name = "武沛齐"     			# 字符串类型,unicode来存储(ucs4)。
data = name.encode('utf-8')	  # 字节类型,  utf-8编码来存储
print(data)

在Python开发中,以后再去做文件存储或网络传输时,不能直接用字符串,而是需要将字符串压缩成utf-8编码的字节,然后再来传输和存储

# 在文件中写入一个字符串
name = "武沛齐"

# 1.打开文件
file_object = open("vip.txt",mode='ab')

# 2.写入内容
file_object.write( name.encode('utf-8') )

# 3.关闭文件
file_object.close()
  • 文件编码

    • 写文件,写了很多的文本的内容 -> 按照某种编码去存储文件 ( 010100101010 )

    • 读文件,真正的内容读取出来,用同样的编码才能读取到文本内容

      Python解释器编码,指的是打开和读取某个py文件的内容时,用的是这种编码。 utf-8
      
  • Python解释器将代码读取到内存之后,是需要进行:

    • 语法分析 & 词法分析

      name = "武沛齐"     -> 字符串处理,去unicode对应关系中找 01010101010
      

标签:count,name,Python,day02,基础,num,text,print,True
From: https://www.cnblogs.com/vahan/p/16937959.html

相关文章

  • day01 环境搭建及python介绍
    1.Typora安装为什么要使用Typora的软件呢?是因为程序员不只是写代码这一件事,还需要给编写的代码写README文档,这个文档是说明程序如何使用的,README编写使用的就是Markd......
  • Python 中 -m 的典型用法、原理解析与发展演变
    在命令行中使用Python时,它可以接收大约20个选项(option),语法格式如下:python[-bBdEhiIOqsSuvVWx?][-ccommand|-mmodule-name|script|-][args]本文想要聊聊比较......
  • Python 依赖库管理哪家强?pipreqs、pigar、pip-tools、pipdeptree 任君挑选
    在Python的项目中,如何管理所用的全部依赖库呢?最主流的做法是维护一份“requirements.txt”,记录下依赖库的名字及其版本号。那么,如何来生成这份文件呢?在上篇文章《​​由浅......
  • 开发者请注意:Python2 的最后版本将于 4 月发布,但它确实是在 1 月 1 日就寿命终止了!
    2020年1月1日是Python2的寿命终止日,这个日期在两年前经"Python之父"GuidovanRossum宣布,此后一直成为开发者社区翘首以盼的一天。昨天就是这个大快人心的日子,各种......
  • JavaScript入门①-基础知识筑基
    01、JavaScript基础知识JavaScript(缩写:JS)是一种具有面向对象能力的、解释型的程序语言,基于对象和事件驱动,具有相对安全性的客户端脚本语言。JavaScript是一门完备的动态......
  • 0 基础晋级 Serverless 高手课 — 初识 Serverless(下)
    冷启动     1.流量预测2.提前启动3.实例复用每个厂商规范不一致;,兼容,适配层;adapter;fs+oss     云厂商对比                产品维度   功能......
  • How to Install Python on Linux
    SummaryHostmonsterusesthepreinstalledversionofPythonthatshipswithCentOS.Becauseofthisitisoftennotthelatestrelease.Thisarticlewillexplain......
  • C++基础语法学习:STL
    基础语法学习,少点比较,多些谦虚1.容器:常见的容器有以下几类:1.vector:向量2.deque:双端队列3.list:列表4.set:集合5:multiset:多重集合6.map:映射7:multimap:多重映射2.......
  • Go基础信息
    介绍官网:Go编程语言源代码托管在GitHub上:https://github.com/golang/go为什么需要一个新语言最近十年来,C/C++在计算领域没有很好得到发展,并没有新的系统编程语言出......
  • Python工具箱系列(十七)
    很多软件工程师都认为MD5是一种加密算法,然而这种观点是不对的。作为一个1992年第一次被公开的算法,到今天为止已经被发现了一些致命的漏洞。本文讨论MD5在密码保存方面的......