多图速成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))

运行效果:

image.png

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进行指数型运算的支持非常好,两个‘*’就能进行指数运算了。

下面看看运行结果:

image.png

比较操作符

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

#!/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))

直接复制运行结果:

image.png

赋值操作符

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

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

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)

运行结果:

image.png

位操作符

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

比如数字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))

运行结果如下:

image.png

& 表示对应位同时为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))

直接看结果:

image.png

成员识别操作符

这个也非常简单,只需要记住两个: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))

查看运行效果:

image.png

身份识别操作符

这个也非常简单,只需要记住两个: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"))

运行效果:

image.png

更多补充: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")

我们先看看运行效果:

image.png

这里我们再回顾抽取如下:

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))

运行结果如下:

image.png

读者可以改代码中的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程序结束!")

直接看一下运行效果:

image.png

最后思考一下

结合前篇

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

#!/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)

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

这里揭晓。

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

image.png

目录
相关文章
|
30天前
|
人工智能 Ubuntu IDE
【Python】基础:环境配置与基础语法
本文介绍了Python编程语言及其环境配置方法。Python由Guido van Rossum于1991年创建,以其简洁、易学和强大的功能著称。文章详细讲解了Python的主要特点、Windows和Ubuntu下的安装配置步骤、基础语法、控制流、函数、文件操作、模块使用及面向对象编程等内容,帮助读者快速入门Python编程。
56 4
|
3月前
|
XML 前端开发 数据格式
三分钟搞定 Python XPath 语法
XPath(XML Path Language)是一种用于在 XML 文档中查找信息的语言。它基于树状结构的 XML 文档,可以通过路径表达式来选取节点或节点集。也常常用来解析 HTML。 如果你是一个前端,对用路径获取元素可能陌生又熟悉。陌生是很多的路径,熟悉的路径上又有熟悉的属性和方法。下面我们就来探究一下 XPath 的魅力。
|
9天前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
19天前
|
存储 Python Perl
python正则语法
本文介绍了正则表达式的基础知识及其在 Python 中的应用。首先解释了为什么要使用正则表达式,通过一个判断手机号的示例展示了正则表达式的简洁性。接着详细介绍了 `re` 模块的常用方法,如 `match()`、`search()`、`findall()`、`finditer()` 等,并讲解了正则表达式的基本语法,包括匹配单个字符、数字、锚字符和限定符等。最后,文章还探讨了正则表达式的高级特性,如分组、编译和贪婪与非贪婪模式。
19 2
|
25天前
|
存储 程序员 开发者
Python编程入门:从零开始掌握基础语法
【10月更文挑战第21天】本文将带你走进Python的世界,通过浅显易懂的语言和实例,让你快速了解并掌握Python的基础语法。无论你是编程新手还是想学习一门新的编程语言,这篇文章都将是你的不二之选。我们将一起探索变量、数据类型、运算符、控制结构、函数等基本概念,并通过实际代码示例加深理解。准备好了吗?让我们开始吧!
|
1月前
|
存储 C语言 索引
Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法
本文全面介绍了Python的基础知识,包括Python的诞生背景、为什么学习Python、Python的应用场景、Python环境的安装、Python的基础语法、数据类型、控制流、函数以及数据容器的使用方法,旨在为Python零基础读者提供一篇全面掌握Python语法的博客。
42 0
Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法
|
1月前
|
存储 数据可视化 数据处理
【Python篇】快速理解Python语法:全面指南
【Python篇】快速理解Python语法:全面指南
46 1
|
2月前
|
Java Linux C++
30天拿下Python之基础语法
30天拿下Python之基础语法
30 4
|
2月前
|
IDE Java 开发工具
Python的语法
Python的语法。
37 5
|
2月前
|
存储 数据挖掘 程序员
揭秘Python:掌握这些基本语法和数据类型,你将拥有编程世界的钥匙!
【9月更文挑战第3天】Python 是一种简洁强大的高级编程语言,其清晰的语法和丰富的功能深受程序员喜爱。本文从基本语法入手,介绍 Python 的代码结构特点,如通过缩进区分代码块,使逻辑更清晰。接着详细讲解主要数据类型:数值型、字符串、列表、元组、集合与字典,每个类型均附有示例代码,帮助初学者快速掌握 Python,为后续学习打下坚实基础。
46 2