Python基础教程笔记——条件,循环和其他语句

简介:

1 print和import的更多信息

 

1.1 使用逗号输出

说明:使用print时,也可以在语句中添加多个表达式,每个表达式用逗 号分隔

注意:在用逗号分隔输出时,print语句会在每个输出项后面自动添加一 个空格

例子:

 1:  >>> greeting = 'Hello'


 2:  >>> salution = 'Mr.'


 3:  >>> name = 'Bill'


 4:  #以逗号分隔输出项


 5:  >>> print(greeting, salution, name)


 6:  Hello Mr. Bill


 7:  #在逗号前增加了一个空格符


 8:  >>> print(greeting, ',', salution, name)


 9:  Hello , Mr. Bill


10:  #为了显示成'Hello, Mr. Bill'这个样式,可以使用连接符‘+’


11:  >>> print(greeting + ',', salution, name)


12:  Hello, Mr. Bill


13:  >>>


14:  


1.2 把一些东东作为另一些东东导入

说明:

将整个模块导入,格式为:import somemodule;


从某个模块中导入某个函数,格式为:from somemodule import somefunction;


从某个模块中导入多个函数,格式为:from somemodule import firstfunc, secondfunc, thirdfunc


将某个模块中的全部函数导入,格式为:from somemodule import *


注意:如果两个模块中都有相同的函数,则可以使用第一种方法导入模块, 也可以使用关键字 as为相同的函数取个别名,例子:

 1:  #第一种导入方法


 2:  #导入模块


 3:  import module1


 4:  import module2


 5:  #调用同名函数的方法


 6:  module1.open()


 7:  module2.open()


 8:  


 9:  #第二种导入方法


10:  #导入函数,并给函数取相应的别名


11:  from module1 import open as open1


12:  from module2 import open as open2


13:  


例子:

 1:  #从math中导入sqrt


 2:  >>> from math import sqrt as msqrt


 3:  #从cmath中导入sqrt


 4:  >>> from cmath import sqrt as csqrt


 5:  >>> msqrt(100)


 6:  10.0


 7:  >>> csqrt(-1)


 8:  1j


 9:  >>>


10:  


2 赋值魔法

 

2.1 序列解包

说明:多个赋值操作可以同时进行

例子:

 1:  #一般的同时赋值操作


 2:  >>> x, y, z = (1,2,3)


 3:  >>> x


 4:  1


 5:  >>> y


 6:  2


 7:  >>> z


 8:  3


 9:  >>>


10:  


11:  #从字典中弹出任意一对儿键值对儿,并赋值给两个变量


12:  >>> people = {'first': 'Andy', 'second':'Bill'}


13:  >>> key, value = people.popitem()


14:  >>> key


15:  'second'


16:  >>> value


17:  'Bill'


18:  >>>


19:  


2.2 链式赋值

说明:同时将一个值赋给多个变量

例子:

 1:  #链式赋值


 2:  >>> x=y=z=1


 3:  >>> x


 4:  1


 5:  >>> y


 6:  1


 7:  >>> z


 8:  1


 9:  >>>


10:  


2.3 增量赋值

说明:包括以下增量操作:

+=:将右侧的值加到变量上的和,然后再赋值给变量;


-=:将变量减去右侧的值得到的差,再赋值给变量;


/=:用变量除以右侧值得到的商,再赋值给变量;


%=:用变量取右侧值的余数,再赋值给变量;


注意: += 和 \*= 还可以应用在字符串上,见下面的示例;

例子:

 1:  #针对数字的各种操作


 2:  >>> x = 123


 3:  >>> x += 1


 4:  >>> x


 5:  124


 6:  >>> x -= 4


 7:  >>> x


 8:  120


 9:  >>> x *=2


10:  >>> x


11:  240


12:  >>> x /=3


13:  >>> x


14:  80.0


15:  >>> x %=9


16:  >>> x


17:  8.0


18:  >>>


19:  


20:  #字符串的增量赋值


21:  >>> y = 'Test string'


22:  >>> y += ', haha!'


23:  >>> y


24:  'Test string, haha!'


25:  >>> y *= 2


26:  >>> y


27:  'Test string, haha!Test string, haha!'


28:  >>>


29:  


3 语句块:缩排的乐趣

说明:语句块是一组语句,在代码前放置空格来缩进语句即可创建语句 块;

4 条件和条件语句

 

4.1 这就是布尔变量的作用

说明:布尔值,

假值:false,None,所有类型的数字0,空序列,空字典;

真值:所有的非空值;

bool函数可以用来将其他值转换成布尔值;

注意:尽管假值具有不同的类型,但是不同的假值之前也是 不相等 的

例子:

 1:  >>> True


 2:  True


 3:  >>> False


 4:  False


 5:  >>> []


 6:  []


 7:  >>> bool ([])


 8:  False


 9:  >>> bool ([1,])


10:  True


11:  >>> bool (0)


12:  False


13:  >>> bool (0.0)


14:  False


15:  >>> bool (0.1)


16:  True


17:  #不同的假值之间也是不相同的


18:  >>> [] == {}


19:  False


20:  >>> [] == None


21:  False


22:  >>>


23:  


4.2 条件执行和if语句

说明:if 判断其后面的条件语句是否为真,如果为真,执行if后面的语句 块,否则不执行;

4.3 else子句

说明:之所以称为子句是因为else必须跟在if语句后面,而不能单独使用;

4.4 elif子句

说明:如果需要更多的判断,可以使用elif,判断更多的条件;

例子:

 1:  #if, elif, else应用


 2:  num = input("Please enter a number:")


 3:  num = int(num)


 4:  if num > 0:


 5:          print ('You input a positive number!')


 6:  elif num < 0:


 7:          print ('You input a negative number!')


 8:  else:


 9:      print ('You input a zero!')


10:  


4.5 嵌套代码块

说明:在if判断后,还需要进一步进行判断就可以使用嵌套代码的方式。

例子:

 1:  key = input("Please select type, color(c) or number(n):")


 2:  if key == 'c':


 3:      color = input ("Please select a color, Red(r), Green(g), Blue(b):")


 4:      if color == 'r':


 5:          print('You selected red')


 6:      elif color == 'g':


 7:          print('You selected green')


 8:      elif color == 'b':


 9:          print('You selected blue')


10:      else:


11:          print("Illegal color type!")


12:  else:


13:      print ("You select number!")


14:  


4.6 更复杂的条件

 

4.6.1 比较运算符

说明:

x==y: 等于;

x<y:  小于;

x>y: 大于;

x<=y: 小于等于;

x>=y: 大于等于;

x!=y: 不等于;

x is y:x和y是同一对象;

x is not y:x和y不是同一对象;

x in y: x在y中;

x not in y: x不在y中;

注意:

比较运算符是可连接的,例如:14 < age < 26;


比较运算符不能比较不同类型的数据;

4.6.2 相等运算符

说明:用来判断两个数据是否相等;

4.6.3 同一性运算符

说明:用于判断两个变量是否指向同一对象;

注意:避免把 is 比较运算符应用于比较常量值,如数字,字符串等。 即 避免以下比较:

1:  if '123' is '123':


4.6.4 成员资格运算符

说明:判断元素是否被包含在对象中;

4.6.5 字符串和序列比较

说明:字符串可以按照字母顺序排列进行比较;

4.6.6 布尔运算符

说明:包括,and, or, not

例子:

 1:  #or的特殊用法,如果没有输入,则会返回or后面的值


 2:  >>> name = input("Please enter a name:") or '<unknown>'


 3:  Please enter a name:


 4:  >>> name


 5:  '<unknown>'


 6:  


 7:  >>> a = 'a'


 8:  >>> c = 'c'


 9:  #如果if后面的判断语句为真,返回a


10:  >>> a if True else c


11:  'a'


12:  #如果if后面的判断语句为假,返回c


13:  >>> a if False else c


14:  'c'


15:  >>>


16:  


4.7 断言

说明:关键字为 assert , 如果断言的条件判断为假,则程序直接崩溃

例子:

 1:  >>> age = 10


 2:  >>> assert 1<age<120, "Age must be realistic"


 3:  >>> age = -1


 4:  >>> assert 1<age<120, "Age must be realistic"


 5:  Traceback (most recent call last):


 6:    File "<pyshell#26>", line 1, in <module>


 7:      assert 1<age<120, "Age must be realistic"


 8:  AssertionError: Age must be realistic


 9:  >>>


10:  


5 循环

 

5.1 while循环

说明:关键字 while ,判断条件为真就一直执行

例子:

1:  name = ''


2:  while not name.strip():


3:      name = input("Please input your name:")


4:  print("Hello,", name)


5.2 for循环

说明:可以用于迭代集合中的每个元素;

例子:

 1:  #遍历列表中的各个元素


 2:  >>> x = [1,2,3,4,5]


 3:  >>> for number in x:


 4:          print (number)


 5:  1


 6:  2


 7:  3


 8:  4


 9:  5


10:  >>> 


11:  


12:  #使用内建函数range


13:  >>> x = range(10)


14:  >>> x


15:  range(0, 10)


16:  >>> for number in x:


17:          print(number)


18:  0


19:  1


20:  2


21:  3


22:  4


23:  5


24:  6


25:  7


26:  8


27:  9


28:  >>> 


29:  


5.3 循环遍历字典元素


说明:通过keys遍历字典,或者通过values

例子:

1:  x = {'a':'1', 'b':'2', 'c':'3'}


2:  for key in x.keys():


3:      print (key, x[key])


4:  


5:  for val in x.values():


6:      print(val)


7:  


5.4 一些迭代工具

 

5.4.1 并行迭代

说明:zip内置函数可以将多个序列“压缩”成一个元组的序列;

例子:

 1:  >>> x = list(range(0,5))


 2:  >>> y = list(range(5,10))


 3:  >>> z = list(range(10, 15))


 4:  >>> z


 5:  [10, 11, 12, 13, 14]


 6:  >>> y


 7:  [5, 6, 7, 8, 9]


 8:  >>> x


 9:  [0, 1, 2, 3, 4]


10:  


11:  >>> zipped = zip(x, y, z)


12:  >>> list(zipped)


13:  [(0, 5, 10), (1, 6, 11), (2, 7, 12), (3, 8, 13), (4, 9, 14)]


14:  >>> 


15:  


5.4.2 编号迭代

说明:使用内建函数enumerate来进行迭代操作;

例子:

 1:  >>> mylist = ['12312', '12ab', '123sa', '1231s']


 2:  >>> for index, string in enumerate(mylist):


 3:          print(index, string)


 4:  


 5:  


 6:  0 12312


 7:  1 12ab


 8:  2 123sa


 9:  3 1231s


10:  >>> 


11:  


5.4.3 翻转和排序迭代

说明:内建函数reversed用于翻转序列,内建函数sorted用于对序列排 序,他们都是返回操作后的序列,不对原序列进行修改;

例子:

1:  >>> data = [1,67,1,13,14,61,2]


2:  >>> sorted(data)


3:  [1, 1, 2, 13, 14, 61, 67]


4:  >>> list(reversed(data))


5:  [2, 61, 14, 13, 1, 67, 1]


6:  >>> 


7:  


5.5 跳出循环

 

5.5.1 break

说明:符合条件时直接中断循环;

例子:

1:  >>> import math


2:  >>>for x in range(99, 0, -1):


3:  >>>    root = math.sqrt(x)


4:  >>>    if root == int(root):


5:  >>>        print ('Max number is:', x)


6:  >>>        break


7:  


8:  Max number is 81


9:  


5.5.2 continue

说明:结束当前循环,并跳到下一轮循环开始;

例子:

 1:  #一个打印偶数的例子,不加else 语句,程序也能正确执行


 2:  >>> for x in range(10):


 3:          if x%2 == 0:


 4:                  print(x)


 5:          else:


 6:                  continue


 7:  


 8:  


 9:  0


10:  2


11:  4


12:  6


13:  8


14:  >>> 


15:  


5.5.3 while True/break

说明:while True部分实现了一个永不停止的循环,由内部的if判断语 句控制跳出循环;

例子:

 1:  while True:


 2:          word = input("Please enter a word:")


 3:          if not word:


 4:                  break


 5:          print("You input:" , word)


 6:  


 7:  Please enter a word:TEst


 8:  You input: TEst


 9:  Please enter a word:ls


10:  You input: ls


11:  Please enter a word:


12:  >>> 


13:  


5.5.4 循环中的else子句

说明:else子句可以用于判断循环操作是否始终没有执行break操作。

例子:

 1:   #设置一个奇数序列,判断里面是不是有偶数(一个蛋疼的程序,哈哈)


 2:  x = list(range(1,100,2))


 3:  for val in x:


 4:      if val%2 == 0:


 5:          print (x)


 6:          break;


 7:  else:


 8:      print("Did not break!")


 9:  #执行结果


10:  Did not break!


11:  


6 列表推导式

说明:利用其他列表创建列表,利用for循环遍历序列,将元素执行相应的 操作;

例子:

1:  #得到10以内数字的平方的列表


2:  import math


3:  mylist = [math.pow(x, 2) for x in list(range(0,10))]


4:  print (mylist)


5:  


6:  #得到10以内偶数的平方的列表


7:  mylist = [math.pow(x, 2) for x in list(range(0,10)) if x % 2 == 0]


8:  print (mylist)


9:  


7 三人行

 

7.1 pass

说明:pass关键字用于占位,当函数或者代码块还没有添加时,可以用 pass来占位,以免语法错误

例子

1:  >>> a = 10


2:  #if的语句块中并没有其他语句需要执行,先用pass占位,执行的时候,如果if判断为真直接跳过。


3:  >>> if a>0:


4:          pass


5:  >>> 


7.2 del

说明:用于删除对象;

注意:del仅能删除变量或者对象中的项,不能直接删除变量指向的对象, 当对象没有被任何变量引用时,python会将变量回收;

例子:

 1:  >>> x = {'a':'1', 'b':'2', 'c':'3'}


 2:  >>> y = x


 3:  >>> y


 4:  {'a': '1', 'c': '3', 'b': '2'}


 5:  #删除变量x,再调用会报“未定义”的错误


 6:  >>> del x


 7:  >>> x


 8:  Traceback (most recent call last):


 9:    File "<pyshell#15>", line 1, in <module>


10:      x


11:  NameError: name 'x' is not defined


12:  >>> y


13:  {'a': '1', 'c': '3', 'b': '2'}


14:  #删除字典中的项


15:  >>> del y['a']


16:  >>> y


17:  {'c': '3', 'b': '2'}


18:  >>> 


19:  


7.3 exec和eval

说明:

exec用于执行一个字符串的语句;

eval用于执行字符串语句,并返回语句执行的结果;

注意:通过增加字典,起到命名空间的作用,以防止由字符串的语句导致 的安全问题;

例子

 1:  #exec直接执行语句


 2:  >>> exec('print("Hello, world!")')


 3:  Hello, world!


 4:  #exec执行后不返回执行结果


 5:  >>> exec("2*2")


 6:  >>>


 7:  #exec在命名空间中执行语句


 8:  >>> exec("""


 9:  x=2


10:  y=3


11:  z=4


12:  """, scope)


13:  >>> scope.keys()


14:  dict_keys(['__builtins__', 'x', 'z', 'y'])


15:  >>> scope['x']


16:  2


17:  >>> 


18:  


19:  #eval直接执行语句


20:  >>> eval('print("Hello, world!")')


21:  Hello, world!


22:  #eval在执行后将执行结果返回


23:  >>> eval('2*2')


24:  4


25:  >>> 


26:  #eval操作字典中的数据


27:  >>> scope.keys()


28:  dict_keys(['__builtins__', 'x', 'z', 'y'])


29:  >>> eval('x+y+z', scope)


30:  9


31:  >>> 


32:  











本文转自 chengxuyonghu 51CTO博客,原文链接:http://blog.51cto.com/6226001001/1739259,如需转载请自行联系原作者
目录
相关文章
|
4天前
|
Python
SciPy 教程 之 Scipy 显著性检验 3
本教程介绍Scipy显著性检验,包括其基本概念、原理及应用。显著性检验用于判断样本与总体假设间的差异是否显著,是统计学中的重要工具。Scipy通过`scipy.stats`模块提供了相关功能,支持双边检验等方法。
11 1
|
6天前
|
机器学习/深度学习 Python
SciPy 教程 之 SciPy 插值 2
SciPy插值教程:介绍插值概念及其在数值分析中的应用,特别是在处理数据缺失时的插补和平滑数据集。SciPy的`scipy.interpolate`模块提供了强大的插值功能,如一维插值和样条插值。通过`UnivariateSpline()`函数,可以轻松实现单变量插值,示例代码展示了如何对非线性点进行插值计算。
10 3
|
9天前
|
机器学习/深度学习 数据处理 Python
SciPy 教程 之 SciPy 空间数据 4
本教程介绍了SciPy的空间数据处理功能,主要通过scipy.spatial模块实现。内容涵盖空间数据的基本概念、距离矩阵的定义及其在生物信息学中的应用,以及如何计算欧几里得距离。示例代码展示了如何使用SciPy计算两点间的欧几里得距离。
25 5
|
8天前
|
机器学习/深度学习 Python
SciPy 教程 之 SciPy 空间数据 6
本教程介绍了SciPy处理空间数据的方法,包括使用scipy.spatial模块进行点位置判断、最近点计算等内容。还详细讲解了距离矩阵的概念及其应用,如在生物信息学中表示蛋白质结构等。最后,通过实例演示了如何计算两点间的余弦距离。
17 3
|
7天前
|
机器学习/深度学习 数据处理 Python
SciPy 教程 之 SciPy 空间数据 7
本教程介绍了SciPy的空间数据处理功能,涵盖如何使用`scipy.spatial`模块进行点的位置判断、最近点计算等操作。还详细解释了距离矩阵的概念及其在生物信息学中的应用,以及汉明距离的定义和计算方法。示例代码展示了如何计算两个点之间的汉明距离。
14 1
|
11天前
|
Python
SciPy 教程 之 SciPy 图结构 7
《SciPy 教程 之 SciPy 图结构 7》介绍了 SciPy 中处理图结构的方法。图是由节点和边组成的集合,用于表示对象及其之间的关系。scipy.sparse.csgraph 模块提供了多种图处理功能,如 `breadth_first_order()` 方法可按广度优先顺序遍历图。示例代码展示了如何使用该方法从给定的邻接矩阵中获取广度优先遍历的顺序。
22 2
|
12天前
|
算法 Python
SciPy 教程 之 SciPy 图结构 5
SciPy 图结构教程,介绍图的基本概念和SciPy中处理图结构的模块scipy.sparse.csgraph。重点讲解贝尔曼-福特算法,用于求解任意两点间最短路径,支持有向图和负权边。通过示例演示如何使用bellman_ford()方法计算最短路径。
24 3
|
12天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
28 1
|
5天前
|
机器学习/深度学习 数据处理 Python
SciPy 教程 之 SciPy 插值 3
本教程介绍了SciPy中的插值方法,包括什么是插值及其在数据处理和机器学习中的应用。通过 `scipy.interpolate` 模块,特别是 `Rbf()` 函数,展示了如何实现径向基函数插值,以平滑数据集中的离散点。示例代码演示了如何使用 `Rbf()` 函数进行插值计算。
12 0
|
5天前
|
Python
SciPy 教程 之 Scipy 显著性检验 1
本教程介绍Scipy显著性检验,包括统计假设、零假设和备择假设等概念,以及如何使用scipy.stats模块进行显著性检验,以判断样本与总体假设间是否存在显著差异。
10 0