文件编码

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


注释

在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可以验证以上说法。

删除变量
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
它们分别是短路与短路或。重点在短路二字。

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

and真值表:

逻辑表达式 结果
True and True TRUE
True and False FALSE
False and True FALSE
False and False FALSE

or真值表:

逻辑表达式 结果
True or True TRUE
True or False TRUE
False or True TRUE
False or False FALSE

not真值表:

逻辑表达式 结果
not True FALSE
not False TRUE
什么是短路?

在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 逻辑运算符

流程控制语句

三大结构

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



分支结构-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时才会满足条件

02-Python基础的更多相关文章

  1. 02.python基础知识_02

    数据类型 1.整型 2.布尔值 3.字符串 4.列表 5.字典 6.集合 1.int(整型) i = 2 print(type(i)) 输出:<class 'int'> 2.bool(布尔 ...

  2. day 02 python 基础

    1.day1作业讲解 题目答案见day1 2.格式化输出 %占位符,s:字符串,d:数字 %%只是单纯的显示%(显示的%是后面的) #格式化输出 # % s d # name = input('请输入 ...

  3. python基础之02列表/元组/字典/set集合

    python中内置的数据类型有列表(list)元组(tuple)字典(directory). 1 list list是一种可变的有序的集合.来看一个list实例: #第一种方法: >>&g ...

  4. Python基础教程-02

    <Python基础教程> 第3章 使用字符串 字符串方法find返回的并非布尔值.如果find像这样返回0,就意味着它在索引0处找到 了指定的子串 join可合并一个字符串列表,不能合并数 ...

  5. Python基础+Pythonweb+Python扩展+Python选修四大专题 超强麦子学院Python35G视频教程

    [保持在百度网盘中的, 可以在观看,嘿嘿 内容有点多,要想下载, 回复后就可以查看下载地址,资源收集不易,请好好珍惜] 下载地址:http://www.fu83.cc/ 感觉文章好,可以小手一抖 -- ...

  6. python基础——类和实例

    python基础——类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都 ...

  7. python基础——使用模块

    python基础——使用模块 Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用. 我们以内建的sys模块为例,编写一个hello的模块: #!/usr/bin/env ...

  8. 第一篇:python基础

    python基础   python基础 本节内容 python起源 python的发展史 为什么选择python3 第一个python程序 变量定义 表达式和运算符 用户输入 流程控制 判断 流程控制 ...

  9. python基础教程

    转自:http://www.cnblogs.com/vamei/archive/2012/09/13/2682778.html Python快速教程 作者:Vamei 出处:http://www.cn ...

  10. Python基础-week05

    本节大纲:Author:http://www.cnblogs.com/Jame-mei 模块介绍 time & datetime模块 random os sys shutil json &am ...

随机推荐

  1. dotnet 读 WPF 源代码笔记 插入触摸设备的初始化获取设备信息

    在 WPF 触摸应用中,插入触摸设备,即可在应用里面使用上插入的触摸设备.在 WPF 使用触摸设备的触摸时,需要获取到触摸设备的信息,才能实现触摸 获取触摸设备插入 在 WPF 中,通过 Window ...

  2. games101-3 BRDF101

    BRDF101 概述 本文基于知乎Maple对brdf的文章,在此基础又收集了一些其它来源的关于brdf的文章,希望能够完全理解记忆相关知识 关于Jakub Boksansky的文章,看的过程中又去搜 ...

  3. mosquitto移植到ARM

      了解mosquitto的小伙伴多数都是想在arm中进行开发,所以将mosquitto移植到ARM板上就尤为重要了,当然也有在x86中进行应用开发的,想了解linux中安装mosquitto可以看我 ...

  4. 最近常用的几个【行操作】的Pandas函数

    最近在做交易数据的统计分析时,多次用到数据行之间的一些操作,对于其中的细节,简单做了个笔记. 1. shfit函数 shift函数在策略回测代码中经常出现,计算交易信号,持仓信号以及资金曲线时都有涉及 ...

  5. kubernets之init容器作用

    一  init容器的作用 1.1  init容器是在pod的生命周期,保证该pod运行的一些前置条件满足之后才开始运行这个pod,例如需要依赖一些其他的pod,服务等,可以去对这些服务的状态进行检测, ...

  6. c++调用动态dll库

    首先把需要调用的动态库dll和它依赖的对象都要放入到运行目录,debug环境就是debug目录下了. 然后就写代码: #include <iostream> #include <wi ...

  7. 【Sqlserver】查看所有数据库的大小 创建日期 名称 版本级别 状态

    EXEC  sp_helpdb

  8. 一文详解编辑距离(Levenshtein Distance)

    更多博文请关注:https://blog.bigcoder.cn 一. 什么是Levenshtein Distance Levenshtein Distance,一般称为编辑距离(Edit Dista ...

  9. Android 13 - Media框架(23)- ACodecBufferChannel

    关注公众号免费阅读全文,进入音视频开发技术分享群! 这一节我们将了解 ACodecBufferChannel 上一节我们了解到input buffer 和 output buffer 是如何分配的了, ...

  10. 公众号5月C#/.NET热文一览

    C#/.NET/.NET Core全面的学习.工作.面试指南知识库 转眼之间维护DotNetGuide(C#/.NET/.NET Core学习.工作.面试指南知识库)已经持续超过了三年多的时间,Com ...