02-Python基础

文件编码

Python2中

在Python2中:默认文件编码是ASC II,所以无法正常输出中文,会报错。

  • 解决办法

在文件的开头添加# -- coding: UTF-8 -- 或者 # coding=utf-8

Python3中

在Python3中:默认文件编码是UTF-8,所以无需指定编码

IDE中(如pyCharm)

如果你使用IDE,则需要设置 py 文件存储的格式为 UTF-8等支持中文的编码,否则会报错

  • 解决办法
  1. File -> Settings -> 搜索encoding
  2. Global EncodingProject EncodingDefault encoding for properties files都修改为UTF-8
UTOOLS1589191547453.png

注释

在python中,有三种注释的方式

  • #单行注释
  • ‘’‘多行注释’’’
  • “”“多行注释”""

例如

'''
函数作用:
输出Hello world
'''

"""
作者:
张三
"""

print("Hello world")    #输出Hello world

多行语句

单行语句分隔为多行
  1. 利用反斜杠 \ 分隔
a = 1 + \
    2 + \
    3       #相当于a = 1 + 2 + 3
print(a)
  1. 利用括号分隔
days = ['Monday', 'Tuesday', 'Wednesday',
    'Thursday', 'Friday']

语句中包含 [], {} 或 () 括号就不需要使用多行连接符

在同一行写多条语句
print("Hello"); print("World")

可以在同一行写多条语句,语句之间用分号 ; 隔开


输入和输出

输入
name=input("Please input your name:")   #input将用户输入的内容作为字符串接收
print("Your name is ",name)

结果:

Please input your name:张三
Your name is  张三

解释:

通过调用函数input()来得到用户输入

input函数中的参数为用户提示,若无需提示,则省略参数即可。

用户输入的内容将以String保存,即name的类型为String
如果需要得到其他类型,则需要强制转换


输出
  1. 普通输出
print("你好")
print("你好","中国")     #输出"你好 中国"
print()                 #输出换行
print("你好",end="")     #输出"你好",但不换行

解释:

  • 默认情况下,输出后自动换行
  • 如果只想输出换行,则print()即可
  • 如果不想输出换行,则在最后添加参数end=""将结束符修改为无
  • 可以传入0到多个参数,参数的类型也无要求
  • 参数之间会以空格分隔,依次输出
  1. 格式化输出

通过格式化输出,可以将格式和数据分开。
python的格式化输出和其他语言相同,使用%d等占位符指定数据的格式。

将格式与数据分开的好处是:

  • 方便维护
  • 代码可读性高
  • 可以将数据按照不同格式输出(例如小数可精确到某一位)

示例:

name="张三"
age=18
sex="男"

msg='''
---------
name:%s
age:%d
sex:%s
---------
''' % (name,age,sex)

print(msg)

结果:

---------
name:张三
age:18
sex:男
---------

解释:

msg的类型为String。

代码中的%s、%d、%s为占位符,将会被后面的数据name、age和sex依次替换。

%s意为字符串,将会被替换为字符串的格式。

%d意为整数,将会被替换为整数的格式(若为小数,将会被取整)。

可以很直观地看到格式为:

---------
name:%s
age:%d
sex:%s
---------

整数占位符:

%d		//输出十进制
%o		//输出无符号整数的八进制
%x		//输出无符号整数的十六进制(字母小写)
%X		//输出无符号整数的十六进制(字母大写)

%5d		//输出宽度为5(右对齐)
%-5d		//输出宽度为5(左对齐)
%+5d		//输出宽度为5(输出符号)
%05d		//输出宽度为5(前面补0,而不是空格)
%#o		//输出八进制前的0(进制前的标识符)

小数占位符:

%f		//输出小数(保留到小数点后6位)
%e,E	//科学计数法,保留到小数点后6位(1.234560e+02)
%g,G	//以%f或%e中较短的输出宽度输出小数

%10f	//输出宽度为10(多出不会被截断)
%10.3f	//输出宽度为10(保留到小数点后3位)

字符占位符:

%c		//输出单个字符
%s		//输出字符串

其他占位符:

Python会将符号%和它后面的字符作为格式解析。
当我们需要输出%时

%%		//输出%就需要转义,这样就可以得到%了,而不是将它解析为占位符

变量

变量命名规则
  • 只能是数字、字母和_组成
  • 不能以数字开头
  • 不能以保留字命名
  • 支持中文,但是不建议使用中文作为变量名
  • 变量名区分大小写
  • 没有常量,通常用全部大写命名来表示常量

良好的命名规范:

  • 不使用中文作为变量名
  • 定义的名称应该有意义
  • 使用驼峰式命名、下划线分割单词
  • 用全部大写命名来表示常量
赋值
a=1
a='abc'     #原本是int类型,可以被赋值为String类型
a,b=3,4     #相当于a=3,b=4
t=(3,4)
a,b=t       #相当于a=3,b=4

解释:

Python是一种弱类型语言,所以定义变量无需指定类型,Python将根据值的类型自动判断。
Python是一种弱类型语言,所以原本为int类型的变量,可以被赋值为其他类型。

a=3,b=4这种形式的赋值可以写为a,b=3,4


赋值时,变量和内存空间的关系是怎样的?

Python为了节约内存,只会保留一份常量,即不同的变量如果内容相同则指向同一常量。
当其中一个变量内容改变时,就会指向新的内存空间。

a="变量1"
b="变量1"
b="变量2"

a和b的内容一开始是相同的,而且都是常量。所以它们指向同一内存空间。
当b的内容改变,变成另一个常量"变量2",它就会指向新的内存空间。
用运算符is或is not可以验证以上说法。

UTOOLS1589174048132.png
删除变量
a=1         #定义变量a
del a       #删除变量a
#print(a)    #报错

del专门用于删除变量
变量删除之后,若被调用则报错:not defined


运算符

算术运算符

假设变量: a=10,b=20

运算符描述实例
+a + b 的结果 30
-a - b 的结果 -10
*a * b 的结果 200;
“Hello” * 2的结果为HelloHello
/b / a 的结果 2
%取模 - 返回除法的余数b % a 的结果 0
**幂 - 返回x的y次幂a**b 为10的20次方,输出结果 100000000000000000000
//整除(平板除) - 返回商的整数部分(向下取整)9//2的结果为4;
-9//2的结果为-5

比较运算符

假设变量: a=10,b=20

运算符描述实例
==等于(a == b) 返回 False。
!=不等于(a != b) 返回 true.
>大于(a > b) 返回 False。
<小于(a < b) 返回 true。
>=大于等于(a >= b) 返回 False。
<=小于等于(a <= b) 返回 true。

赋值运算符

假设变量: a=10,b=20

运算符描述实例
=普通赋值运算符c = a + b ,将 a + b 的运算结果赋值为 c
+=加法赋值运算符c += a 等效于 c = c + a
-=减法赋值运算符c -= a 等效于 c = c - a
*=乘法赋值运算符c *= a 等效于 c = c * a
/=除法赋值运算符c /= a 等效于 c = c / a
%=取模赋值运算符c %= a 等效于 c = c % a
**=幂赋值运算符c **= a 等效于 c = c ** a
//=取整除赋值运算符c //= a 等效于 c = c // a

逻辑运算符

在Python中,逻辑运算符有三个:andornot
它们分别是短路与短路或。重点在短路二字。

运算符逻辑表达式描述
andx and y短路与
orx or y短路或
notnot x

and真值表:

逻辑表达式结果
True and TrueTRUE
True and FalseFALSE
False and TrueFALSE
False and FalseFALSE

or真值表:

逻辑表达式结果
True or TrueTRUE
True or FalseTRUE
False or TrueTRUE
False or FalseFALSE

not真值表:

逻辑表达式结果
not TrueFALSE
not FalseTRUE

什么是短路?

在and中:

表达式3 = 表达式1 and 表达式2

当表达式1为False时,表达式3一定为False,那就不必计算表达式2。

在or中:

表达式3 = 表达式1 or 表达式2

当表达式1为True时,表达式3一定为True,那就不必计算表达式2

所以:

当通过表达式1可以得出结论时,就不会去计算后面的表达式(被忽略掉)。

例如:

False and print("Hello")      #无任何输出
True and print("Hello")       #输出Hello

is、is not
  • is和is not用于判断两个变量的地址是否相同
  • 和==不一样,==用于判断两个变量的内容是否相同

例如:

a=[1,2]
b=[1,2]
print(a is b)       #False
print(a == b)       #True

解释:

a和b为引用类型(类似于C++中的指针),所以a和b虽然内容相同,但地址不同。

在前面的例子中:

a="变量1"
b="变量1"

a和b为基本数据类型,指向常量。所以a和b不仅内容相同,地址也相同。


位运算符

按位运算符是把数字看作二进制来进行计算的。

  • 这里假设a=60,b=13。则二进制如下:
a   = 0011 1100 
b   = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a  = 1100 0011
运算符描述实例
&按位与(a & b) 输出结果 12
二进制解释: 0000 1100
|按位或(a | b) 输出结果 61
二进制解释: 0011 1101
^按位异或(a ^ b) 输出结果 49
二进制解释: 0011 0001
~按位取反(~a ) 输出结果 -61
二进制解释: 1100 0011
一个有符号二进制数的补码形式
<<左移动运算符
高位丢弃,低位补0
a << 2 输出结果 240
二进制解释: 1111 0000
>>右移动运算符
低位丢弃,高位补0
a >> 2 输出结果 15
二进制解释: 0000 1111

运算符优先级
运算符描述
**指数 (最高优先级)
~按位翻转
* / % //乘,除,取模和取整除
+ -加法减法
>> <<右移,左移运算符
&位 ‘AND’
^ |位运算符
<= < > >=比较运算符
<> == !=等于运算符
= %= /= //= -= += *= **=赋值运算符
is is not身份运算符
in not in成员运算符
not and or逻辑运算符

流程控制语句

三大结构

计算机语言的三大结构:
顺序结构分支结构循环结构

UTOOLS1589189225620.png UTOOLS1589189247122.png UTOOLS1589189318662.png
分支结构-if语句
if a>b:
    print("a>b")
    print("a大于b")
elif a<b:
    print("a<b")
    print("a小于b")
else:
    print("a=b")
    print("a等于b")

每个条件后面,必须以冒号 : 结尾
利用缩进来分隔代码块


循环结构-while语句
while a>b:
    a-=1                #语句1
    print("xxxxx1")     #语句1
else:
    print("xxxxx2")     #语句2

解释:

条件后需要以冒号 : 结尾
当条件成立时,循环执行语句1
当结束循环时,执行语句2

else可以用来关闭文件,做一些结束操作


循环结构-for语句
for i in range(3):
    print(i)                    #语句1
else:
    print("This is the end")    #语句2

解释:

函数range(3)将产生0、1、2的序列,即i的值依次等于0、1、2
只要是序列,就能被for遍历,String也可以。

当条件成立时,循环执行语句1
当结束循环时,执行语句2

同样,else可以用来关闭文件,做一些结束操作


循环结构-break

break用于跳出当前循环

for i in range(5):
    if i==3:
        break
    print(i)

结果:

0
1
2

解释:

range(5)会产生0、1、2、3、4序列, i 会依次遍历它们。
当 i 等于3时,跳出循环,所以不会输出3和4


循环结构-continue

continue语句会跳过后面的语句,继续循环

for i in range(5):
    if i==3:
        continue
    print(i)

解释:

range(5)会产生0、1、2、3、4序列,i 会依次遍历它们。
当 i 等于3时,跳过语句print(i),所以不输出3,继续进行循环,再输出剩下的4后结束循环。


条件语句

在Python中,可以使用a>b>c形式的条件语句。
在分支语句和循环语句中都可以使用这种形式。

示例:

a=3
b=2
c=1
if a>b>c:
    print("a>b>c")

解释:

当a>b,b>c时才会满足条件


posted @ 2020-05-11 18:01  NetRookieX  阅读(1)  评论(0编辑  收藏  举报