python的一些入门基础知识
p1-Python的介绍
python的特点http://c.biancheng.net/view/7748.html
可移植性,各个平台能运行,运行快(基于c语言),简单易学,面向对象也能面向过程,可扩展性(能用c和c++编写,然后在python程序中使用,让运行速度更快隐藏算法),可嵌入性能把python嵌入c程序中当脚本使用,非常丰富的库(在libs中)
#输入成绩判断等级:
cj=float (input("请输入你的成绩:"))
if cj>=90 and cj<=100:
print("优秀")
elif cj>=70 and cj<90:
print("良好")
elif cj>=60 and cj<70:
print("及格")
else:
print("你要努力了")
p2-环境pycharm等安装
p2-Python安装
https://mp.weixin.qq.com/s/4oWzRIn0sasfrxwpli_4hw
尽量不要中文路径。
pip使用教程(下载标准库外的库)
https://www.cnblogs.com/songzhixue/p/11296720.html
也可以直接在设置-项目-python解释器中点+安装库
Pycharm安装
https://mp.weixin.qq.com/s?__biz=MzI3NzI1MzY4Mw==&mid=2247492904&idx=1&sn=0970650063d724b9c251848a2e5789ad&chksm=eb6bbe74dc1c3762518dbeb3bc2813ca8da339bfc014bf897fc2450d431f5a29343ceccfbbe4&scene=178&cur_album_id=1786174076420472834#rd
cd命令
https://jingyan.baidu.com/article/6079ad0ec0145b28ff86db88.html
输入cd..为返回上一级
输入d:为进入d盘,其他盘同理
输入cd d:1\2\3即进入d盘的1文件夹中的2文件夹中的3文件夹,主要不可以直接跳盘,比如现在在c盘,直接cd d:/1/2/3,必须先到d盘
输入dir可显示当前级有的文件和文件夹(有dir的是文件夹,文件会直接显示大小)
输入文件夹部分名字,再按tab键可补全文件名
按上数字键盘旁边的上箭头,可以出现原先输入的命令
###开发环境介绍
venv与直接建立项目的区别
venv建立项目是创造一个新的环境,库与标准库等是分开的,如当你接私活爬虫的requests库需要用2.0版本,而公司项目用的是1.0版本,如果不用venv虚拟隔开,就会冲突。
第三方库可以在文件,设置,venv项目中添加
Pycharm
快捷键
快捷键失效,可能是与其他软件冲突,或者安装了vim的插件,在设置中的插件中给vim卸载了就行了,或是是键盘被锁定,按fn+win解开
https://blog.csdn.net/cuomer/article/details/81534140
https://www.cnblogs.com/sui776265233/p/10200809.html
可以在设置里面下载设置你习惯的编辑器快捷键,本人用windows选项
crtl+/注释
ctrl+alt+l格式化代码
ctrl+d复制当前行到下一行
ctrl+y删除当前行
注释shift+/,#为注释,··· ···前后三个点多行注释。
明白venv与普通建立项目的区别,vene重新虚拟了一个环境,一般项目使用,学习阶段不用勾选,因为占用资源。
文件重命名在refactor重构里面
光标在函数上,按Ctrl再鼠标点击,可以看到函数底层定义
win+r打开运行菜单,snippingtool系统截图工具
mspaint是画图工具
在文件(file)->设置(setting)->键盘映射(keymap)中也可以查找各种快捷键
如何汉化
点击左上角file,找到设置settings 找打插件plugins,再右边的搜索框输入chinese 插件安装后,点击应用Apply,再重启软件即可
p3-基础
小知识
a = 1
b = 2
print(a,b,100)
#结果为1 2 100,print可以多个输出,而且可以直接带已知数,下面是print函数定义
print("-"*20)
#结果为二十个"-"号--------------------,别问为什么,就是这样设置的
#如果是数字和字符串做乘法运算,会将这个字符串重复多次。
print()中整形也不能与字符串拼接,字符串双引号和单引号都可以。
end="/n"即语句输出完最后加一个换行,sep=":"即每个输出间用":"隔开
如print(1,2,3,sep=":"),输出1:2:3
```def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
"""
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
"""
pass
```
变量命名
python中直接a = 100,A = ‘ABC’即可,不需要int和string什么的,会自动帮我们定义。
money = 200
type(money)#看money的类型
print(type(money))#现在是int
money = 20.2
print(type(money))#现在是float
money = '1万'
print(type(money))#现在是str字符串,在引号里面就是字符串,单引号双引号都可以。
1-分大小写
2-由字母,数字,下划线,其他的特殊符号不行,不能数字开头。
3-格式错误可运行,有灰色波浪线,可用中文,但会黄色警告。
4-不能使用关键字。
5-最好见名知意
6-小驼峰开头第一个字母全部小写如getNameByLine,但python最好用下划线,如get_name_by_line
7-大驼峰,每个字母大写GetNameByLine(在面向对象的类名中使用)
数据类型与转换
单引号双引号三个引号就是字符串类型,小数就是float型等等
三个引号可保留格式输出字符串,如鹅鹅鹅诗歌的格式都保留了
当字符串中需要有引号可以这样
message = "'abcdefg'"
message = '"abcdefg"'
但是不能message = 'ab“cd'efg”这样efg”就没有与之对应,语法出错
类型转换
输入money等于10
解决方法 print(int(money)+1000),即使money是字符也能准确转成对应的数字进行计算,结果为1010
或者解决方法 print(money+str(1000))把1000变成字符串,进行拼接,结果为100010
input输入的默认是字符串类型,赋值后变量是字符串。
字符串可以转int但必须是整数,如果是浮点数如1.11就会报错,如果是int型如字符串“1”,就会转为整型1
int型可随便转成str型
浮点数和str可以互相随便转换
布尔类型转int,true就是1,false就是0,int转布尔,除了0或者空字符串是false,其他都是true。
赋值与输出
a = b = c = 5#可
d="dddd"
a,b,c,d=5,5,5,"ddd"#可
print(a,b,c,d)
print("%daaaaaaaa %d%d%s" %(a,b,c,d))#这时输出后a和b相差aaaaaa和多个空格,print里面怎么写就输出什么
算术运算符
除就是直接除,整除就是结果取整,如9//6结果为1
关系运算符
先比较第一个,第一个大就大,不再比较后面的,如果第一个一样就依次比较后面的
逻辑运算符
and两边一边为0,结果就为0,即一侧为假就是假,如过无0,则取后面那个(and第一个判断处理后,还需要判断后一个条件,最后判断是谁就输出谁),如a=1 b=3 print(b and a),得到的是1
or两边一个为真就是真
a = 1
b = 2
print(a or b)
#结果为1,因为第一个1为真,就不再运行判断后面b是真是假,直接输出1
a = 0
b = 2
print(a or b)
#结果为2,因为第一个是0假,再判断后面的,后面为2,就输出2
#这里是输出数字,在编辑器中已经定义了就是这样运行的
a = 1
b = 2
c = 3
print(b > a and b<3)
#结果为true,这里不是数字,而有关系运算符,就输出true或者false
print(not (b > a and b<3))
#结果为false,not逻辑就是取反
格式化输出
%d digit数字数位,%s string ,%f float ,%o octal八进制
age = 20
name = "陈冠希"
money = 2000000.99
print('%d岁的%s一部电影赚了%.2f元' % (age,name,money))
#注意print里面有''
print(age+"岁的"+name+"一部电影赚了"+money+"元")
#或者print(str(age)+'岁的'+name+'一部电影赚了'+str(money)+'元')
#直接字符串拼接,但是因为age和money不是字符串类型,无法拼接,所以必须先强转。(拼接必须全是字符串类型)
%.2f即保留两位小数输出
进制转换
前缀0b就是二进制,0o就是八进制,0x十六进制hexadecimal,默认十进制
十六进制是0123456789abcdef
二进制计算
1,2,4,8,16,32,64,128,256 ,二进制哪一位有相加即可快速得到十进制。
a=bin(20)
#转二进制
print(a)
a=oct(50)
#转八进制
print(a)
a=hex(150)
#转十六进制
print(a)
#binary二进制,octal八进制,hex十六进制
转十进制
二进制转八与十六
位运算结果
逻辑运算符print(5 and 20)与位运算print(5 & 20)不同,前者只要没有0与空字符取最后数值,即20
后者&运算先将5与20二进制化为0b101与0b10100,然后前后&运算得到0b100结果为4
或运算与异或运算与‘与运算’相似,规则不同而已。
运算符
1字节=1byte=8bit=三十二位
所有位运算通过转换成二进制后运算
左右移计算
难点取反运算
如何true与false参与运算,true是1,false为0,print(1+true)得到2
运算符优先级
条件语句
简单的if,else
import random # 引入随机数包
ran = random.randint(1, 10) # random.randint(1,10)生成1到10的整数
ran2 = random.randint(1, 10)
print(ran, ran2)
abs(ran) # abs()是将括号里面的数字绝对值
if ran > ran2:
print("yes")
else:
print("no")
if-elif-else
#当所有的elif都不成立,才运行else,一个成立则跳出此判断语句再向下运行
sales = int(input("请输入你的销售金额,不同金额有不同奖励"))#注意int转换下类型,input是字符串类型,无法与整形比较
if 10000 < sales <=50000:
print("你得到了一辆tesla")
elif 50000 < sales <=100000:
print("你得到了两辆tesla")
elif 150000 < sales <=200000:
print("你得到了三辆tesla")
else:
print("你被开除了")
pass关键词
a = 1
if a==1 :
pass
else :
pass
#pass无意义,但可支撑这个语句,不填语句会报错,pass可当空占用
三目运算符
格式: 变量 = 值1 if 条件 else 值2
当条件成立时把 值1 赋值给变量,条件不成立时把 值2 赋值给变量,其实就是对if…else 语句的一种简写。
示例:
a = 10
b = 30
if a > b:
c = a
else:
c = b
print('a和b两个数的较大值是%d'%c)
if a > b:
print("a>b")
else:
print("a<b")
以上的 if...else
代码可以简写成以下格式:
a = 10
b = 30
c = a if a>b else b
print('a和b两个数的较大值是%d'%c)
print("a>b") if a>b else print("a<b")
循环语句
continue和break要在for,while等循环中使用,单独的if语句中不能使用break和continue.
continue结束当前循环,break跳出整个循环
# i = 0
# next1 = 0
# num = 0
#
# while i < 100:
# next1 += 1
# i += 1
# num = num +next1
# print(num)
# 猜数字
# 因为不知道要猜多少次所以用死循环,然后判断加break,猜对就break跳出
# import random
#
# while True:
# ran = random.randint(1, 10)
# guess = int(input("欢迎来到随机猜数字游戏(1-10),请输入您猜的数字"))
# # 记得把input转int不然永远是错
# if guess == ran:
# print(" 恭喜你猜对了")
# break
# else:
# print("你猜错了")
# for循环
# range(10),输出0-9,默认从0开始,sep为1,不包括最后一个
# 输出0 1 2 3 4 5 6 7 8 9
# for i in range(10):
# print(i)
# 从1开始,间隔为2,输出1 3 5 7 9
for i in range(1, 10, 2):
print(i)
for- else 和 while -else
当没执行过break则执行else,执行过break则不执行else
for i in range(3):
if i > 3:
break
else:
print("if一直不成立,没执行过break,执行此else语句")
continue和break
# 输出能不能被3整除的1-10的数
# for i in range(10):
# if i % 3 != 0:
# print(i)
# else:
# pass
# continue
for i in range(10):
if i % 3 == 0:
continue
else:
print(i)
# break跳出整个循环,注意是最近的循环,不是跳出if,continue是跳出当前的一次循环
循环嵌套
# 打出倒立直角三角形
*
**
***
****
*****
# 方法一
# n = 0
# while n <= 5:
# print("*" * n)
# n += 1
# 方法二
n = 1
while n <= 5:
m = 0
while m < n:
print("*", end="")#取消换行,因为这里的*需要连起来
m += 1
print()#加换行
n += 1
切片操作
首先把s1的hello创建到变量池,然后把s1赋予s2,那么他们两个的地址相同,自然结果也都是hello
,s3=”hello”编辑器从变量池找hello,发现已经有了,就直接赋予,这么做是为了节省空间,所以s1和s2
和s3的地址都是一样的,s4是hello1,在变量池没有,所以另外创建,地址与前三个不同。
#查看地址的函数 id()
n = 3
print(id(n))
#转绝对值的函数 abs()
n = -3
print(abs(n))
#查看类型type()
n = -3
print(type(n))
#获取ascll码ord()
n = "A"
print(ord(n))
#结果65
#获取字符串长度len()
n = "111"
print(len(n))
#结果3
字符串的截取
注意事项
1-python不用{}包含语句,而是用缩进规划范围,所以在if等语句中一定要注意缩进。
2-python里没有i++这种自增
参考资料
千峰教育python700集从入门到精通https://www.bilibili.com/video/BV1R7411F7JV
千峰python专栏公众号
```