小黑子的python入门到入土:第一章

python系列第一章

1. python简介

Python是一种面向对象、解释型、弱类型的脚本语言,它也是一种功能强大而完善的通用型语言。

相比其他编程语言(比如Java ) ,Python代码非常简单,上手非常容易。比如我们要完成某个功能,如果用Java需要100行代码,但用Python可能只需要20行代码,这是 Python具有巨大吸引力的一大特点。

Python的两大特色是清晰的语法和可扩展性︰

  • Python 的语法非常清晰,它甚至不是一种格式自由的语言。例如,它要求if语句的下一行必须向右缩进,否则不能通过编译。
  • Python的可扩展性体现为它的模块,Python具有脚本语言中最丰富和强大的类库(这些类库被形象地称 为“batteries
    included,内置电池”),这些类库覆盖了文件I/O、GUI、网络编程、数据库访问、文本操作等绝大部分应用场景。

此外,Python的社区也很发达,即使一些小众的应用场景,Python往往也有对应的开源模块来提供解决方案。

Python作为一门解释型的语言,它天生具有跨平台的特征,只要为平台提供了相应的Python解释器,Python就可以在该平台上运行。

解释型语言几乎天然是跨平台的。

Python自然也具有解释型语言的一些弱点:

  1. .速度慢: Python程序比Java、C、C++等程序的运行效率都要慢。
  2. 源代码加密困难∶不像编译型语言的源程序会被编译成目标程序,Python直接运行源程序,因此对源代码加密比较困难。

安装python3.7:

  1. python解释器
  2. pip包管理器,管理的是扩展的一些库文件。(放在Lib/site-packages)
  3. python的标准库:Lib

什么是 pip ?
pip 是 Python 中的标准库管理器。它允许你安装和管理不属于 Python标准库 的其它软件包。

Python 的安装器中自带了 pip,所以你可以直接使用它,除非你安装的是更早版本的 Python。可以通过在控制台中运行以下命令来验证 pip 是否可用:

在这里插入图片描述

2. pycharm 常用快捷键

Shift +enter 添加一行
Ctrl +/ 行注释
Ctrl + Shift+/ 块注释
Tab / Shift + Tab 缩进、不缩进当前行Ctrl +D复制选定的区域或行
‘Ctrl + Home 第一行
Ctrl+End最后—行
Ctrl+g 弹出一个框,输入要跳的行数

在这里插入图片描述
最常用
在这里插入图片描述
三引号的作用:
1.保留格式的字符串使用
2.作为注释使用

在这里插入图片描述

3. 变量的命名

变量的定义:
对于重复使用,并且经常需要修改的数据,可以定义为变量,来提高编程效率。
定义变量的语法为:盘量名=变量值。(这里的=作用是赋值。)
定义变量后可以使用变量名来访问变量值。

变量:‘容器‘
弱语言:变量声明的时候对数据类型不是很严格。
比如:

java:int a=100
float b=9.9
python: a=100

格式:变量名=值
1.怎么起名?
2.可以赋什么值
3.有哪些数据类型

变量名的命名规范:

1.字母,数字,下划线,其他特殊符号不行
2.不能数字开头
3.不能使用关键字
4.区分大小写

变量命名法:

见名知义: getnamebyline(太难看)
常见命名法:
getNameByLine驼峰式:开头第一个单词全部小写

小驼峰:单词之间用 _ 隔开

大驼峰:python面向对象:类名每个单词的首字母大写

4. 数据类型

4.1 int 整型

顾名思义,就是数字类型是整数的一种变量。

age = 18

name_of_oldboy = 32

可用于数学运算和比较运算

4.2 float(浮点型)

带小数点的数字变量。

height = 180.1
weight = 74.8

这种用到小数的数字类型变量,都是属于float

可用于数学运算和比较运算

注:int和float都属于数字类型。

4.3 str(字符串)

用于表示事物一种属性、特征、状态的变量类型

name = "sgt"job = “teacher” hobbies = “fitness”
在单引号(‘ ’)、双引号(“ ”)、三引号(“‘ ’”)内包含一系列字符,来表示字符串类型

字符串可以被拼接,用+和*

比如

name1 = 'Mr'
name2 = 'Su'
print(name1 + name2)
结果是:MrSu
name = 'haha'
print(name*5)
结果是:hahahahahahahahahaha
字符串的拼接由于效率太低,所以不推荐使用

4.4 bool(布尔类型)

用于判断

True

False

print(1>2)
>>>False
print(1==1)
>>>True

强调:所有值都自带布尔值,除了0、None、空布尔值是False以外,其他都是True。

空布尔值:空列表[ ]

4.5 type(参数) 判断数据是什么类型

int,float -> number 数字类型
str -> string 字符串类型
true和false -> bool 布尔类型

a = 100
print(type(a))
输出number

4.6 list(列表)

按照位置记录多个值,索引对应值,索引从0开始,可以去除对应索引位置的值,可以理解成数组

索引位置:0     1       2                  3
list1 = [200, 180.1, 'sgt', [18, 'oldboy', 'wuhan', ]]
             嵌套内列表索引位置 0       1       2

取出对应值得方法:
print(list1[3][2])
>>>>wuhan

列表内的多个值可以使任何类型的变量,也可以嵌套列表。

4.7 dict(字典)

记录多个不同属性的值,就是对象

在{ }内用逗号分开每个元素,每个元素用key:value组成。

value就是所存值,可以使任意类型。

一个key唯一对应一个value,key应该对value具有描述功能,所以key通常是字符串类型。

info = {'name':'sgt', 'age':32, 'hobby':['fitness', 'reading book']}

print(info['name'])
print(info['hobby'][1])
>>>>>结果是sgtreading book

4.8 tuple( 元组)

元组(tuple)是 Python 中另一个重要的序列结构,和列表类似,元组也是由一系列按特定顺序排序的元素组成。

元组使用小括号,列表使用方括号。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

在这里插入图片描述
在Python中,也可以创建空元组,空元组可以应用在为函数传递一个空值或者返回空值

一、创建数值元组

在Python中,可以使用tuple()函数直接将range()函数循环出来的结果转换为数值元组。

语法格式如下: tuple(data)

data = range(1, 11)
tupleName = tuple(data)
print(tupleName)
#(1,2,3,4,5,6,7,8,9,10)
二、删除元组

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组。
对于已经创建的元组,不再使用时,可以使用del语句将其删除。

示例:del删除元组

tup = ('physics', 'chemistry', 1997, 2000)
 
print tup
del tup
print "After deleting tup : "
print tup

以上实例元组被删除后,输出变量会有异常信息,输出如下所示:

('physics', 'chemistry', 1997, 2000)
After deleting tup :
Traceback (most recent call last):
  File "test.py", line 9, in <module>
    print tup
NameError: name 'tup' is not defined
三、修改元组

元组是不可变序列,所以不能对它的单个元素值进行修改。
但是元组也不是完全不能修改,可以对元组进行重新赋值。

data = range(1, 11)
tupleName = tuple(data)
tupleName = (5, 4, 3, 2, 1)
print(tupleName)
#(5, 4, 3, 2, 1)
四、元组内置函数

在这里插入图片描述

五、元组与列表的区别

在这里插入图片描述

六、元组与列表的相互转换

在这里插入图片描述

4.9 set( 集合 )

集合(set)是一个无序的不重复元素序列。

定义集合: a={1, 1, 1, 1, 1, 1, 3, 4, 2},创造空集合:b = set()

构造集合
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

1、使用大括号{}

basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket)  # {'apple', 'orange', 'banana', 'pear'}

当使用print()函数打印输出时,会自动将集合中重复的元素去除,且每次打印返回的顺序并不和初始的一致。

2、使用set()函数

fruit = set(("apple", "banana", "cherry"))  # 请留意这个双括号
print(fruit)  # {'banana', 'apple', 'cherry'}

在使用set()函数创建集合时,一定要注意双括号。

5. 类型转换

str( ):可以把其他类型数据转化为字符串类型
int( ):可以把其他类型数据转化为整型
float( ):可以把其他类型数据转化为浮点型
bool( ):可以把其他类型数据转化为布尔类型
list( ):可以把其他类型数据转化为列表类型
tuple( ):可以把其他类型数据转化为元组类型
dict( ):可以把其他类型数据转化为字典类型
set( ):可以把其他类型数据转化为集合类型

比如:

'''
以变量名:a
str ---> intint(a)但是如果'9.9'而且是字符串类型转成int的时候报错了

str ---> floatfloat(a)

int ----> strstr(a)

float ----> strstr(a)

int ---> floatfloat(a)

float ---> intint(a)只不过float类型中小数点后面的数字被抹掉了
'''

6. 用户交互

6.1 接收用户输入

name = input('please input your name:')
print(name)

6.2 格式化输入 input

name = input('please input your name:')
age = input('please input your age:')
introduction = "My name is %s , I'm %s years old ." %(name, age)
print(introduction)

占位符:%s,%d,

这里的%s可以是任意类型,

还有一种%d只能是数字类型,不常用。

name = input('请输入您的姓名:')
age = input('请输入您的年龄:')
job = input('请输入您的工作:')
sex = input('请输入您的性别:')
print('''
---------------info %s---------------
Name   : %s
Age    : %s
Sex    : %s
Job    : %s
---------------end---------------''' % (name, name, age, job, sex))

强调:在Python3.6中,会把输入的值默认当成字符串类型来存入,所以输入的数值都是字符串类型。

6.3 格式化输出 print的使用

python中print表示的就是输出的意思。在输出想要输出的内容时,需要添加""或者’'。

python的print功能非常强大,还有计算的功能,如果在print中计算,它会直接输出答案。

需要注意的是数字是不能和字符串直接相加的,否则会出现错误。其实也很好理解,就是两者不是同一个类型。
在这里插入图片描述
案例:
%()用来填充选择设置的变量

name = 'van'
age = 33
print('我知道%d岁的%s!!'%(age,name))
>>>>>
>#我知道33岁的van!!
一、print 的 end

python里的end是print函数中的参数,为末尾end传递一个字符串,这样print函数不会在字符串末尾添加一个换行符,而是添加一个字符串,其实这也是一个语法要求,表示这个语句没结束。

print('AAA',end='')
print('BBB',end='')
print('CCC',end='')
#>>>>
#AAABBBCCC

end意思就是以给定字符串或制表符结尾,但是不默认换行。

二、print 的 format 方法

format是字符串内嵌的一个方法,用于格式化字符串。以大括号{}来标明被替换的字符串。

基本用法

1. 按照{}的顺序依次匹配括号中的值
print("我叫{},今年{}岁。".format("van",18))
#我叫van,今年18岁。
#花括号的个数决定了,参数的个数。但是花括号的个数可以少于参数。
print("我喜欢{}和{}"format("乒乓球","羽毛球","敲代码"))
#我喜欢乒乓球和羽毛球。
"""
花括号多于参数的个数,则会报错。
"""
2. 通过索引的方式去匹配参数
s = "{0} is a {1}".format('Tom', 'Boy')
print(s) # Tom is a Boy

s1 = "{1} is a {2}".format('Tom', 'Lily', 'Girl')
print(s1) # Lily is a Girl

字符串中索引的顺序可以打乱,并不影响匹配。

s = "{1} is a {0}".format('Boy', 'Tom', )
print(s) # Tom is a Boy
3. 通过参数名来匹配参数
s = "{name} is a {sex}".format(name='Tom', sex='Boy')
print(s) # Tom is a Boy

同理,如果参数已经确定,可以直接利用{}进行格式化引用。

name = 'Tom'
sex = 'Girl'
# 以f开头表示在字符串中支持大括号内的python表达式   此用法3.6之后支持
s = f"{name} is a {sex}"
print(s) # Tom is a Boy

7. 转义字符

在这里插入图片描述

8. 常量

常量是不变的变量,例如常用的圆周率是常量,在Python中,常量通常用大写的变量名表示。但事实上,Python没有严格的常量。

常量通常放在代码的顶部,作为全局使用。

9. 运算符类型

9.1 算数运算符

+、-、* (乘)、/(除法)、%(取余数)、//(取整除)、** (幂)。

x = 1
y = 2
print(x+y)
print(y-x)
print(x*y)
print(y/x)
print(y%x)
print(y//x)
print(x**y)

结果
3
1
2
2.0
0
2
1

9.2 比较运算符

==、!=、<、>、<=、>=

print(10 == 10)
print(10 != 10)
print(10 > 3)
print(10 < 3)
print(10 >= 10)
print('sgt' == 'sgt')
>>>
True
False
True
False
True
True

10.赋值运算符

10.1 增量赋值

age = 18
age+=2       #结果是20
age-=2       #结果是16
age*=2       #结果是36
age/=2       #结果是9
age%=2       #结果是0
age//=2      #结果是9
age**=2      #结果是324

10.2 交叉赋值

x = 1
y = 2
x, y = y, x
print(x, y)

#结果是x=2   y=1

10.3 链式赋值

x = y = z =1
print(x, y, z)

#结果是1 1 1

10.4 解压赋值

info = ['a', 'b', 'c', 'd', 'e']
x, y, z, m, n = info
print(x, y, z, m, n)

#结果是a b c d e

这里的xyzmn必须与abcde是一一对应,不然会报错。
如果要取两边的多个数值,可以用*_解决
例如

info = ['a', 'b', 'c', 'd', 'e']
x, y, *_, n = info
print(x, y, n)

#结果是a b e

11.逻辑运算符

and、or、not

and:逻辑与,连接左右两边的运算结果都为Ture的时候,总结果才为Ture

print(3 > 4 and 3 == 3)
print('sgt' == 'sgt' and 1 == 1)

#结果是
    False
    True

or:逻辑或,连接左右两边的运算结果有一个为Ture的时候,总结果就可为Ture

print(3 > 4 or 3 == 3)
print('sgt' != 'sgt' or 1 >= 1)

#结果是
    True
    True

not:取反

print(not 10 > 3)

#结果是      False

在这里插入图片描述

12. 进制转换

输出前缀:0b 二进制 0o 八进制 0x十六进制 默认十进制
二进制:0,1
八进制:0,1,2,3,4,5,6,7
十进制:0-9
十六进制:0-9 a-f(10-15)

函数:
bin() 0b
int()
oct() 0o
hex() 0x

12.1 十进制转二进制 bin()

n = 149
result = bin(n)
print(result)

12.2 十进制转八进制 oct()

result = oct(n)
print(result)

12.3 十进制转十六进制 hex()

result = hex(n)
print(result)

输出结果:
0b10010101
0o225
0x95

案例:
1.n = 0x558,十进制输出
2.已知n = 0x558,转成二进制?转成八进制?
已知二进制转成十六进制,将二进制从右侧开始4位一组,最后不足4位补0
已知二进制转八进制,将二进制从右侧开始3位一组,最后一组不足3位补0

n = 0x558
result = int(n)
print(result)

result = bin(n) # 向二进制转换,无论现在是几进制的
print(result)

result = oct(n) # 向八进制转换,无论现在是几进制的
print(result)

输出结果:
1368
0b10101011000
0o2530

13. 位运算

python中位运算符主要包括&、|、^、~、<<、>>这6种,下面简单介绍下位运算符的应用。

13.1 & 与运算符

&:按位与运算符,参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。例如3 & 2输出结果 2。

print(3&2)
#3   0000 0011
&
#2   0000 0010
#-------------
#    0000 0010
结果 为 2

13.2|或运算符

|:按位或运算符,只要对应的二个二进位有一个为1时,结果位就为1。例如5| 3 输出结果 7。

print(5|3)
#5   0000 0101
|
#3   0000 0011
#-------------
#    0000 0111
结果7

13.3 ^ 异或运算符

^:按位异或运算符,当两对应的二进位相异时,结果为1,相同时结果为0。例如3 ^5 输出结果 6。

print(3^5)
#3   0000 0011
^
#5   0000 0101
#-------------
#    0000 0110->6
结果6

13.4 ~ 取反运算符

按位取反运算符,对数据的每个二进制位取反,即把1变为0,把0变为1 。
例如 ~5 输出结果 -6。

print(~5)
#5   0000 0101
#看二进制第一位(第一位是符号位,只要第一位是1的就是负数,第一位是0的就是整数

#取反0和1 补码 1111 1010 已知符号为负
#然后补码-1   反码 1111 1001
#取反   得到数值 0000 0110
#-------------
所以结果为 -6

13.5 << 左移动运算符

<<:左移动运算符,运算数的各二进位全部左移若干位,由<< 右边的数字指定了移动的位数,高位丢弃,低位补0。
例如1 << 2 输出结果 4。

print(2<<1)
#2   0000 0010
#向左移动1位   0000 0100 -> 4
#-------------
结果4

所以

左移:m<<n 结果是m*2的n次方

13.6 右运算符 >>

右移动运算符,把运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数。例如3 >> 4 输出结果0。

print(16>>2)
#16   0000 1000
#向由移动2位   0000 0010 -> 2
#-------------
结果2

所以

右移:m>>n 结果是m/2的n次方
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值