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

本文详细介绍了Python的基础语法,包括数据类型的转换如字符串转数字、数字进制转换等,并展示了数学运算、比较操作、赋值操作、位操作、逻辑操作、成员识别和身份识别操作符的使用。此外,还讲解了条件分支(if-else)和循环(for-loop)的用法,以及break、continue和pass的关键字。文章通过实例代码加深理解,适合Python初学者学习。

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

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

这篇是下篇。

数据类型转换

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

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

学委准备了下面的代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/4 5:59 下午
# @Author : LeiXueWei
# @优快云/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
# @优快云/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
# @优快云/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
# @优快云/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
# @优快云/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
# @优快云/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
# @优快云/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
# @优快云/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
# @优快云/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
# @优快云/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
# @优快云/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
# @优快云/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
# @优快云/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入门到精通大专栏

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

评论 14
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雷学委

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值