我的Python笔记
python基础课:
编程基础课程,python基础课程,面向对象编程,pyhton高级知识
编程基础课程:
什么是python?
what?===》简单的编程语言==》python
how?python环境搭建---:开发环境 vscode,sublime,pychaprm....
运行环境 cpython解释器
python -V——测试运行环境
python怎么写代码
1.在终端写代码---》代码没有办法保存
2.写在python文件中以.py为结尾的文件
python pyyhon文件名
Ctrl+s——保存
注释:单行注释 #
多行注释 ‘’’‘’‘ 或”“”“”“
变量:在程序运行的时候,可以发生变化的量 ----具有名称的内存空间
常量:在程序运行的时候,不可以发生变化的量
java:变量类型 变量名 =变量值
int age = 10
python:变量名=变量值
a,b=1,2
(标识符)
变量名命名规范:1.使用大小写字母,数字,下划线
2.不能以数字开头
3.不能使用关键字和保留字
4.不能使用python全局中已经用过的
5.建议标识符名称具有意义 age
6.建议使用下划线或者小驼峰命名法
下划线:find下划线user group下划线by下划线username
小驼峰:findUsergroupByUsername
7.特殊类:大驼峰命名:FindUsergroupByUsername
python中没有常亮的关键字的,变量名称全部大写用来表示常量
abc=11 ABC=22 PI=3.14
dir():显示对象中存在的方法
python的数据类型:
基本数据类型
数字类型===》整型(int),浮点型(float),复数(a+bi)
布尔类型===》true false 判断条件是否成立的 (bool)
字符串类型===》”“(两个双引) ’‘ (两个单引) ’‘’‘’‘(六个单引)”“”“”“(六个双引)
“”“(三个双引可以换行) str
=——赋值 ==——等于
/n:换行符
ord():获取字符的整数表示
chr():把编码转换为对应的字符
print:输出函数
input:输入函数(”提示语“)
type():用来检测变量的数据类型的
eval:eval(“1,2”)
(1,2)
(a,b)=(1,2)
math.pi=Π
复合数据类型===》所有的对象
字典,列表,元组,集合
数据类型转换:自动类型转换:整形 浮点型 布尔
(三个间可以互相换):非0为真,0为假
强制类型转换:int()/float()/str()
num1+num2=num3
print(a+“+”b+“=”+c)
int(a)+int(b)——才是a+b
清屏:import os
os.system(”command“)
常见的运算符:
算数运算符:+ - * / //(整除) %(余:例如10除3余1) **(幂次方:例如10 ** 2=100)
关系运算符:1.> 2.< 3.> = 4.< = 5.== 6.!=(<>)
逻辑运算符:and(两真才真,一假则假) or(一真则真,两假才假) not
所属运算符:in not in ——用来确认是否处于容器里面
is运算符:is 判断内存地址是否相同 ==判断值是否相同
赋值运算符:= += -= *= /= //= %= **=
python中不存在自增自减
a +=1 ( a=a+1)
三木运算符:变量 = 值1 if 条件 else 值2
age = int(input("请输入你的年龄"))
n = "成年了" if age > 18 else "未成年"
print(n)
位运算符:计算机底层的运算规则
&:一假则假(一个0就为0)
例:10&11=10
0000 1010
0000 1011
------------
0000 1010
|:把两边的二进制各位进行或运算(两假才假){两个0才为0}
例:2|3=3
0000 0010
0000 0011
------------
0000 0011
^:相反为真(相反为1)
10^11
0000 1010
0000 1011
------------
0000 0001
~:按位取反 连带符号位
~10
0000 1010
1111 0101(补码)
1111 0100
1000 1011
<<:所有二进制位朝左移n位 (增长2的n次方倍)
12<<1
0000 1100
0000 11000
>>:所有二进制位朝右移n位 (减少2的n次方倍)
12>>1
0000 1100
0000 0110
电脑?数学模型 记录数据===》处理数据
半导体材料 ===》从一边到另外一边是通电的,反向不通电
一个二级管,对应一个二进制的数(0/1) ---1bit
1 byte=8个二级管(8bit)----0~255 256个数
byte——字节
负数:最高位作为符号位 0表示正 1表示负(127~-128——共256个)
为了解决负数运算,提出了三个概念:
原码——十进制对应的二进制 1000 0011
反码——符号位不变,其余位取反 1111 1100
补码——反码+1 1111 1101
例如:2+-3
0000 0010
1111 1101
------------
1111 1111 补码的状态
1111 1110 反码
1000 0001 原码(原码才是答案)
程序控制流程
解决语句与语句之间运行的顺序的问题的
顺序:代码整体的执行顺序 从上到下 从左到右
选择:不同条件下,执行不同的代码
if 条件(age):
#条件成立时执行的代码
print(“”)
else:
#条件不成立时执行的代码
例:
~~~python
month = int(input("请输入一个月份:"))
# if month > 12 or month < 1:
# print("出错啦~~~")
# else:
# if 1 <= month <= 3:
# print("春天")
# else:
# if 4 <= month <= 6:
# print("夏天")
# else:
# if 7 <= month <= 9:
# print("秋天")
# else:
# print("冬天")
多分支:
if 条件1:
条件1成立时执行的代码
elif 条件2:
条件2成立时执行的代码
....................................
例:
# 多分支
if month > 12 or month < 1:
print("出错啦~~~")
elif 1 <= month <= 3:
print("春天")
elif 4 <= month <= 6:
print("夏天")
elif 7 <= month <= 9:
print("秋天")
else:
print("冬天")
双分支的情况下,添加以下代码
else:
print(“”)
例:age = int(input(“请输入您的年龄:”)
if age > 18 :
print("你成年了,进去玩吧“)
else:
print'(”小屁孩,一边玩去“)
else内还可以嵌套(if和else)
例如:else:
if age>16:
print("man16")
else:
print("未满16周岁”)
# 缩进强调的是在同一个块内缩进量一致
tab相当于四个空格,但是tab键和空格键不要混合使用
pass(占位) #pass关键字保证语法的完整性
循环:
while 条件:
循环体
判断的index数值改变
else:
循环正常结束时,进行的代码
例:
a=int(input(“请输入要打印的层数:”)
index = 1
while index<=a
print(****")
index += 1
index = 1
while index <= a:
j = 1
while j <= index:
print("*",end="")
j+=1
print()
index += 1
for循环:主要用于容器的迭代
for临时变量 in 容器:
代码
例:
range(num1):[0,num1)之内所有的整数
range(num1,num2):[num1,num20之间所有的整数
range(num1,num'2step):
break: 终止掉离自己最近的循环,直接退出整个循环
continue: 跳过本次循环,直接开始下次循环
容器:
数据结构:
线性表:有序的
物理上存在的:
数组:类型一致的,大小固定,连续的内存结构
链表:不一定要内存空间连续,大小不固定(双向链表造成内存浪费)
逻辑上存在的:
栈:先进后出
队列:先进先出
python的内置容器
:
一.---list(列表):
底层使用的是双向链表 线性表 有序的
1.如何定义
(1)变量名=[ ]
例:b=[1,2,3,4,"chen",True]列表里边可以存储不同的数据类型
(2)list()将数据强制转化成列表
例:list([1,2,3,4]) list("chen”)
2.获得列表的长度 len()
3.获取每一个元素
下标——从0开始,从左向右
从-1开始,从右向左
例:
[1,2,3,4,"chen"]
0,1,2,3,4
aa[len(aa)-1]
修改数据:列表名[列表下标]=新的数据
"怎么添加数据,删除数据”
4.遍历列表:(遍历是指按照特定的顺序逐个访问数据结构中的每个元素的过程。
for while
列表的常见方法:
append,clear,copy,count,extend,index,insert,pop,remove,reverse,sort
增:
append():向列表的尾部追加元素
例:
>>> list1 = []
>>> list
<class 'list'>
>>>list1
[ ]
>>> list1,append("zhangsan")
insert(下标,添加的元素)
例:
>>> list1,insert(1,"huazhu")
>>> list1
['wangmazi','huazhu','zhangsan','lisi']
删:
remove(元素):直接删除元素
pop():通过下标删除元素,不给参数时删除的是最后一位。会返回删除的元素
clear()"清空列表例的数据
查:
index(元素):通过元素直接查找
index(元素,start)从1开始往下查找
count(元素):计数
copy():拷贝 (浅拷贝)
reverse():反转(可以改变顺序)
sort():排序(按一定顺序进行排序)
列表1.extend(列表2):合并列表的 列表2的数据合并给列表1
例:
>>>list2=[1,2,3]
>>>list.extend(list2)
二.---set(集合):
底层基于哈希表实现的 不能重复,无序
集合是无法进行访问的,因为他是无序的
set():空集合
集合怎么遍历:
for
集合的常见方法:
add(元素):通过元素给集合追加的
len():容器里面通用的表示长度的函数
pop():任意随机一个元素被移除
remove(元素):通过元素去移除
discard(元素):通过元素去移除
——区别---要移除的元素不存在时,discard()不会进行报错
intersection()交集
例:set.intersection(set2)
Union():并集
例:set1.union(set2)
difference():差集
例:set1.difference(set2)
三.----tuple(元组):tu
不可变数据类型,有序的(生成之后就不可改变)
访问:元组名[元组下标]
len(元组名):长度
元组的方法:
元组名.count():计数
元组名.index():索引
如果一个元组只有一条数据,那么需要在这条数据后面加上逗号
元组中元素存在可变数据类型(例如:列表),那么更改元组中可变类型中的元素就不会报错
例:
tu = (1,2,3,4,[”zhangsan“,1,2,3,])
tu[-1][0]=[”woshigenggaiguode"]
print(tu)
元组的遍历:
for,while
dict(字典):
{ }
例:dict1 = {"uname":"zhangsan","age":21,1:21,"sex":"nan"}
查找数据:
字典名["键名"]
例:dict1["age]
更改
例:
dict1["age"] = 18
添加:
例:
dict1["school"] = "huazhu"——(存在则进行覆盖,不存在则进行添加)
len(字典名)——查看长度
key——键——类别 values——值
clear():——清空
copy():——浅拷贝
get(key,默认不存在时返回):——通过key获取值的
del 要删除的东西——删除——可以删除任何变量
seys():获取所有的键
balues():获取所有的值
setdefault():添加键值对
dict1.fromkeys((1,2,3,4))
——创建key值为1,2,3,4的字典,键值为None
删除:
pop():通过key删除键值对
items():返回键值对
update():更新
items:项目
字典的遍历:
for
例:
dict1 = {"uname":"tangwenbai","age":21}
for i in dict1:
print(dict1[i])
for k, v in dict1.items():
print(f"{k}:{v}:")
冒泡排序:相邻的两个数进行比较排序
例:
arr=[1,21,33,42,2,54]
for i in range(0,len(arr)-1):
for j in range(0,len(arr)-1-i):
if arr[j]>=arr[j+1]:
arr[j],arr[j+1]+arr[j+1],arr[j]
else:
pass
print(arr)
关于python的题目练习
题目一(21世纪闰年):
count = 0
for i in range(2000,2100):
if (i%4==0) and (i%100!=0 or i%400==0):
print(i,end=" ")
count += 1
if count == 10:
print()
count = 0
题目二(剪刀石头布):
# 猜拳 0-剪刀 1-石头 2-布
import random
com = 0
player = 0
while com < 2 or player <2:
player_choice = int(input("请出拳: 0-剪刀 1-石头 2-布"))
com_choice = random.randint(0,2)
print(f"您出的是{player_choice},计算机出的是{com_choice}")
if player_choice == com_choice:
print("平局")
elif (com_choice == 0 and player_choice == 2) or(com_choice == 1 and player_choice ==0):
print("计算机获胜,您输了")
com += 1
print(com)
else:
print("您大获全胜")
player += 1
print(player)
if(com>=2 or player>=2):
break
题目三(梯形数字):
for i in range(1,7):
for j in range(1,i+1):
print(j,end=" ")
print()
for i in range(6,0,-1):
for j in range(1,i+1):
print(j,end=" ")
print()
for i in range(1,7):
for j in range(0,7-i):
print(" ",end=" ")
for j in range(i,0,-1):
print(j,end=" ")
print()
for i in range(6,0,-1):
for j in range(6,i,-1) :
print(" ",end=" ")
for k in range(1,i+1):
print(k,end=" ")
print()
题目四(是否被5,6整除):
num = int(input("请输入一个整数:"))
if num % 5 ==0 and num %6 ==0 :
print(num,"能同时被5和6整除")
else:
print(num,"不能同时被5和6整除")
if num %5 == 0 or num %6 == 0:
print(num,"能被5或6整除")
else:
print(num,"不能被5或6整除")
if num %6 ==0 and num //5:
print(num,"能被6整除,但不能被5整除")
elif num %5 ==0 and num //6:
print(num,"不能被6整除,但能被5整除")
题目五(查找未来):
today = int(input("星期天-0,星期一-1,星期二-2,星期三-3,星期四-4,星期五-5,星期六-6 请输入一个数字表示今天星期几:"))
days = int(input("请输入今天到未来某天的天数:"))
future_day =(today+days)%7
print("未来{}天后是星期{}".format(days,future_day))
菜鸟一枚,如有错误,请指正,谢谢。