多图速成Python基础语法下篇【万字建议收藏】

雷学委 2021-10-26 04:09:31
Python 基础 语法 速成 下篇

正式的Python专栏第15篇,同学站住,别错过这个从0开始的文章!

学委之前写了
多图速成Python基础语法上篇【0.5万字建议收藏】

这篇是下篇。

数据类型转换

这一块比较分散,主要分为下面三类:

  • 字符串转数字,对象,容器
  • 数字转容器,字符等
  • 数字进制转换等

学委准备了下面的代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/4 5:59 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : data_conversion.py.py
# @Project : hello
x = "100"
print("str to int(10)=%s" % int(x, 10))
print("str to int(2)=%s" % int(x, 2))
print("str to int(16)=%s" % int(x, 16))
print("float x=%s" % float(x))
y = 100
print("complex y=%s" % complex(y, 0))
data = str(y)
print("y to str: %s" % data)
text = "hello"
print("str to repr: %s" % repr(text))
text = "hello, world"
print("str to repr: %s" % repr(text))
result = eval("print('hello')")
print("eval result : %s" % result)
result = eval("1+1")
print("eval result : %s" % result)
result = tuple("hello")
print("str to tuple: %s" % str(result))
langs = tuple(['Python', 'Java', 'Scala', 'JavaScript'])
print("str to tuple: %s" % str(langs))
result = tuple("('hello', 'world')")
print("str to tuple: %s" % str(result))
data = list("hello data")
print("str to list : %s" % data)
data = set("hello data")
data.add('b')
print("str to set : %s" % data)
data = dict([("name", "levin"), ("langs", langs)])
print("tuples to dict : %s" % data)
data = frozenset("hello data")
print("str to frozen set: %s" % data)
# data += "b"
# char = unichr(97) # unichr: no longer exist
char = chr(97)
print("int to char: %s" % char)
int_value = ord(char)
print("char to int: %s" % int_value)
number = 16
print("number to 十六进制: %s" % hex(number))
print("number to 八进制: %s" % oct(number))

运行效果:
在这里插入图片描述

7种操作演示

python内支持下面7种类型的操作。

  • 数学运算操作符
  • 比较操作符
  • 赋值操作符
  • 按位操作符
  • 逻辑操作符
  • 成员识别操作符
  • 身份识别操作符

基础数学运算演示

这种非常常见,比如进行两个数字运算,或者数学运算表达式。直接复制下面的代码运行:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/4 9:49 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : user_input.py.py
# @Project : hello
x = 3
y = 333
print("x %s, y %s" % (x, y))
print("x+y= %s" % (x + y))
print("x-y= %s" % (x - y))
print("x*y= %s" % (x * y))
print("y/x= %s" % (y / x))
print("y//x= %s" % (y // x))
print("5/2= %s" % (5 / 2))
print("5//2= %s" % (5 // 2))
print("y%" + ("x= %s" % (y % x)))
print("x%" + ("y= %s" % (x % y)))
print("y**x= %s" % (y ** x))

这里我们看到python进行指数型运算的支持非常好,两个‘*’就能进行指数运算了。

下面看看运行结果:

在这里插入图片描述

比较操作符

比较操作非常直白,就是对比左右两个数字/对象,判断是否满足给定比较关系(大于,小于,等于等等)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/4 9:49 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : operator.py
# @Project : hello
print("1 > 2 ? %s" % (1 > 2))
print("1 < 2 ? %s" % (1 < 2))
print("1 == 2 ? %s" % (1 == 2))
print("1 == 2 ? %s" % (1 != 2))
print("\"1\" == \"1\" ? %s" % ("1" == "1"))
print("1 >= 2 ? %s" % (1 >= 2))
print("1 <= 2 ? %s" % (1 <= 2))

直接复制运行结果:

在这里插入图片描述

赋值操作符

赋值操作符,顾名思义就是,一边操作一边赋值。

非常简单,无法就是比前面的运算操作多了一次赋值,代码写起来简化了一些。

y **= 3 #不实用赋值操作符, y = y ** 3

我们看看下面的代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/4 9:49 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : operator.py
# @Project : hello
x = 3
print("x %s" % x)
x += 3
print("+=3 %s" % x)
x -= 3
print("-=3 %s" % x)
x *= 3
print("*=3 %s" % x)
x **= 3
print("**=3 %s" % x)
x /= 3
print("/=3 %s" % x)
x = 3
x //= 3
print("//=3 %s" % x)
x = 10
x %= 3
print("%"+"= %s" % x)

运行结果:

在这里插入图片描述

位操作符

在计算机内数据都是二进制存储的。

比如数字8(十进制),存储起来是:0000…0000100(就是30位的其他位都是0,除了第三位是1,表示2的三次方)。

所以左移动一位就是乘以2,或者右移动除以2。

我们看看下面的代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/4 9:49 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : operator.py
# @Project : hello
import sys
data = 8 # 二进制:1000
print("与运算:8 & 1 ? %s" % (data & 1)) # 1000 & 0001 = 0
print("或运算:8 | 1 ? %s" % (data | 1)) # 1000 | 0001 = 1001
print("异或运算:8 ^ 2 ? %s" % (data ^ 2)) # 1000 ^ 0010 = 1010
print("异或运算:8 ^ 8 ? %s" % (data ^ data)) # 1000 ^ 1000 = 1010
print("按位取反运算:~8 ? %s" % (~data)) #~x = -x - 1
print("按位取反运算:~ -8 ? %s" % (~ -data)) #~ -x = -x - 1
print("原数的二进制格式输出: %s" % bin(data & 0xFFFFFFFF))
print("取反之后的二进制格式输出: %s" % bin(~data & 0xFFFFFFFF))
print("左移位运算: 8 <<2 ? %s" % (data << 2))
print("右移位运算: 8 <<2 ? %s" % (data >> 2))
print("8 & 1 ? %s" % (data & 1))
print("8 & 2 ? %s" % (data & 2))
print("8 & 8 ? %s" % (data & 8))

运行结果如下:

在这里插入图片描述

& 表示对应位同时为1则标记结果对应位置为1;
| 表示只要对应位置为1则标记结果对应位置为1。
^ 异或则对应位置同为0/1则标记结果对应位置为0,其他情况为1.
取反,0变成1,1变成0

逻辑操作符

这个非常简单,记住这三个:and, or, not。
用法则是,and / or 需要连结两个表达式。not 则可以在任何表达式前面。

我们直接看代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/4 9:49 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : operator.py
# @Project : hello
expr = 1 > 2
print("expr : ",expr)
print("not expr: ", not expr)
print("and : ", expr and (2 > 3))
print("or : ", expr or (2 > 3))
print("or : ", expr or (4 > 3))

直接看结果:

在这里插入图片描述

成员识别操作符

这个也非常简单,只需要记住两个:in 和 not in。
也就是针对容器类的比如list/tuple/字符串类型的数据,我们使用in或者not in判断某个值是否为该容器的元素。

看看代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/4 9:49 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : operator.py
# @Project : hello
data = [1, 2, 3]
print("1 in list %s: %s" % (data, 1 in data))
print("4 not in list %s: %s" % (data, 4 not in data))
data = (1, 2)
print("1 in tuple %s : %s" % (data, 1 in data))
print("4 not in tuple %s : %s" % (data, 4 not in data))
data = "hello world"
print("\"hello\" in string %s : %s" % (data, "hello" in data))
print("\"hello2\" not in string %s : %s" % (data, "hello2" not in data))

查看运行效果:

在这里插入图片描述

身份识别操作符

这个也非常简单,只需要记住两个:is 和 is not。
主要用来判断两个变量是否同个

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/4 9:49 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : operator.py
# @Project : hello
data = [1, 2, 3]
print("data is data %s: %s" % (data, data is data))
other = "hello"
print("%s is data %s: %s" % (other, data, other is data))
print("%s is not data %s: %s" % (other, data, other is not data))
print("\"222\" is data %s: %s" % (data, "222" is data))
print("\"222\" is \"222\" : %s" % ("222" is "222"))

运行效果:

在这里插入图片描述

更多补充:is 在python里面就是判断两个对象是否同个id的(也就是id(object)函数的结果,object的内存地址)。

If条件分支

我们写代码的时候有时候并不想从头到尾执行。

前面介绍了各种操作符,它们都可以用来制作表达式。

然后给条件分支作为判断执行的依据。

如果需要有条件有选择的运行代码,在python里面可以这样:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/4 9:49 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : ifelse.py
# @Project : hello
data = 1
if data == 1:
print("data is 1")
else:
print("data is not 1")
data = 5
if data == 1:
print("data is 1")
elif data < 10:
print("data < 10")
else:
print("data >= 10")

我们先看看运行效果:

在这里插入图片描述
这里我们再回顾抽取如下:

if 条件表达式1:
这里放满足表达式1情况下运行的代码
elif 条件表达式2:
如果第二种情况的判断,运行这里的代码
else:
其他情况,运行这里的代码

这里的elif 分支,和else分支也是可以省略的,最简化的如下:

if 条件表达式1:
这里放满足表达式1情况下运行的代码

循环重复执行For-Loop

循环的用途,就是让程序不停(或者限定次数)运行指定代码。

比如,让你编程实现1 + 2 + … + 100,求和1逐步累加到100的和。

当然可以编程 1 + 2 + 3 一支写到100,当时如果要求计算到10000呢?

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/4 9:49 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : forloop.py
# @Project : hello
start = 1
n = 100
sum = 0
while start <= n:
sum = sum + start
start += 1
print("sum of (1,...,%s) is %s" % (n, sum))

运行结果如下:

在这里插入图片描述
读者可以改代码中的n变量的值,如果要累加到10000,那么直接修改n为10000,运行代码即可算出。

跳出/终止循环

比如还是上面的求和计算,想要超过1000的数字就不再累加。

怎么做到?python里面给出了”break“这个关键字。

下面看看代码怎么实现:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/4 9:49 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : forloop.py
# @Project : hello
start = 1
n = 10000
sum = 0
while start <= n:
sum = sum + start
if start >= 1000:
break
start += 1
print("start is %s" % start)
print("sum of (1,...,%s) is %s" % (start, sum))

运行代码我们可以发现运行到start=1000的时候累加完,程序就输出累加结果了。

当然python里面还有continue和pass关键字。

这里不作展示了,简单说明一下:

continue:会让循环继续运行,但是会跳过continue
后面的代码,直到不满足continue的条件或者循环结束。

pass:则是不限制于循环内使用,我们定义函数也能用pass。循环内使用pass

循环也能用for来编写,下面把上面几个关键字一并展示了。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/4 9:49 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : forloop.py
# @Project : hello
for letter in 'Love Python':
if letter == ' ':
print("空格")
continue
if letter == 'h':
pass
print('This is pass block')
print('Current Letter :', letter)
print("雷学委的forloop程序结束!")

直接看一下运行效果:

在这里插入图片描述

最后思考一下

结合前篇

可以运行一下下面的代码,然后猜测一下这些操作符的优先顺序。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/4 9:49 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : operator_ordering.py
# @Project : hello
a = 1
b = 2
c = 3
d = 4
result = (+a + b) * c / d
print("result = %s " % result)

可以算一下这个表达式的结果。

这里揭晓。

下面表格把操作符从高到低执行级别。

操作符 描述
** 指数操作最高
~ + - 取反操作,一元加运算,和一元减运算
* / % // 乘法,除法,取余数,除法向下取整
+ - 加法 和 减法
>> << 左右位移操作符
& 与操作符
^ | 位操作符
< > <= >= 比较操作符
< > == != 等于操作符
= %= /= //= -= += *= **= 赋值操作符
is is not 身份识别操作符
in not in 成员操作符
not and or 逻辑操作符

对了,喜欢Python的朋友,请关注学习 Python基础专栏 or Python入门到精通大专栏

持续学习持续开发,我是雷学委!
编程很有趣,关键是把技术搞透彻讲明白。
欢迎关注,还有尽情点赞收藏!

版权声明
本文为[雷学委]所创,转载请带上原文链接,感谢
https://levin.blog.csdn.net/article/details/120612734

  1. Python project management and construction, these four tools are enough!
  2. IDE的使用,pycharm引入Python库
  3. In the 120 series columns, you can learn the python beautiful oup4 module, 7000 word blog + climb the ninth workshop network
  4. Django运行xadmin 报错解析 ImportError: cannot import name 'DEFAULT_FORMATS' from 'import_export.admin'
  5. Python程序大学课程写程序
  6. Programme Python Programme d'études collégiales
  7. Python程序大學課程寫程序
  8. Django runxadmin Error resolution importerror: cannot Import name 'default Formats' from 'import _ Export.admin»
  9. Python 函数式编程,看这一篇足够了!
  10. 太棒了!11个好用到起飞的「Python字典」知识点!
  11. 一道Python题目,求解答!
  12. 一道Python題目,求解答!
  13. Un problème Python, s'il vous plaît!
  14. C'est génial! 11 points de connaissance du dictionnaire Python pour le décollage!
  15. Python Functional Programming, This is enough!
  16. 在python中beta分布的问题?
  17. 一个python习题,没有什么头绪,是关于进制的转换和绘制的,想了几天了,不仅仅是2,8,16这种常见的进制转换
  18. Un exercice Python, qui n'a pas beaucoup d'idées, est sur la conversion et le rendu décimaux et a pensé pendant quelques jours, pas seulement 2, 8, 16 cette conversion décimale commune
  19. Un problème avec la distribution bêta en python?
  20. python实现简单的读取excel 内容,报错
  21. L'implémentation Python lit simplement le contenu d'Excel et signale les erreurs
  22. 用Python定义一个函数,接收n个数字,求这些参数数字的和
  23. Définissez une fonction en python, recevez n nombres et additionnez ces nombres de paramètres
  24. 上电Python写文件后,再断电后导致文件内容丢失
  25. 上電Python寫文件後,再斷電後導致文件內容丟失
  26. Une fois que Python est allumé pour écrire des fichiers, le contenu des fichiers est perdu après une panne de courant
  27. python套接字编程报错:ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
  28. 【Python从入门到精通】(二)怎么运行Python呢?有哪些好的开发工具(PyCharm)
  29. 【Python从入门到精通】(二)怎么运行Python呢?有哪些好的开发工具(PyCharm)
  30. Python语法1
  31. 2018年度最受推荐的10本Python书籍(初学者必看)
  32. Les 10 livres Python les plus recommandés en 2018 (obligatoire pour les débutants)
  33. Syntaxe Python 1
  34. Python语法1
  35. 在python 运行celery时候 AttributeError: 'NoneType' object has no attribute 'Redis'错误
  36. Attributeerror: 'nonetype' Object has no attribute 'redis' Error when Celery is running in Python
  37. Syntaxe Python 1
  38. Python celery is a plug-in that focuses on distributed asynchronous task processing and task scheduling!
  39. Python celery is a plug-in that focuses on distributed asynchronous task processing and task scheduling!
  40. 在python,使用scrapy爬虫框架
  41. It's time for everyone to see your blog written in Django (including deployment tutorial video)
  42. Python扩展速记符 要求用for循环,if语句
  43. Python擴展速記符 要求用for循環,if語句
  44. Le sténographe d'extension Python nécessite une boucle pour, si instruction
  45. Python+人工智能就业班v5.0wumi
  46. python编程技术的题目,希望能得到解答
  47. Pandas determines the header row dynamically
  48. 关于#python#的问题:模拟登陆后能获取到cookie,就是cookie一天就过期
  49. pandas为dataframe添加新的数据行(rows)、在dataframe后面纵向添加一行数据(数据为列表list形式)、列有不匹配将会使用NA值进行填补
  50. pandas使用组合条件筛选、过滤数据行
  51. 热烈祝贺1024,求解Python3.10闪退问题
  52. Python基础题练习题库有没呢?
  53. python构建神经网络,正向和反向传播
  54. python爬虫输入数字翻页才成功,用变量代替不成功,为什么?
  55. 【Python 爬虫】 2、HTTP基本原理
  56. 【Python 爬虫】 1、爬虫基础概念
  57. Python中如何用find函数计数?
  58. 一文搞懂Python装饰器
  59. python数据结构之递归
  60. 关于#python#的问题:为什么这个open函数会报错