day02-08 python基础语法

2023-11-12

模块一 python基础语法

day2–快速上手

今日概要

课程目标:学习Python最基础的语法知识,可以用代码快速实现一些简单的功能。

课程概要:

  • 初识编码(密码本)
  • 编程初体验
  • 输出
  • 初识数据类型
  • 变量
  • 注释
  • 输入
  • 条件语句

1.编码(密码本)

计算机中所有的数据本质上都是以0和1的组合来存储

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

->      01111111 00011010 010110110->      01001111 10010000 001110100->      11111111 00000000 010101010

在计算机中有很多种编码

每种编码都有自己的一套密码本,都维护这自己的一套规则,如:
    utf-8编码:
        小     ->      01111111 00011010 010110110->      01001111 10010000 001110100->      11111111 00000000 010101010
    gbk编码:
        小     ->      11111111 00000010->      01001111 01111111->      00110011 10101010
所以,使用的不同的编码保存文件时,硬盘的文件中存储的0/1也是不同的。

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

UTF-8编码去保存小佩齐:01111111 00011010 010110110 01001111 10010000 001110100 11111111 00000000 010101010
GBK编码形式去打开:乱码

2.编程初体验

  • 编码必须要保持:保存和打开一直,否则会乱码。

  • 默认Python解释器是以UTF-8编码的形式打开文件。如果想要修改Python的默认解释器编码,可以这样干:

    # -*- coding:gbk -*-
    
    print("我是你二大爷")
    
  • 建议:所有Python代码文件的都要以UTF-8编码保存和读取。

3.输出与换行

将结果或内容呈现给用户。

print("种一棵树好的时间是十年前,其次是当下")

print就是打印输出。

关于输出:

  • 默认print在尾部会加换行符

    print("看风景美如画")
    print("想吟诗赠天下")
    
    输出会带换行符:
    看风景美如画
    想吟诗赠天下
    
  • 不换行

    print("人生苦短",end="")
    print("我学python",end="")
    
    输出:
    人生苦短我学python
    
    print("看着风景美如画",end=",")
    print("本想吟诗增天下",end=".")
    
    输出:
    看着风景美如画,本想吟诗增天下.
    

    使用逗号分割与 end=""是打印不换行,也可以再 end="" 等于中指定换行符。

  • 一个print换行,sep=’\n’

    print("文能提笔安天下,","武能上马定乾坤。","心存谋略何人胜,","古今英雄唯是君。",sep='\n')
    
    输出:
    文能提笔安天下,
    武能上马定乾坤。
    心存谋略何人胜,
    古今英雄唯是君。
    

4.初识数据类型

  • int 整型,整数
  • str 字符串
  • bool 布尔类型中有两个值:True / False

4.1 整型(int)

整型,其实就是以前数学课上讲的整数(不包含小数),在写代码时用于表示整数相关的东西,例如:年龄、存款、尺寸、手机号等。
一般我们提到的:5、18、22、99、… 等整数 在Python中都称为是整型,且支持加减乘除,取余,指数等操作。

print(666)

print(2 + 10)

print(2 * 10)

print(10 / 2)

print(10 % 3)

print(2 ** 4)

4.2 字符串(str)

字符串,其实就是我们生活中的文本信息。例如:姓名、地址、自我介绍等。
字符串有一个特点,他必须由引号引起来,如:

单行字符串

print("Bella是逗比")
print('逗比是Bella')
print('天坑"Bella')
print("中国北京昌平区")

多行字符串

print("""中国北京昌平区""")
print('''中国北京昌平区''')

在需要打印双引号的时候,可以用单引号引起来,也支持三(单双)引号,表示多行内容。

print("""xxxx
yyyy
ooooo
xxxzzz
""")

输出多行:
xxxx
yyyy
ooooo
xxxzzz

对于字符串:只支持加与乘

  • 加,两个字符串可以通过加号拼接起来。

    print( "Bella" + "坑逼" )
    
  • 乘,让整型和字符串进行相乘,以实现让字符串重复出现N次并拼接起来。

    print(3 * "我想吃饺子")
    

总结:

+可以拼接字符串

*可以让整数和字符串进行相乘,以达到实现让字符串重复出现N次拼接的效果

小技巧

print()括号两边不要使用空格
使用  pycharm--code--Reformat Code  可以让代码自动格式化,变得更加规范

4.3布尔类型

布尔类型中总共就两个值:True/False

print(1 > 2)
print(False)

print(1 == 1)
print(True)
name = input("请输入入你的用户名:")

if name == "Bella":
    print("用户登录成功")
else:
    print("用户登录失败")

整型与字符串之间无法比较大小,只能比较是否相等。

1 > 2 
1 == 3
"Bella" == "ella"
1 == "Bella"

1 > "Bella"  # 是无法进行比较大小

4.4类型转换

数据类型int/str/bool,他们都有自己不同的定义方式;

  • int,整型定义时,必须是数字,且无引号,例如:5,8,9
  • str,字符串定义时,必须用双引号括起来,例如: “中国”,“小猪佩奇”,“888”
  • bool,布尔值定义时,只能写True和False

不同的数据类型都有不同的功能,例如:整型可以加减乘除等运算,而字符串只能加(拼接)和乘法。
如果想要做转换可遵循一个基本规则:想转换什么类型就让他包裹一下。

例如:str(666)="666"是将整型转换为字符串,int(“888”)是将字符串转整型888.

# 字符串转换为整型(渡可渡-之人)
  int("666")
  int("999")
  "6" + "9" 的结果应该是: "69"
  int("6") + int("9") 的结果是:15

  int("贝拉是sb") 报错
  
# 布尔类型转换为整型
  int(True)  转换完等于 1
  int(False) 转换完等于 0

转换为字符串

# 整型转字符串
str(345)
str(666) + str(9) 结果为:"6669"

# 布尔类型转换为字符串
str(True) "True"
str(False) "False"

转换为布尔类型

# 整型转布尔
bool(1) True
bool(2) True
bool(0) False
bool(-10) True

# 字符串转布尔
bool("Bella") True
bool("什么鬼") True
bool("") False
bool(" ") True

三句话搞定类型转换:

  • 其他所有类型转换为布尔类型时,除了空字符,0 以外其他都是True。

  • 字符串转整型时,只有这种 “998” 格式的字符串才可以转换为整型,其他都报错

  • 想要转换为哪种类型,就是用这类型的英文包裹起来。

    str(...)
    int(...)
    bool(...)
    

注:类型转换不是改变原来值,实际是在底层新创建了一个值。例如有整数6,然后使用str(6)转换得到"6",实际上这个字符串"6" 是依据整数6新创建的。

5.变量

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

nane = "小猪佩奇"
print(name)
age = 10
name = "Bella"
flag = 1 > 18
address = "深圳南山" + "必胜客"
addr = "深圳南山" + "必胜客" + name

print(addr)
print(flag)
age = 18
numer = 1 == 2

# 注意区分 "=" 与 "=="

注意:

  • 给变量赋值 age = 18
  • 让age代指值 age=18

5.1变量名的规范

  • 变量名只能有字母,数字,下划线组成

  • 不能以数字开头

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

    >>> import keyword
    >>> keyword.kwlist
    ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
    

    两个建议:

    • 连接建议使用下划线(小写)
    • 见名知意

5.2 变量内存指向关系

内存指向,变量在电脑的内存中是怎么存储

情景一

name = "suse"

>>> name="suse"
>>> print(name)
suse

在计算机的内存中创建一块区域保存字符串"suse",name变量名则指向这块区域。

情景二

name = "suse"
name = "bella"

>>> name = "suse"
>>> name = "bella"
>>> print(name)
bella

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

情景三

name = "suse"
new_name = name

>>> name = "suse"
>>> new_name = name
>>> print(name)
suse
>>> print(new_name)
suse

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

情景四

name = "suse"
new_name = name
name = "bella"

>>> name = "suse"
>>> new_name = name
>>> name = "bella"
>>> print(name)
bella
>>> print(new_name)
suse

在计算机的内存中创建一块区域保存字符串"suse",name变量名则指向这块区域, 然后new_name指向name所指向的内存区域,最后又创建了一块区域存放"bella",让name变量指向"bella"所在区域.

情景五

num = 18
age = str(num)

>>> num = 18
>>> age = str(num)
>>> print(num)
18
>>> print(age)
18

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

除了变量的内存管理以为还有关于垃圾回收,驻留机制等知识。

6. 注释

写代码时候,如果想要对某写内容进行注释处理,即:解释器忽略不会按照代码去运行。

  • 单行注释

    注意:快捷键 command + ?  、   control + ?
    
  • 多行注释

    # #号注释
    # 声明一个name变量
    # 声明一个name变量
    name = "Bella"
    
    
    """
    三个双引号
    多行注释内容
    多行注释内容
    """
    age = 19
    
    '''
    三个单引号
    多行注释
    '''
    

7. 输入

输入,可以实现程序和用户之间的交互。

# 1.右边 input("请输出用户名:") 使用用户输入内容
# 2.将用户输入的内容赋值给name变量
name = input("请输入用户名:")

if name == "bella":
    print("登录成功")
else:
    print("登录失败")
# 将输入复制给变量,然后输出
data = input(">>>")
print(data)

特别注意: 用户输入的任何内容本质上都是字符串。

1.提示输入姓名,然后给姓名后面拼接一个“烧饼”,提示输入姓名,然后给姓名后面拼接一个“烧饼”,最终打印结果。

name = input("请输入用户名:")
test = name + "烧饼"
print(test)

2.提示输入 姓名/位置/行为,然后做拼接并打印:xx 在 xx 做 xx 。

name = input("请输入用户名:")
address = input("请输入位置:")
action = input("请输入行为:")

text = name + "在" + address + action
print(text)

3.提示输入两个数字,计算两个数的和。

number1 = input("请输入一个数字:") # "1"
number2 = input("请输入一个数字:") # "2"

value = int(number1) + int(number2)
print(value)

8.条件语句

if 条件 :
    条件成立之后的代码...
    条件成立之后的代码...
    条件成立之后的代码...
else:
    条件不成立之后执行的代码...
    条件不成立之后执行的代码...
    条件不成立之后执行的代码...
name = input("请输入用户名:")
if name == "bella":
    print("sb")
else:
    print("good")

统一缩进,使用四个空格或者tab。

8.1 基本条件语句

  • 示例1

    print("开始")
    if True:
        print("123")
    else:
        print("456")
    print("结束")
    
  • 示例2

    print("开始")
    if 5==5:
      print("123")
    else:
      print("456")
    print("结束")
    
  • 示例3

    num = 10
    if mum > 10:
        print("num变量对应值大于10")
    else:
        print("num变量对应值小于10")
    
  • 示例4

    usename = "huitailang"
    password = "888"
    if username == "huitailang" and password == "888":
        print("恭喜,登录成功")
    else:
        print("登录失败")
    
  • 示例5

    usename = "xiyangyang"
    
    if usename == "xiyangyang" or username == "lanyangyang":
        print("羊村大会员")
    else:
        print("普通用户")
    
  • 示例6

    number = 19
    if number%2 == 1:
        print("number是奇数")
    else:
        print("number是偶数")
    
    number = 19
    data = number%2 == 1
    if data:
        print("number是奇数")
    else:
        print("number是偶数")
    
  • 示例7

    if 条件:
      成立
    
    print("开始")
    if 5 == 5:
        print("5等于5")
    print("结束")
    

8.2 多条件判断

if 条件A:
  A成立,执行此缩进中的所有代码
  ...
elif 条件B:
  B成立,执行此缩进中的所有代码
  ...
elif 条件C:
  C成立,执行此缩进中的所有代码
  ...
else:
  上述ABC都不成立。
num = input("请输入数字")
data = int(num)
if data>6:
  print("太大了")
elif data == 6:
  print("刚刚好")
else:
  print("太小了")
score = input("请输入分数")
data = int(score)

if data > 90:
    print("优")
elif data > 80:
    print("良")
elif data > 70:
    print("中")
elif data > 60:
    print("差")
else:
    print("不及格")

8.3条件嵌套

if 条件A:
    if 条件A1:
        ...
    else:
        ...
elif 条件B:
    ...

模拟10086客服

print("欢迎致电10086,我们提供了如下服务:1.话费相关;2.业务办理;3.人工服务")

choice = input("请选择服务序号:")

if choice == "1":
    print("话费相关业务")
    cost = input("查询话费请按1;交话费请按2")
    if cost == "1"
        print("查询话费余额为100")
    elif cost == "2":
        print("交话费")
     else:
        print("输入错误")
elif choice == "2":
    print("业务办理")
elif choice == "3":
    print("人工服务")
else:
    print("序号输入错误")
    
    
    
优化
score = input("请输入一个数字:")
data = int(score)
if 90 <= data <= 100:
    print("A")
elif 80 <= data <= 89:
    print("B")
elif 60 <= data <= 79:
    print("C")
elif 40 <= data <= 59:
    print("D")
elif 0 <= data <=39:
    print("E")
else:
    print("输入错误")

day3 python基础

1. 循环语句

  • while循环
  • for循环
while 添加:
	...
	...
	...
print("123")
while 条件:
    ...
    ...
    ...
print(456)

1.1循环语句基本使用

示例1:

print("开始")
while True:
    print("你是最棒的")
print("结束")


# 输出:
开始
你是最棒的
你是最棒的
...

示例2:

print("开始")
while 1 > 2:
	print("如果祖国遭受到侵犯,热血男儿当自强。")
print("结束")

# 输出:
开始
结束

示例3:

data = True
print("开始")
while data:
	print("如果祖国遭受到侵犯,热血男儿当自强。")
print("结束")

# 输出:
开始
如果祖国遭受到侵犯,热血男儿当自强。
如果祖国遭受到侵犯,热血男儿当自强。
如果祖国遭受到侵犯,热血男儿当自强。
...

示例4:

print("开始")
flag = True
while flag:
	print("滚滚黄河,滔滔长江。")
	flag = False
print("结束")

# 输出:
开始
滚滚黄河,滔滔长江。
结束

示例5:

print("开始")
num = 1
while num < 3:
	print("滚滚黄河,滔滔长江。")
	num = 5
print("结束")

# 输出:
开始
滚滚黄河,滔滔长江。
结束

示例6:

print("开始")
num = 1
while num < 5:
	print("给我生命,给我力量。")
	num = num + 1
print("结束")

# 输出:
开始
给我生命,给我力量。
给我生命,给我力量。
给我生命,给我力量。
给我生命,给我力量。
结束
练习题:重复3次输出我爱我的祖国。
num = 1
while num < 4:
	print("我爱我的祖国")
	num = num + 1
	
我爱我的祖国
我爱我的祖国
我爱我的祖国

1.2 综合小案例

请实现一个用户登录系统,如果密码错误则反复提示让用户重新输入,直到输入正确才停止。

print("系统运行开始")
flag = True
while flag:
    user = input("请输入用户名:")
    pwd = input("请输入登录密码:")
    if user == "xxx" and pwd == "1":
        print("登录成功")
        flag = False
    else:
        print("用户或密码错误")
print("系统运行结束")

1.3 break

break,用于在while循环中终止循环

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

# 输出
开始
1
结束

示例:

print("开始运行系统")
while True:
    user = input("请输入用户名:")
    pwd = input("请输入密码:")
    if user == "Bella"  and pwd == "suse":
        print("登录成功")
        break
    else:
        print("用户或密码错误,请重新登录")
print("系统结束")

想要结束循环可以通过两种方式实现:1.条件判读 2.break关键字 两种在使用时无好坏之分,只要能实现功能就行。

1.4 continue

在循环中用于结束本次循环,开始下一次循环

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

开始
1
1
...

示例1:

print("开始")
i = 1
while i < 101:
    if i == 7:
        i = i + 1
        continue
    print(i)
    i = i + 1
print("结束")

示例2:

print("开始")
i = 1
while True:
    if i == 7:
        i = i + 2
        continue  # 结束当前循环
    print(i)
    i = i + 1
    if i == 20:
        break    # 终止循环
print("结束")

# 输出
开始
1
2
3
4
5
6
9
10
...
19

对于break和continue都是放在循环语句中用于控制循环过程的,一旦遇到break就停止所有循环,一旦遇到continue就停止本次循环,开始下次循环。有了break 和 continue可以在一定程度上简化我们的代码逻辑。

1.5 while else

当while后的条件不成立时,else中的代码就会执行。

while 条件:
    代码
else:
    代码
while False:
    pass
else:
    print(12345)
while True:
  print(123)
	break
else:
  print(666)

# 输出
123

2.字符串格式化

字符串格式化,使用更便捷的形式实现字符串的拼接。

2.1 % 百分号

2.1.1 基本格式化操作
name = "佩奇"
# 占位符
# text = "我叫%s,今年18岁" %"佩奇"
text = "我叫%s,今年18岁" %name
name = "佩奇"
age = 18

# text = "我叫%s,今年%s岁" %("佩奇",18)
# text = "我叫%s,今年%s岁" %(name,age)
text = "我叫%s,今年%d岁" %(name,age)

其他占位符

https://www.cnblogs.com/peiqi/articles/5484747.html

message = "%(name)s你什么时候过来呀?%(user)s今天不在呀。" % {"name": "死鬼", "user": "喜洋洋"}
print(message)
2.1.2 百分比
text = "兄弟,这个片我已经下载了90%了,居然特么的断网了"
print(text)
text = "%s,这个片我已经下载了90%%了,居然特么的断网了" %"兄弟"
print(text)
# 输出:
兄弟,这个片我已经下载了90%了,居然特么的断网了

一旦字符串格式化中存在百分比的显示,请一定要加 %% 以实现输出 %。

2.2 format<推荐>

text = "我叫{0},今年18岁".format("佩奇")

text = "我叫{0},今年{1}岁".format("佩奇",18)

text = "我叫{0},今年{1}岁,真实的姓名是{0}。".format("佩奇",18)
text = "我叫{},今年18岁".format("佩奇")

text = "我叫{},今年{}岁".format("佩奇",18)

text = "我叫{},今年{}岁,真是的姓名是{}。".format("佩奇",18,"佩奇")
text = "我叫{n1},今年18岁".format(n1="佩奇")

text = "我叫{n1},今年{age}岁".format(n1="佩奇",age=18)

text = "我叫{n1},今年{age}岁,真是的姓名是{n1}。".format(n1="佩奇",age=18)
text = "我叫{0},今年{1}岁"
data1 = text.format("佩奇",666)
data2 = text.format("贝拉",73)
text = "我叫%s,今年%d岁"
data1 = text %("佩奇",20)
data2 = text %("贝拉",84)

2.3 f (python3.6+)

到Python3.6版本,更便捷。

text = f"嫂子喜欢{'跑步'},跑完之后满身大汗"
action = "跑步"
text = f"嫂子喜欢{action},跑完之后满身大汗"
name = "喵喵"
age = 19
text = f"嫂子的名字叫{name},今年{age}岁"
print(text)

# 用的较多的模式
text = f"嫂子的名字叫喵喵,今年{19 + 2}岁"
print(text)
# 在Python3.8引入
text = f"嫂子的名字叫喵喵,今年{19 + 2=}岁"
print(text)

# 输出 
嫂子的名字叫喵喵,今年19 + 2=21
# 进制转换
v1 = f"嫂子今年{22}岁"
print(v1)

v2 = f"嫂子今年{22:#b}岁"
print(v2)

v3 = f"嫂子今年{22:#o}岁"
print(v3)

v4 = f"嫂子今年{22:#x}岁"
print(v4)
# 理解
text = f"我是{'Bella'},我爱大铁锤"

name = "Bella"
text = f"我是{name},我爱大铁锤"

name = "BELLA"
text = f"我是{ name.upper() },我爱大铁锤"

# 输出:我是Bella,我爱大铁锤

# .upper() 将name的值变成大写 .capitaliza() 首字母大写

3.运算符

写代码时常见的运算符可以分为5种:

  • 算数运算符,例如:加减乘除

在这里插入图片描述

# 整除
print( 9//2 )
输出:
4
  • 比较运算符,例如:大于,小于
    在这里插入图片描述

    注意:python3中不支持 <>

  • 赋值运算,例如:变量赋值
    请添加图片描述

    num = 1
    while num < 100:
      print(num)
      # num = num + 1 等价 num += 1
      num += 1
    
  • 成员运算,例如:是否包含
    在这里插入图片描述

    v1 = "Be" in "Bella"  # True/False
    # 让用户输入一段文本,检测文本是否包含敏感词
    text = input("请输入内容: ")
    if "苍老师" in text:
        print("少儿不宜")
    else:
        print(text)
    
  • 逻辑运算,例如:且或非

    计算前,or和and会将值先转换为bool值再来判断True 与 False。

在这里插入图片描述

data = 1 > 2
if not data:
    print(data)

3.1 运算符优先级

  • 算数优先级 大于 比较运算符

    if 2 + 10 > 11:
        print("真")
    else:
        print("假")
    
  • 比较运算优先级 大于 逻辑运算符

    if 1 > 2 and 2 < 10:
        print("成立")
    else:
        print("不成立")
    
  • 逻辑运算符内部三个优先级 not > and > or

    if not and 1 > 2 or 3 == 8:
        print("真")
    else:
        print("假")
    

上述这三个优先级从高到底总结:加减乘除 > 比较 >not and or 可以通过加括号改变优先级,括号优先级最高。

# or,看第一个值,如果第一个值为真,结果就应该是第一个值,否则就结果就是第二个值。
# and,看第一个值,如果第一个值为真,结果就应该是第二个值,否则结果就是第一个值。
# 如果多个and和or的情况,先计算and再计算or

作业练习

  1. 实现用户登录系统,并且要支持连续三次输错之后直接退出,并且在每次输错误时显示剩余错误次数(提示:使⽤字符串格式化)。

    count = 1
    limit = 3
    while count <= 3:
        usename = input("请输入用户名:")
        pwd = input("请输入密码:")
        if usename == "dave" and pwd == "888":
            print("登录成功")
            break
        else:
            print("用户或密码错误")
        count += 1
        limit -= 1
        text = "剩余{}次".format(limit)
        print(text)
        
    # 老师的第二种解法 
    
    count = 0
    while count < 3:
        count += 1
        user = input("请输入用户名:")
        pwd = input("请输入密码:")
        if user == "dave" and pwd == "123":
            print("成功")
            break
        else:
            message = "用户名或者密码错误,剩余错误次数为{}次".format(3 - count)
            print(message)
    
            
     count = 3
    while count > 0:
        count -= 1
        user = input("请输入用户名:")
        pwd = input("请输入密码:")
        if user == "dave" and pwd == "123":
            print("成功")
            break
        else:
            message = "用户名或者密码错误,剩余错误次数为{}次".format(count)
            print(message)
    
  2. 猜年龄游戏
    要求:允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出。

    count = 1
    while count < 4:
        year = input("请输入一个数:")
        if int(year) == 18:
            print("bingo")
            break
        else:
            print("猜错了!")
            count += 1
    
  3. 猜年龄游戏升级版
    要求:允许用户最多尝试3次,每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y,就继续让其猜3次,以此往复,如果回答N,就退出程序,如果猜对了,就直接退出。

    count = 1
    while count < 4:
        year = input("请输入一个数:")
        if int(year) == 18:
            print("bingo")
            break
        else:
            print("猜错了!")
            count += 1
        if count == 4:
            agen = input("是否继续游戏(Y/N)?:")
            if agen == "N":
                break
            elif agen == "Y":
                count = 1
            else:
                print("输出错误,gameover!")
                break
    print("程序结束")
    

day04 进制与编码

1.python代码运行方式

  • 脚本式
  • 交互式

2.进制

  • 二进制

    逢二进一

    0
    1
    10
    
  • 八进制

  • 十进制

  • 十六进制

请添加图片描述

2.1进制转换

二八十六进制直接无法直接转换,必须通过十进制互相转换。
v1 = bin(25)  # 十进制转为二进制
print(v1)    # "0b110011"

v2 = oct(23) # 十进制转换为八进制
print(v2)    # "0o27"

v3 = hex(28)  # 十进制转为十六进制
print(v3)     # "0x1c"
i1 = int("0b11001",base=2) # 25
i2 = int("0o27",base=8)    # 23
i3 = int("0x1c",base=16)   # 28

3.计算机中的单位

  • b(bit),位

    1   	1位
    10  	2位
    111  	3位
    1001	四位
    
  • B (byte),字节

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

    1024 个字节就是1个千字节
    
    1kb = 1024B = 1024 * 8b
    
  • M (Megabyte),兆

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

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

    1024G 就是 1T
    
  • …其他更大的单位PB/EB/ZB/YB/BB/NB/DB 依次以1024进制类推

4. 编码

4.1 ASCII编码

ASCII规定使用1个字节来表示字母与二进制的对应关系,共2**8 = 256种

https://www.asciitable.com/
在这里插入图片描述
在这里插入图片描述

4.2 gb-2312编码

gb-2312编码,由国家信息标准委员会制作(1980年)。

gbk编码,对gb2312进行扩展,包含了中日韩等文字(1995年)。

在与二进制做对应关系时,有如下逻辑:

  • 单字节表示,用一个字节表示对应关系。2**8 = 256
  • 双字节表示,用两个字节表示对应关系。2**16 = 65536中可能性。

4.3 Unicode

Unicode也被称为万国码,为全球的每个文字都分配了一个码位(二进制表示)。https://unicode-table.com/en/blocks/

  • ucs2

    用固定的2个字节去表示一个文字。
    
    00000000 00000000     悟
    ...
    
    2**16 = 65535
    
  • ucs4

    用固定的4个字节去表示一个文字。
    00000000 00000000 00000000 00000000  无
    ...
    2**32 = 4294967296
    
    文字     十六进制            二进制 
     ȧ        0227           1000100111
     ȧ        0227         00000010 00100111                       ucs2
     ȧ        0227         00000000 00000000 00000010 00100111     ucs4 # 位数不够,拿来来凑,向下包含
    
     
     乔       4E54           100111001010100
     乔       4E54         01001110 01010100                       ucs2
     乔       4E54         00000000 00000000 01001110 01010100     ucs4
     
     									
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

day02-08 python基础语法 的相关文章

随机推荐

  • shell脚本:函数

    shell脚本 函数 一 函数 1 定义 2 作用 3 格式 二 函数传参 1 定义 2 函数变量 3 递归 4 函数库 一 函数 1 定义 1 将命令序列按格式写在一起 2 可方便重复使用命令 2 作用 1 避免代码重复 2 把大工程分割
  • 2019南邮年微机原理及应用复试真题

    2019南邮年微机原理及应用复试真题 一 填空题 1 46的原码 反码以及补码的十六进制 H H H 2 8254实现日时钟定时的是 号计数器 计数初值 通常输出周期 3 每一个8254中有三个 位计数器 每一个计数器有 种工作方式 4 8
  • MMselfSup训练自监督模型之mocov3

    一 环境搭建 1 创建虚拟环境 conda create name openmmlab python 3 8 y 激活虚拟环境 conda activate openmmlab 2 安装pytorch torchvision 根据自己的配置
  • java 读取excel数据

    本文共介绍两种方式 第一种是常规POI读取 第二种是大文件读取 依赖包
  • AbstractQueuedSynchronizer(AQS) 原理

    一 AQS 简介 1 1 AQS 是什么 AQS AbstractQueuedSynchronizer 抽象队列同步器 是一个用来构建锁和同步器的框架 使用 AQS 能简单且高效地构造出应用广泛的大量的同步器 比如我们提到的 Reentra
  • 高光谱图像处理

    Development of a classification algorithm for efficient handling of multiple classes in sorting systems basesd on hypers
  • ps语义分割_解决实例分割任务中边缘不够精细:PointRend: Image Segmentation as Rendering...

    加入极市专业CV交流群 与6000 来自腾讯 华为 百度 北大 清华 中科院等名企名校视觉开发者互动交流 更有机会与李开复老师等大牛群内互动 同时提供每月大咖直播分享 真实项目需求对接 干货资讯汇总 行业技术交流 关注 极市平台 公众号 回
  • 计算机网络基础知识整理

    计算机网络 用通信设备和线路将处在不同地理位置 操作相对独立的多台计算机连接起来 并配置相应的系统和应用软件 在原本各自独立的计算机之间实现软硬件资源共享和信息传递等功能的系统 计算机网络的功能 数据通信 2 资源共享 3 增加可靠性 4
  • 【技术解析笔记】DDPM解析

    本文为youtube上一个ddpm解析视频的摘录笔记 youtube原视频链接 https www youtube com watch v W O7AZNzbzQ 基本介绍 DDPM指的是Denoising diffusion probal
  • hive - 面试题 - 最近一次购物在一年前(近一年内无购物)

    要求 有表 用户id 订单id 下单日期 该用户符合365天内无交易且当日有交易的数据打标签 如果当天有多条记录 同样打标签 思路 当前订单时间 最近一次的下单时间 gt 365 即最近365天内无订单记录 中间有个问题 一天内多次下单 只
  • 【GCC-RT-Thread】gcc交叉编译 STM32 - RT-Thread

    GCC RT Thread gcc交叉编译 STM32 RT Thread 最近在公司实习 公司想将原来在Windows keil上开发的项目移到Linux 并上RTT操作系统 最近就被安排做了这件事 首先 下载 RT Thread Nan
  • 学习记录396@git clone 只克隆到.git文件

    github上的仓库 但是使用乌龟克隆时只克隆到 git文件和README文件 原因是在我的仓库中 没有选择分支 默认是main分支 但我的项目在master分支 因此加上分支选项处在clone即可 如果是使用命令行clone 需要使用如下
  • python基础 -15- 深浅拷贝

    浅拷贝 data name alex age 18 scores 语文 130 数学 60 英语 98 浅拷贝 data copy data copy 再看一下各自的内存地址 可以发现指向的内存地址不一样 print data的内存地址 i
  • 白盒测试题(13-16道题目+详细代码)

    白盒测试 题 13 根据下列流程图编写程序实现相应分析处理并显示结果 并设计最少的测试数据进行判定覆盖测试 输入数据打印出 输入 x 值 输入 y 值 输出文字 a 和 a 的值 输出文字 b 和 b 的值 其中变量 x y 均须为整型 i
  • 红队靶场内网渗透(从DMZ主机渗透到域内机器)

    目录 一 红队靶场内网渗透 1 靶机工具下载 2 本实验网络拓扑图 3 内网渗透攻击流程 二 环境搭建 1 DMZ区win7 2 内网办公区 3 域控主机 三 开始攻击 1 DMZ区win7渗透 1 1信息收集 1 2收集到的信息 1 3远
  • 安卓手机使用Termux实现gitee云端代码本地化修改

    Termux是什么 Termux是一个Android终端仿真器和Linux环境应用程序 直接工作 无需根目录或设置 额外的软件包可以使用APT软件包管理器来使用 不需要root 有root更方便修改代码 下载地址 Termux 0 99 T
  • 人脸识别(dlib.face_recognition_model_v1 方法 -- 使用resnet模型)

    人脸识别 思路 通过检测面部特征 对该特征与数据存放的特征进行比对 文件结构 文件名 weights 的目录下 resnet模型 dat文件 识别68个关键点模型 dat文件 共两个模型文件 补充 你如果不使用dlib库中自带的HOG人脸检
  • 网络基础 (深信服)

    一 走进网络世界 1 1 1 企业网络环境介绍 计算机网络类型 LAN 本地局域网 Local Area Network 通常指几千米以内的 可通过某种介质互联的计算机 打印机 modem或其他设备的集合 WAN 广 域 网 Wide Ar
  • 【C语言】你还在写void main()吗?我劝你别用,小心出BUG

    目录 前言 C语言标准并不支持void main 用void main 可能会报错 总结 前言 你的教材上是不是经常出现void main 呢 我想说 永远不要写void main 为什么 这种写法普遍存在于我们国内的很多教材 既然出现在教
  • day02-08 python基础语法

    模块一 python基础语法 day2 快速上手 今日概要 课程目标 学习Python最基础的语法知识 可以用代码快速实现一些简单的功能 课程概要 初识编码 密码本 编程初体验 输出 初识数据类型 变量 注释 输入 条件语句 1 编码 密码
Powered by Hwhale