首页 > 编程语言 >Python基础笔记02-while、字符串格式化、运算符、基础概念与数据类型

Python基础笔记02-while、字符串格式化、运算符、基础概念与数据类型

时间:2024-04-08 23:01:10浏览次数:28  
标签:02 name text 数据类型 运算符 v1 print data 计算机

前言

!!!注意:本系列所写的文章全部是学习笔记,来自于观看视频的笔记记录,防止丢失。观看的视频笔记来自于:哔哩哔哩武沛齐老师的视频:2022 Python的web开发(完整版) 入门全套教程,零基础入门到项目实战

1. 条件语句补充

1.1 基本语句

if 条件:
	...
else:
    ...

1.2 多条件

if 条件1 :
    xxx
elif 条件2 :
    xxx
elif 条件三 :
    xxx
else:
    xxx

注意:所有条件中的else都可以省略

1.3 嵌套

此处省略三万字

2. while 循环

2.1 基本格式

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

2.2 循环基本使用

i = 0
while i < 10:
    print(i)

2.3 break

break不能独立使用 只能放在循环内部使用 立即跳出循环 并终止循环

2.4 continue

continue也是只能放在循环里面 不能单独使用 跳出这一次循环并开始下一次循环

3. 字符串格式化

3.1 format(推荐)

# 占位符:

text= '我的名字叫{0},今年{1}岁'.format("计算机", 20)
print(text)
# 占位符:

text = '我的名字叫 {0} ,就是 {0} 的 {0},今年 {1} 岁'.format("计算机", 20)
print(text)
# 我的名字叫 计算机 ,就是 计算机 的 计算机,今年 20 岁
# 占位符:

text = '我的名字叫 {0} ,就是 {0} 的 {0},今年 {1} 岁 {0}'.format("计算机", 20)
print(text)
# 我的名字叫 计算机 ,就是 计算机 的 计算机,今年 20 岁 计算机
text = '我的名字叫{},我今年{}岁,我爱吃{}'.format("计算机", 20, 'Apple')
print(text)
# 比较常用
tpl = "我的名字叫{} 今年{}岁"
v1 = tpl.format("计算机", 19)
v2 = tpl.format("电脑", 20)
print(v1)
print(v2)
text = '我的名字叫{name},我今年{age}岁,我爱吃{food}'.format(name="计算机", age=20, food='Apple')
print(text)

3.2 %

text = '我的名字叫 %s ,今年 %d 岁' % ('计算机', 19)
print(text)
text = '我的名字叫 %s ,今年 %d 岁' 
v1 = text % ('计算机', 19)
print(v1)

3.3 f-string python3.6以后才有

name = "计算机"
age = 10
text = f'我的名字叫{name}, 我今年{age}岁'
print(text)

4. 运算符(特殊)

  • 算数运算符

  • 比较运算符

    >
    >=
    <
    <=
    ==
    != (python现已不支持<>)
    
  • 赋值运算符

    =
    +=
    *=
    -*
    /=
    %=
    
  • 成员运算

    text = '日本人不是人'
    v1 = '日本' in text
    v2 = '俄罗斯' in text
    
  • 逻辑运算

    与 and
    或 or
    非 not
    
  • 关于逻辑运算符的一些特别应用

    • 一般:

      v1 = 条件 and/or 条件
      
    • 高级用法:整体结果取决于哪个值,那么就是这个值. 很少写,面试题

      '''
      值 and 值
      
      逻辑运算的结果取决于哪个值,结果等于那个值 
      拿 2 and 4 举例,
      首先判断2,为真,
      	那么只要and后面的值为真,那么就为真,那么值就是后面那个值.
      	如果and后面的值为假,那么就为假,那么值就为前面的那个值.
      	(即前面一个为真以后,and判断的整个语句取决于后面那个值)
      '''
      
      # v1 = 值 and/or 值
      
      v1 = 1 and 2
      v2 = 2 and 4
      print(v1)
      print(v2)
      
      # 运行结果:
      2
      4
      
      v1 = 1 and 2
      v2 = 2 and 4
      print(v1)
      print(v2)
      
      v3 = 0 and 1
      v4 = 1 and 0
      print(v3)
      print(v4)
      
      # 运算结果
      2
      4
      0
      0
      
      
      v1 = 1 and 2
      v2 = 2 and 4
      print(v1)
      print(v2)
      
      v11 = 2 and 1
      v12 = 4 and 2
      print(v11)
      print(v12)
      
      v3 = 0 and 1
      v4 = 1 and 0
      print(v3)
      print(v4)
      
      # 运算结果
      2
      4
      1
      2
      0
      0
      
      v1 = 6 and 9------------------------------------------------------------------>    9
      v1 = 0 and 1------------------------------------------------------------------>    0
      v1 = 88 and 0----------------------------------------------------------------->    0
      v1 = "" and 9----------------------------------------------------------------->    ""
      v1 = "计算机" and "专业"------------------------------------------------------>    "专业"
      
      v1 = 1 or 2------------------------------------------------------------------->    1
      v1 = 0 or 2------------------------------------------------------------------->    2
      v1 = 1 and 8 or 9 and 10 or 11 or 12 and 0 or "" and "计算机"----------------->    8
              8   or    10     or 11 or     0      or  ""  
                   8           8       8       8   
      

      image-20240112224459377

      # 低级写法:
      name = 19
      if bool(name):
          v1 = name
      else:
          v1 = 666
          
      # 高级写法:
      name = 19
      v1 = name or 666
      

5. 计算机中的一些基础概念

5.1 进制

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

在python中转换进制:

# 二进制  :  0b000111
# 八进制  :  "0o311"
# 十六进制:  "0x256c"

# 进制转换:
data = 238  # 十进制
bin(data)   # 二进制
oct(data)   # 八进制
hex(data)   # 十六进制

# 其他进制转换为十进制:
d1 = int("0b11101110", base=2)
d2 = int("0o356", base=8)
d3 = int("0xee", base=16)

image-20240113195431744

以十进制为中介转换

5.2 计算机中的单位

8G 1T 300M

  • b (bit) 位/比特

  •   0    1位
      1    1位
    
  • B (Byte) 字节

    1000 0101			   1个字节
    0000 1111	0010 0101	两个字节
    
  • KB 千字节

  • M 兆

  • MB 兆字节

  • G 千兆

  • T 万亿

  • PB……

  • 假设:办理了1G套餐:

    • (1024 * 1024 * 8) 个bit
    • 一个汉字,占2B -> 16bit
    • 那么1G能发多少个汉字? (1024 * 1024 * 8) / 16

5.3 编码

编码 文字与0101的对照表

5.3.1 ASCII编码

  • 256个对应关系
  • 在ASCII码中使用一个字节(8位)表示一个符号
  • 只能有256种可能

5.3.2 GBK和GBK-2312

  • GBK-2312 : 1980年

  • GBK : 包含中日韩等文字 1995年

5.3.3 unicode(万国码)

  • ucs2 : 用固定的两个字节表示二进制和文字的对应关系 2 ** 64 = 65535

  • ucs4 : 用固定的四个字节表示二进制和文字的对应关系 2 ** 32 = 429467296

5.3.4 UTF-8编码

对unicode进行压缩,并且不使用固定字节的编码。

写代码的时候一定要保存为UTF-8编码!

一般UTF-8对于中文压缩以后,用三个字节表示。

5.3.5 python

name = "计算机"                 ->     字符串类型 在Python内部 使用unicode编码存储(ucs4)
data = name.encode('utf-8')     ->     字节类型  使用UTF-8编码存储

image-20240113201905577

b'\xe8\xae\xa1 \xe7\xae\x97 \xe6\x9c\xba'
        计           算           机

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

# 在文件中写入字符串
name = "计算机"

# 打开文件
file = open("name.txt", mode='ab')

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

# 关闭文件
file.close()
  • 文件编码:

    • 我们自己写的都是文本,按照某种编码存储编码,那么就用的是某一种编码。

    • 读取文件:要读取文件内容,我们需要用同样的编码打开才可以。

    • Python解释器:保存和打开文件的时候,用的是utf-8

    • Python将代码读取到内存之后,需要进行语法和词法分析,一定会有不同的数据类型之分;

      name = "计算机"   ->   字符串 去unicode对应关系中找
      age = b"aa000"    ->   字节   去UTF-8对应的关系中找
      

6. 重新学习数据类型(重要)

布尔值   bool
整型     int
字符串   str
列表     list  []
元组     tuple ()
字典     dict  {}
n1 = "root"
res = n1.upper()  # res -> "ROOT"
list_1 = [1, 2, 3, 4]
list1.append(4)  # 在列表尾部追加一个元素

list_2 = [11, 22, 33]
list_2.append(44)  # 在列表尾部追加一个元素

attention: 将每个类型的方法封装到类型里面

6.1 字符串

6.1.1 如何定义字符串

name = "计算机"
email = "[email protected]"

注意:字符串是一个不可变的类型

6.1.2 独有的功能

upper lower isdecimal strip lstrip rstrip replace

data = "root"
res = data.功能名()
# 但是,data的值还是原来的值,不会变
  • 大写 小写

    name = "root"
    res = name.upper()  # "ROOT"
    
    name = "Root"
    res = name.lower()  # "root"
    
  • isdecimal 判断字符串是不是整数

    data = "999"
    v1 = int(data)
    
    data = "计算机"
    v1 = int(data)  # 报错
    
    • ❗❗❗关于作用域:
      • 在java中 以代码块为作用域 在一个代码块中创建的代码块,那么在代码块外不能访问
      • 在Python中,以函数为作用域 函数执行到那个点以后创建了代码后 才会创建变量,如果代码执行不到,那么不会创建这个变量
  • startswith 和 endswith 判断一个字符串是以…开头或者以…结尾

    name = "计算机科学与技术"
    
    v1 = name.starswith("计算")  # True
    v2 = name.endswith("技")  # False
    
  • strip/lstrip/rstrip 去除空白(包含回车 换行 制表符"\t")

    name = " 计算 机 "
    name.strip()      # "计算 机"   只能去除两边的空格
    name.lstrip()     # "计算 机 "  只能去除左边的空格
    name.rstrip()     # " 计算 机"  只能去除左边的空格
    

    image-20240113211918030

  • replace 替换,将一个字符串中指定 的内容替换成其他的东西

    text = "计算机科学与技术"
    new_text = text.replace("计算机", "软件")
    
    print(text)
    print(new_text)
    

    image-20240113213456540

  • 练习题:

    # 让用户输入一段文本 如果出现 计算机,替换成***
    
    text = input("请输入您的评论\n>>>")
    new_text = text.replace("计算机", "***")
    print(new_text)
    

标签:02,name,text,数据类型,运算符,v1,print,data,计算机
From: https://www.cnblogs.com/wephilos/p/18122870

相关文章

  • TAMUctf 2024 RSA-证书修复-总结
    上周末跟朋友们参加了TAMUctf2024国际赛,最终排在了第14名,还是很不错的成绩。本次比赛Monk师傅也是出了三个RSA证书修复问题的题目,质量很不错。这里给大家整理一下供学习。Truncated1题目:Author:MonkOnlypartoftheprivatekeywasabletoberetrieved.Decryptth......
  • 2024/4/8 课件补题
    2024/4/8课件补题[AGC055B]ABCSupremacy思维题。发现所有的\(ABC\),\(BCA\),\(CAB\)都可以任意向左向右移动,所以只需要把所有的\(ABC\)挪到字符串结尾即可,具体操作时可以删掉再比对\(s\)和\(t\)是否相同。#include<bits/stdc++.h>usingnamespacestd;#defineld......
  • Day5.一刷数据结构算法(C语言版) 242有效的字母异位词; 349两个数组的交集; 202快乐数; 1
        现在我们开始学习哈希表.        经过本次学习我认识到c++的便利,但是我使用的是c,那些功能c又用不了,导致代码长度一下子拉长了...        一刷的时候我还是先用c吧,等二刷的时候试试c++.        进入正题:        什么时候......
  • 【Kotlin】运算符函数、解构函数、中缀函数
    1一元运算符函数1.1符号和函数符号函数+aa.unaryPlus()-aa.unaryMinus()!aa.not()a++a.dec()a--a.inc()1.2案例funmain(){varstu=Student("Tom",13)println(-stu)//打印:[moT,31]}classStudent(varname:String,va......
  • 2024-04-08
    2024-04-08为了改昨天的T1,学一下线性基线性基线性基:找到一堆向量的一组基底,由原先所有向量组合出的数也可以由这组基底组合出来,且保证基底内含有的向量个数最少(极大线性无关组)不难发现一组线性基的向量数量为向量的维数主要用到异或线性基构建方法是扫描每个向量\(x\)......
  • AGC022F 做题记录
    link很牛逼的题目。操作\(A,B\),考虑从\(A\)向\(B\)连一条边,最终形成一棵内向有根树。所有次项的系数都是\(2^p(-1)^q\)的形式。对于树上的一个点\(u\),不难发现\(u\)的深度是\(2\)的次数。设\(c_{d,0/1}\)表示深度为\(d\)的点中系数为\(1/-1\)的点的个数,那么......
  • 2024年4月 杂题记录
    P10322高洁(Purity)设\(d=\prodp_i^{c_i}\),容易发现当\(d\midi^k\)时,\(i^k\)的所有质因子的幂次都不小于\(d\)的所有所有质因子的幂次,即\(i^k\)含有的质因子的幂次至少为\(\lceilc_i/k\rceil\),因此我们设\[f_k(d)=\prodp_i^{\lceilc_i/k\rceil}\]那么就有\(d\mid......
  • 2024.3.25(周一)总结
    完成python作业6-1使用函数输出指定范围内Fibonacci数的个数本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m<n≤100000)之间的所有Fibonacci数的数目。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列,fib(0......
  • 2024.3.26(周二)进度
    完成python作业6-2计算素数和本题要求计算输入两个正整数x,y(x<=y,包括x,y)素数和。函数isPrime用以判断一个数是否素数,primeSum函数返回素数和importmathdefprimeSum(x,y):MAX_INT=yMIN_INT=xmarks_bool=[True]*(MAX_INT+1)foriinrange(2,in......
  • python画信封 2024年3月青少年电子学会等级考试 中小学生python编程等级考试一级真题
    目录python画信封一、题目要求二、算法分析三、程序代码四、程序说明五、运行结果六、考点分析七、推荐资料1、蓝桥杯比赛2、考级资料3、其它资料python画信封2024年3月python考级一级真题一、题目要求龙年到了,我们要给远方的亲人写一封新年贺信,请用turtle......