Python笔记·第一章

1.基础阶段

软件概述

软件的定义
  • 是指一些按照特定顺序组织的能够被计算机识别的数据与指令的集合在解决问题的时候,一定要先分析问题(把解决问题的步骤先一步一步列出来,然后再利用编程语言进行编码)
软件的分类
  • 操作系统软件:Windows Android IOS Harmony
  • 主要负责管理和调控计算机硬件,给用户提供最基本的计算机功能(磁盘管理,上网管理,内存管理,用户管理......
  • 应用软件:微信 优酷 支付宝 网易云
  • 提供专业领域服务的软件,是基于操作系统软件运行的
编程语言
  • 机器语言:所有的数据都是由01组成,人看不懂,机器能看懂
  • 汇编语言:1 2 add,必须要考虑计算机的执行过程,门槛比较高
  • 高级语言:C C++ Java Python JavaScript....,以人类的角度设计的,对学习者非常友好,但是计算机就看不懂了
进阶知识:
  • 静态编译型:C C++ Java
  • 动态解释型:Python JavaScript (脚本语言)
编译与解释的区别:

两种方式的区别在于翻译时间点的不同。当编译器以解释方式运行的时候,也称之为解释器

  • 静态与动态的区别:

        静态对于变量有明确的类型定义的 动态对变量没有明确类型定义的

        在C C++ Java中,基本数据类型变量(将常量数据存储在变量空间当中)

int a = 3;

int b = 4;

C C++中,指针变量(存储的是变量的物理内存地址)

int a = 3;

int* b;

b = &a;

int** c;

c = &b;

printf("%d", &c); //0x789

printf("%d", *c); //0x123

printf("%d", &**&c); //0x456

  • Java中,引用数据类型变量(将对象在堆内存中的地址给变量)

        Object obj = new Object();

        Object obj2 = obj;

  • 动态语言(所有的数据都是对象!所有的变量都是引用数据类型变量)

        var a = 1

        var b = 1.1

        b = new object();

脚本与交互

交互模式(不常用)
  • 打开CMD窗口,输入python指令,进入到了python交互模式

C:\Users\Administrator>python

Python 3.12.1 (tags/v3.12.1:2305ca5, Dec 7 2023, 22:03:25) [MSC v.1937 64 bit

(AMD64)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> print("Hello Wolrd!")

Hello Wolrd!

>>> print(1 + 2)

3

  •  print()输出函数,输出的内容写在一对小括号中print(XXX)
  • 弊端:代码不能持久保存,代码随着窗口关闭而消失
  • 我们一般在做简单的代码演示、测试会使用到交互模式
  • 为了永久保存代码,需要脚本模式  
脚本模式
打开 VSCode File New Folder ,选择代码目录, New File 按钮创建文件,输入名称和后缀名 (.py)
注意:一定要养成随时按crtl+s的习惯 保存
如何运行 Python 脚本文件呢
打开CMD 窗口,进入到代码目录路径
指令: python XXX.py 运行 XXX.py 文件

基本数据

Python 能够操作的数据都有哪些
常量
  • 不能够改变的量-字面量
整数常量
>>> print ( 10 ) # 十进制
10
>>> print ( 0b1001 ) # 二进制 binary
9
>>> print ( 0o12 ) # 八进制 Oct...
10
>>> print ( 0x12 ) # 十六进制 Hex...
18
123 % 7 = 4
17 % 7 = 3
2 % 7 = 2
234 七进制
4 * 7 ^ 0 + 3 * 7 ^ 1 + 2 * 7 ^ 2 = 4 + 21 + 98 = 123
注意:没有byte short long 之分 一律默认int
小数常量
>>> print(1.34)
1.34
>>> print(0.12e10) #0.12*10^10
1200000000.0
注意:没有floatdouble之分 默认float
字符串常量
字符串表示一段文本信息,程序会将文本信息原封不动的处理
>>> print("1+2+3")
1+2+3
>>> print('1+2+3')
1+2+3
Python 没有字符的数据,一律当成字符串处理,双引号和单引号都可以表示字符串
>>> print(" 张老师说 :" 好好学习 "")
File "<stdin>", line 1
print(" 张老师说 :" 好好学习 "")
^^^^^^^^^^^
SyntaxError: invalid syntax. Perhaps you forgot a comma?
>>> print(" 张老师说 :' 好好学习 '")
张老师说 :' 好好学习 '
布尔值常量
只有两个值 True False T F 是大写的
>>> print ( True + 1 )
2
>>> print ( False + 1 )
1
True 如果参与运算默认为 1 False 默认为 0 ,这种有意义吗?
复数常量
>>> 1+2j
(1+2j)
>>> complex(1,2)
(1+2j)
>>> (1+2j)*(1-2j)
(5+0j)
标识符
就是我们程序员自定义的一些名称(变量 函数 类)
  • 规则:
  • 由字母、数字、下划线、美元符组成
  • 数字不能开头
  • 是一个连续的词,中间不能有空格分开
  • 规范:
  • 小驼峰:变量 函数 多个单词出现时 第一个单词首字母小写 之后单词首字母都大写 myName
  • 大驼峰:类 所有单词首字母大写 MyName
  • 下划线分割:单词之间用下划线分割 不大写 my_name
起的任何名字必须有含义 ,就算英文单词记得不多,也可以允许用拼音
关键字
就是一些单词,被 Python 赋予了特殊的含义, 不能随便使用
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', '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']
内置函数名/类名
内置函数就是 Python 自带的一些具有特殊功能的函数
>>> print(123)
123
>>> print = 3
>>> print + 4
7
>>> print(7)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
>>> print(3)
3
>>> show = print # print 指向的那个函数给了 show
>>> print = 3 # 3 对象的地址给了 print
>>> print + 4
7
>>> show(7)
7
所以,我们在使用内置函数的时候,一定要注意名称不能够被更改
>>> max ( 432 , 5443 , 1 , 2 , 5 , 6 , 78 , 4 , 5 , 435 )
5443
>>> max = 10
>>> max ( 1 , 2 , 3 )
Traceback ( most recent call last ):
File "<stdin>" , line 1 , in < module >
TypeError : 'int' object is not callable
注释
  • 单行注释

        # 后面就是注释的内容 直到换行为止

  • 多行注释

        """

        中间多行注释

        """

变量
Python 当中 变量其实就是一个万能箱子 他可以存储任何数据
本质:变量它只存储数据在内存中的地址(引用类型变量)
数据类型 变量名 = 数据 # C Java
变量 = 数据
单独定义一个变量时
>>> a = 1
>>> b = 2
同时定义多个变量,给定多个数据
>>> a, b, c = 1, 2, 3
>>> a
1
>>> b
2
>>> c
3
多个变量的值是一样的
>>> a = b = c = 1
>>> a
1
>>> b
1
>>> c
1
补充:

不同类型变量之间的计算

  1. 数字型变量 之间可以直接计算
  • 在 Python 中,两个数字型变量是可以直接进行 算数运算的
  • 如果变量是 bool 型,在计算时

               True 对应的数字是 1
               False 对应的数字是 0

  1. 字符串变量 之间使用 + 拼接字符串
  2. 字符串变量 可以和 整数 使用 * 重复拼接相同的字符串
  3. 数字型变量 和 字符串 之间 不能进行其他计算

变量的引用
在 Python 中 :

  • 变量数据 是分开存储的
  • 数据 保存在内存中的一个位置
  • 变量 中保存着数据在内存中的地址
  • 变量记录数据的地址,即 引用
  • 使用 id() 函数查看变量中保存数据所在的 内存地址

注意:若变量已被定义,当给一个变量赋值的时候,本质上是 修改了数据的引用

                变量 不再 对之前的数据引用
                变量 改为 对新赋值的数据引用

数据转换

int a = (int) 3.14;
数据类型转换
int() 将其他有效的数据转为整数
取整
从字符串中解析整数
>>> int(3.14) # 将小数进行取整操作
3
>>> int("123") # 将数字字符串进行解析(默认十进制),解析出一个整数
123
>>> int("123abc")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '123abc'
>>> int("AD", 16) # 将数字字符串进行十六进制解析,结果都是十进制
173
# 10*16^1 + 13*16^0 = 173
>>> int("91A", 12)
1318
>>> 10 * 12 ** 0 + 1 * 12 ** 1 + 9 * 12 ** 2
1318
>>> int("A1F", 13)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 13: 'A1F'
>>> int("91a", 100)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: int() base must be >= 2 and <= 36, or 0
base 进制基数 = [2, 36]
>>> int("98*!",12) # 出现特殊符号
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 12: '98*!'
>>> int("10010101") # 注意坑 二进制串特不一定是二进制数字
10010101
>>> int("10010101", 2)
149
float():将其他的数据转为小数
>>> float(3)
3.0
>>> float(3.14)
3.14
>>> float("3.14")
3.14
>>> float("3.14", 10)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: float expected at most 1 argument, got 2
str():将其他数据转字符串
>>> str(123)
'123'
>>> str(3.14)
'3.14'
>>> str(print)
'<built-in function print>'
bool() :将其他数据转布尔类型
# 对于数值类型的话 非0全是True 0就是False
>>> bool(1)
True
>>> bool(-1)
True
>>> bool(0)
False
>>> bool(3.14)
True
>>> bool(-3.14)
True
>>> bool(0.0)
False
# 对字符串 空串为False 非空为True
>>> bool("abc")
True
>>> bool("") #空串
False
进制转换
>>> bin(123) # 转二进制字符串
'0b1111011'
>>> oct(123) # 转八进制字符串
'0o173'
>>> hex(123) # 转十六进制字符串
'0x7b'
>>> bin("123") # 参数必须是整数
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object cannot be interpreted as an integer
>>> bin(3.14)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'float' object cannot be interpreted as an integer
字符与ASCII码转换
a~z A~Z 0~9 他们在 ASCII 中的编号都是连续的
ord() :获取字符对应的 ASCII 码编号
>>> ord('a')
97
>>> ord('A')
65
>>> ord('0')
48
chr() :根据给定的 ASCII 码编号获取对应的字符
>>> chr(98)
'b'
>>> chr(57)
'9'
A = 10 B = 11 ...... F = 15
13 - D
chr(ord('A') + 13 - 10)
常见的数学计算
>>> abs(3.14) # 取绝对值
3.14
>>> abs(-3.14)
3.14
>>> pow(2, 4) # a b 次幂
16
>>> pow(2.0, 4)
16.0
>>> pow(16, 0.5)
4.0
>>> max(1, 2, 3, 4) # 求最值问题
4
>>> min(1,2,3,4)
1
>>> round(3.14) # 四舍五入
3
>>> round(3.51)
4

输入与输出

input()
#num = int(input(" 请输入一个数字 :"))
num = eval ( input ( " 请输入一个数字 :" ))
# input() 默认输入的是一个字符串 ( 整行 )
print ( num + 1 )
"""
TypeError: can only concatenate str (not "int") to str
反向证明输入的是字符串
ValueError: invalid literal for int() with base 10: '123 456'
"""
# 处理一行内多个数据的输入
# eval 处理的数据必须要有逗号分隔
# eval 自动处理字符串解析
# eval 既可以处理单值 也可以处理多值
"""
请输入两个数字 :123,456
579
"""
num1 , num2 = eval ( input ( " 请输入两个数字 :" ))
print ( num1 + num2 )
print()
print ( "Hello World" )
print ( 1 + 2 + 3 )
print ( 1 , 2 , 3 , "Hello World!" ) # 多数据输出 用空格分隔
print ( 1 , 2 , 3 , sep = "#" ) # sep 默认空格
print ( 1 , 2 , 3 , end = "!!!" ) # end 输出的解围 默认 "\n"
# print(*args, sep=' ', end='\n', file=None, flush=False)
print ( 1 , 2 , 3 , end = "!!!" )
print ( "Hello World" , end = "!!!" )
print ( "Hello World" , end = "!!!" )
print () # 单独一个 print 换行的意思 其实打印的是空串
# 格式化输出
name = " 旺财 "
age = 18
height = 1.23
print ( " 它叫 " , name , " ,今年 " , age , " " , sep = "" )
# %s 对应字符串 %d 对应整数 %f 对应小数
print ( " 它叫 %s ,今年 %d 岁,身高 %.2f " % ( name , age , height ))

运算符

算数运算符

是完成基本的算术运算使用的符号,用来处理四则运算


+            加
-             减
*             乘
/             除
//            取整除(返回除法的整数部分(商))
%           取余数(返回除法的余数)
**           幂

  • 在 Python 中 * 还可以用于字符串,结果是字符串重复指定次数的结果
优先级
  1. 先乘除后加减
  2. 同级运算符是 从左至右 计算
  3. 可以使用 () 调整计算的优先级
  4. 算数优先级由高到最低顺序排列
实例:
加法:数值相加,序列拼接
>>> 1 + 2
3
>>> "123" + "456"
'123456'
减法:数值相减
乘法:数值相乘,序列增倍
>>> 3 * 6
18
>>> " 我爱你 " * 3
' 我爱你我爱你我爱你 '
除法:小数除 / ,整数除 //
整数除 只要两边都是整数 结果一律为整数 但凡有一个小数 结果就是小数(只有整数位,小数位都为 0
>>> 10 / 2
5.0
>>> 10 // 2
5
>>> 10 / 3
3.3333333333333335
>>> 10 // 3
3
>>> 10.0 // 3
3.0
>>> 10.5 // 3
3.0
幂运算
>>> 2 ** 3
8
>>> 16 ** 0.5
4.0
取余: 10 / 3 = 3 ~ 1
>>> 10 % 3
1
取余经常用于哪些场景,带有数据重复或循环的情况
22 日对应周五, 22 % 7 = 1 余数为 1 则对应周五 0 对应周四 ....
30 % 7 = 2 对应周六
布尔判断运算符
运算结果一律为布尔值
大于 小于 大于等于 小于等于 不等于 等于
>         <         >=         <=         !=         ==
Python允许连续比较
>>> 1 < 2 < 3
True
>>> 1 < 2 and 2 < 3
True
Python当中 == 到底比得是啥?
答:比的是具体对象的值
>>> a = 1
>>> b = 1
>>> id(a) # id 取变量中存储的数据对象在内存中的地址
140715464473016
>>> id(b)
140715464473016
>>> a = 1000
>>> b = 1000
>>> id(a)
3267440575376
>>> id(b)
3267440589968
可以发现 a b 在为 1000 时 对象地址不一样?
因为在 Python 当中 只有 -5~256 Python 会自动创建这些数据对象,提供给调用者使用
也就意味着如果创建该范围之外的数据对象的话, Python 则重新创建新的对象出来
a = 1000, b = 1000 其实是两个 1000 数据的对象
a == b 比的是对象的内容 但是 a b 存的地址不一样
a = 1, b = 1, 其实只有一个 1 数据的对象
a == b 比的是对象的内容 但是 a b 存的地址一样
增强型赋值运算符
+=         -=         *=         /=         //=         **=         %=
a += 2
a = a + 2
b **= 2
b = b ** 2
额外多说一句:在 Python 中 是不存在 ++ -- 这种自增运算符的!
int i = 1 ;
i ++ ;
System . out . println ( i );
System . out . println ( i ++ );
int j = i ++ ;
System . out . println ( i );
System . out . println ( j );
i = i ++ ;
System . out . println ( i );
i = i ++ ;
System . out . println ( i );
i++流程
1. 开辟临时存储区
2. i的值复制到临时存储区内
3. i自身+1
4. 临时存储区的值等待被调用(输出 赋值 参与运算)
System . out . println ( x ++ + ++ x + ++ x + x ++ ); // 12
System . out . println ( x ); // 5
逻辑运算符
与 或 非 = and or not && || !
与:全真则真 有假则假
或:有真则真 全假则假
非:取反
>>> 1 < 2 and 2 < 3
True
>>> 1 < 2 or 2 > 3
True
>>> not 1 < 2
False
& &&的区别
int x = 0;
int y = 0;
System.out.println(x++ < 0 & y ++ < 0); //无论左边是否为假 右边都要计算
System.out.println(x); //1
System.out.println(y); //1
int x = 0;
int y = 0;
System.out.println(x++ < 0 && y ++ < 0); //如果左边是假 右边不计算
System.out.println(x); //1
System.out.println(y); //0
&& 就是为了避免一些没有必要的计算 提高效率
位运算符
&按位与
>>> 13 & 7
5
1101
0111
0101 = 5
|按位或
>>> 13 | 7
15
1101
0111
1111 = 15
>> 右移
>>> 16 >> 2
10000
100|00
100 = 4
16 / 2 ^ 2
<< 左移
>>> 2 << 3
16
0010
0010000
10000 = 16
2 * 2 ^ 3
~取反 符号取反再减1
>>> ~15
-16
01111 = 15
10000 = -16
^ 异或:相等为假 不同为真
>>> 13 ^ 7
10
1101
0111
1010 = 10
关于变量交换值
a = 1
b = 3
temp = a
a = b
b = temp
a, b = b, a # Python自带的交换特点
只针对整数
a = 10
b = 100
a = a + b # 110
b = a - b # 10
a = a - b # 100
只针对整数
a = a ^ b
b = a ^ b
a = a ^ b
成员运算符
in not in
判断一个元素是否在另一个序列中
>>> "abc" in "sakjdgjhsgadugashjdvasvdjgsa"
False
>>> "abc" in "sakjdgabca"
True
>>> 1 in [2,3,4]
False
从属/身份运算符
is not is
判断两个变量指向的对象是否是同一个对象(比地址)
>>> a = 1
>>> b = 1
>>> a == b
True
>>> a is b
True
>>> a == 1000
False
>>> a = 1000
>>> b = 1000
>>> a == b
True
>>> a is b
False
>>> a = "abc" # 字符串
>>> b = "abc" # 之前已经创建了 "abc" 这里直接复用 而不是重新创建 跟整数是有区别的
>>> a == b
True
>>> a is b
True
>>> id(a)
140715463387184
>>> id(b)
140715463387184

条件判断

只有 if-else 语句, Python不支持switch语句
# if语句
if 条件语句:
条件为真时执行的内容
# if-else语句
if 条件语句:
条件为真时执行的内容
else:
条件为假时执行的内容
# if-elif语句 else if
if 条件语句1:
条件语句1为真时执行的内容
elif 条件语句2:
条件语句2为真时执行的内容
elif ....
else:
所有条件都不满足时执行的内容
# 语句嵌套
if 条件1:
if 条件2:
执行内容(12都满足)
else:
执行内容(满足1不满足2)
else:
执行内容(12都不满足)

循环语句

主要解决什么样的问题:具有重复性、规律性的问题
向前走 10 步:有明显的循环次数的 - for
向前走,直到碰墙为止:没有明显的循环次数的,但是有结束条件 - while
循环四要素:
  • 循环的开始(从第1步开始;从第1步开始/从起点开始)
  • 循环的继续条件(还没走到第10步;没有碰到墙/就是看距离)
  • 循环体(走的每一步;走的每一步)
  • 循环的步长/间隔/周期/进度(步数的统计;距离的统计)
(一)while循环

初始条件设置 —— 通常是重复执行的 计数器

while 条件(判断  计数器 是否达到 目标次数):
    条件满足时,做的事情1
    条件满足时,做的事情2
    条件满足时,做的事情3
    ...(省略)...
    
    处理条件(计数器 + 1)

注意:

  • while 语句以及缩进部分是一个 完整的代码块

注意:循环结束后,之前定义的计数器条件的数值是依旧存在的

// 打印 1 ~ 100
for ( int i = 1 ; i < = 100 ; i ++ ) {
System . out . println ( i );
}
-> -> -> -> -> -> -> -> -> -> 不满足为止
int i = 1 ;
for (; i < = 100 ;) {
System . out . println ( i );
i ++ ;
}
== >
int i = 1 ;
while ( i < = 100 ) {
System . out . println ( i );
i ++ ;
}
Python
for i in range ( 11 ):
print ( i )
"""
range(n) : 取值范围是 [0,n) 步长默认为 1
0 1 2 3 4 5 6 7 8 9 10
i
循环的开始: 0
循环的继续条件: i < n
循环体: print(i)
循环的步长 : 步长默认为 1
"""
for i in range ( 2 , 10 ):
print ( i )
"""
range(a, b): 取值范围 [a, b) 步长默认 1
"""
for i in range ( 2 , 13 , 2 ):
print ( i )
"""
range(a, b, c): 取值范围 [a, b) 步长默认 2
"""
print ( "=" * 12 )
for i in range ( 100 , 1 ):
print ( i )
for i in range ( 100 , 10 , - 10 ):
print ( i )
"""
range(a,b,c)
如果 c > 0, a < b 才是有效范围 递增
如果 c < 0, a > b 才是有效范围 递减
"""
# 特殊的 结合序列去使用 遍历序列中每一个元素
for i in "abcdefg" :
print ( i )
"""
******
******
******
******
******
"""
for i in range ( 5 ):
print ( "******" )
print ( "=" * 10 )
for i in range ( 5 ):
for j in range ( 6 ):
print ( "*" , end = "" )
print ()
print ( "=" * 10 )
"""
*
**
***
****
*****
******
"""
for n in range ( 6 ):
for i in range ( n ):
print ( "*" , end = "" )
print ()
  • 19
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值