Python3基础语法

简介: Python3基础语法

Python 是一种解释型、面向对象、动态数据类型(弱类型)的高级程序设计语言。

Python 由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。

像 Perl 语言一样, Python 源代码同样遵循 GPL(GNU General Public License) 协议。

官方宣布,2020 年 1 月 1 日, 停止 Python 2 的更新。

Python 2.7 被确定为最后一个 Python 2.x 版本。

Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。

开发工具:Visual Studio Code

1.查询是否安装python3

在Visual Studio Code终端的运行结果

apple@192 python % python3        
Python 3.12.1 (v3.12.1:2305ca5144, Dec  7 2023, 17:23:38) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

2.cnotrol加Z字退出命令编译状态

在Visual Studio Code终端的运行结果

apple@192 python % python3        
Python 3.12.1 (v3.12.1:2305ca5144, Dec  7 2023, 17:23:38) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
zsh: suspended  python3
apple@192 python % 

clear命令可以在命令行清除屏幕信息,但是在python3命令编译状态下执行clear无效。

3.直接运行.py文件

在在Visual Studio Code终端的命令行执行:python3 test.py

apple@192 python % python3 test.py

Python 在代码编写时,没有大括号约定代码块的边界,而是用缩进来组织,默认为 4 个空格,比如以下 object c 语言的代码:

int a = 1;
if(a>0) {
print(“a>0”);
}else{
print(“a<=0”);
}

而在 Python 里面,是没有大括号的,但需要前面缩进 4 个空格表示代码块:

a =  1 # float(input("输入一个数字: "))
if a>0:
    print('a>0')
else:
    print('a<=0')

打印结果:

a>0


整体缩进:

Tab

整体取消缩进:

Tab + Shift

  1. Python数据类型

4.1 整数、浮点数

Python 的整数和浮点数与其它语言比较类似,都是通过正常数字表达。

但 Python 允许我们在数字中加下划线 _ 分隔很大的数,比如:十进制 10_000_000_000,十六进制也可以 0xa5b3_c3d。

并且,Python 的整数和浮点数都没有大小限制,但是超过一定范围后(比如:计算机的位数不足以表示这个数)就直接表示为 inf(无限大)。

print(float("inf") > 20000)

打印结果:

True

4.2 字符串

Python 中的字符串用两个单引号 ‘’ 表示,比如 ‘Hello World’。

当字符串内部既包含 ’ 又包含 " 时,可以用转义字符 \ 来标识引号,比如:

‘I’m"OK"!’, 即:I’m “OK”!

Python 还用了 r’’ 表示 ‘’ 内部的字符串默认不转义:

print('\\t\\') #转义时

打印结果:

\t\ 
print(r'\\\t\\') #不转义时

打印结果:

\\\t\\ 

如果字符串内部有很多换行,可以用 ‘’‘’‘’ 的格式表示多行内容:

print('''line1
line2
line3''')

打印结果:

line1
line2
line3

多行字符串 ‘’‘’‘’ 还可以在前面加上 r 使用,转义符会失效:

print(r'''hello,\n
...world''')

打印结果:

hello,\n
...world

4.3 布尔值与空值

布尔值

Python 用 True/False 来表示布尔:

print(True)
print(False)
print(3 > 1)
print(3 >  5)

打印结果:

True
False
True
False

布尔值可以用与、或和非(and、or和not表示)运算:

print(True and False)
print(True or False)
print(not False)
print(not 1 > 2)

打印结果:

False
True
True
True

空值

和 Java 中的 null、Go 语言中的 nil 一样,Python 用 None 来表示空值。空值没有数据类型,判断空值:

print(False==None)
print(None==None)
print(1==None)

打印结果:

False
True
False

4.4 变量与常量


变量不仅可以是数字,还可以是任意数据类型。变量在程序中用变量名表示,变量名必须是大小写英文、数字和 _ 的组合,且不能用数字开头,比如:


a = 1

t_007 = ‘T007’

Ans = True

注意:和其它固定类型不同,Python 中的变量名可以反复赋值,而且可以是不同数据类型的变量:


a = 123

print(a)

a = ‘ABC’

像 Python 这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如 Go 就是静态语言,赋值语句如下(// 表示注释):


a := 100 // a被定义为整数类型变量

a = “abc” // 报错:不能把字符串赋给整型变量

与 Go、Java 等静态语言相比,Python 作为动态语言更灵活,就是这个原因。


4.5 list 和 tuple


list

和大多数语言一样,list 作为一个列表,表示多个元素组合:

books = ['Chinese', 'Math', 'English']
print(books)

打印结果:

['Chinese', 'Math', 'English']

Python 作为动态语言,一个 list 中的元素可以是不同类型,比如:

l2 = ['Chinese', True, 123]
print(l2)

打印结果:

['Chinese', True, 123]

Python 提供了很多数组相关的函数,可以直接使用,如:

len(),获取列表的元素个数;

print(len(l2))

打印结果:

3

append,插入元素到列表的尾端;

l2.append(123456)
print(l2)

打印结果:

['Chinese', True, 123, 123456]

insert,插入元素到数组指定位置;由于insert是动态的,当插入的下标超过list的总长度时页能插入到list的尾部

books.insert(2, 12334)
print(books)
books.insert(10, 1233456)
print(books)

打印结果:

['Chinese', 'Math', 12334, 'English']
['Chinese', 'Math', 12334, 'English', 1233456]

pop,删除指定下标的元素,默认删除尾端元素。若下标大于等于list的总长度就报错

books.pop(4)
print(books)

打印结果:

['Chinese', 'Math', 12334, 'English']

tuple


tuple 元组是 Python 中独有的数据结构,表示一组不可变的元素:

classmate = (‘zhangs’, ‘lis’, ‘wangw’)

tuple 没有 append、insert、pop 这样的方法,也没有赋值操作。

不可变的元组 tuple 的意义是:代码更安全。

Python官方说明:如果可能,能用 tuple 代替 list 就尽量用 tuple。

classmate = ('zhangs', 'lis', 'wangw')
print(classmate)

打印结果:

('zhangs', 'lis', 'wangw')

4.6 dict 和 set

dict

字典(dict)也叫 map,是存储键值对(key-value,简称 k-v)的数据结构,采用 hash 算法存储数据,具有极快的查找速度。

定义一个 dict,赋值:

d = {} # 存储名字和年龄的映射
d["zhangsan"] = 18
d["lisi"] = 19
print(d)

打印结果

{'zhangsan': 18, 'lisi': 19}

或者:

d = {"zhangsan": 18, "lisi": 19}
print(d)

打印结果

{'zhangsan': 18, 'lisi': 19}

当获取 dict 中的 value 值时,可以用 get() 方法:

print(d.get("zhangsan"))
print(d['zhangsan'])

打印结果:

18

或者直接用:

print(d['zhangsan'])


打印结果:

18

删除 key 时,用 pop(key) 方法。

d.pop("zhangsan")
print(d)

打印结果:

{'lisi': 19}

Python 中使用 dict 需要注意的两点:

如果 key 不存在,d[key] 会报错;

dict 中的 key 必须是不可变对象,如字符串、整型数等等,list 是可变的,所以不能作为 dict 的 key;

d[1] = 20
print(d)

打印结果:

{'lisi': 19, 1: 20}

set集合

set 和 dict 类似,也是无序的数据结构,且重复元素会被自动过滤。

s = set([1, 2, 3, 1, 2])
print(s) # {1,2,3

打印结果:

{'lisi': 19, 1: 20}
{1, 2, 3}


set 可以理解为 dict 中的 value 为空的数据结构,在其它语言里,比如 Go 语言里是不存在 set 类型的,要定义一组不重复的元素,只能用 dict 来做。

set 提供了很多操作元素的方法:

add(key),添加元素;

s.add(4)
print(s)
s.add(3)
print(s)

打印结果:

{1, 2, 3, 4}
{1, 2, 3, 4}

remove(key),删除元素;

和 dict 一样,set 内部不允许放入可变对象,如 list。若删除的元素不存在会报错

s.remove(3)
print(s)
s.remove(5)
print(s)

打印结果:

{1, 2, 4}
Traceback (most recent call last):
  File "/Users/apple/小鸡科技/工作/python/test.py", line 70, in <module>
    s.remove(5)
KeyError: 5
  1. 基本操作

5.1 条件判断

和大多数编程语言一样,在Python 中,采用 if-else 来作为条件控制:

age = 3
if age >= 18:
    print('adult')
elif age >= 6:
    print('teenager')
else:
    print('kid')
    names = ['b', 'a', 'c']


打印结果:

kid

和其它语言相比,Python 需要注意三点:


判断语句的冒号不能省略;

Python 的条件判断代码块不用大括号 {} 装起来,而是以缩进代码块来判断(VsCode 中可以采用 tab 键和 shift+tab 键调节缩进);

新增 elif 代替 else if 语句。


5.2 循环

Python 有两种循环 for 和 while。

for 循环循环打印列表里的元素:

sum = 0
for x in range(101):
    sum = sum+x
print(sum) #5050 注意:实际是0~100的和

打印结果:

5050

Python 中自带的 range(n) 方法,可以生成列表 [0, 2, …, n-1],注意编码是从0开始倒n-1,不包括n,n大于等于1

s1 = range(30)
print(s1)
print(len(s1))

打印结果:

range(0, 30)
30

while 循环

只有条件满足,就不断循环,只到不满足条件时退出。比如计算 100 以内的所有奇数之和:

sum = 0
num = 99
while num>0:
    sum = sum+num
    num = num-2
print(sum)

打印结果:

2500

break 和 continue

和其它语言的循环类似,Python 也提供了 break 和 continue 关键字用来控制循环:

d = ["zhangsan", "lisi", "wangwu"]
for name in d:
    if name == "lisi":
        print(name)
        break # 找到对应的元素就退出循环

打印结果:

lisi

lisi

和 break 不同,continue 只是跳过当前循环:

d = ["zhangsan", "lisi", "wangwu"]
for name in d:
    if name == "lisi":
        continue
    print(name)


打印结果:

zhangsan
wangwu

利用循环开发一个猜数字游戏

游戏说明:随机生成一个 0-100 的数,参与者最多可以猜 5 次,看能否猜出随机数是多少。

参考代码:

import random
num = random.randint(0,100)
x = 0
n1 = 0 #记录猜的最近数
n2 = 100 #记录猜的最近数的距离
flag = False

while x<5:
    x = x+1
    n = int(input('随机输入一个数:'))
    if n == num:
        flag = True
        print('你真聪明,只用了%d次就猜对了,答案是%d'%(x, num))
        break
    elif n>num:
        print('太大了!')
        if n-num<n2:
            n2 = n-num
            n1 = n
    else:
        print('太小了!')
        if num-n<n2:
            n2 = num-n
            n1 = n  
if  not flag:
    print('都猜错了!答案是%d,你猜的数%d很接近了,下次努力!'%(num,n1))

打印结果:

随机输入一个数:5
太大了!
随机输入一个数:3
太大了!
随机输入一个数:2
你真聪明,只用了3次就猜对了,答案是2
  1. 小结

Python 为我们提供了非常完善的系统库,我们写程序时可以随取随用,让代码十分精简。比如,完成一个简单的定时任务,C 语言要写 1000 行代码,Go 需要 100 行,而 Python 可能只用 20 行就能实现。

所以 Python 是一种相当高级的语言。理论上来说,越高级的语言,我们入门的成本越低,上手也比较快。


这时,聪明的同学可能就开始问了:那既然 Python 这么好,为什么还需要其它语言呢?

是的,Python 也有它不会的地方,也有它的局限性。比如写操作系统,这个只能用低级语言写;写手机 App,只能用 Swift/Objective-C(iPhone)或 Java(Android);写终端控制器,最好用 C 或 C++。


而且 Python 的运行时间比 C/C++ 等语言都要慢,在性能敏感的程序上,Python 显然不是一个很好的选择。

代码汇总:

print(100+200)
a =  1 # float(input("输入一个数字: "))
if a>0:
    print('a>0')
else:
    print('a<=0')
print('I\'m \"OK\"!')
print('\\t\\') #转义时
print(r'\\\t\\') #不转义时
print('''line1
...line2
...line3''')
print('''line1\n
line2\n
line3''')
print('''line1
line2
line3''')
print(r'''hello,\n
...world''')
print(r'''hello,\n
world''')
print(True)
print(False)
print(3 > 1)
print(3 >  5)
print(True and False)
print(True or False)
print(not False)
print(not 1 > 2)
print(float("inf") > 20000)
print(False==None)
print(None==None)
print(1==None)
books = ['Chinese', 'Math', 'English']
print(books)
l2 = ['Chinese', True, 123]
print(l2)
print(len(l2))
l2.append(123456)
print(l2)
books.insert(2, 12334)
print(books)
books.insert(10, 1233456)
print(books)
books.pop(4)
print(books)
classmate = ('zhangs', 'lis', 'wangw')
print(classmate)
d = {} # 存储名字和年龄的映射
d["zhangsan"] = 18
d["lisi"] = 19
print(d)
d = {"zhangsan": 18, "lisi": 19}
print(d)
print(d.get("zhangsan"))
print(d['zhangsan'])
d.pop("zhangsan")
print(d)
d[1] = 20
print(d)
s = set([1, 2, 3, 1, 2])
print(s) # {1,2,3
s.add(4)
print(s)
s.add(3)
print(s)
s.remove(3)
print(s)
age = 3
if age >= 18:
    print('adult')
elif age >= 6:
    print('teenager')
else:
    print('kid')
    names = ['b', 'a', 'c']
for name in names:
    print(name)
sum = 0
for x in range(101):
    sum = sum+x
print(sum) #5050
s1 = range(30)
print(s1)
print(len(s1))
sum = 0
num = 99
while num>0:
    sum = sum+num
    num = num-2
print(sum)
d = ["zhangsan", "lisi", "wangwu"]
for name in d:
    if name == "lisi":
        print(name)
        break # 找到对应的元素就退出循环

d = ["zhangsan", "lisi", "wangwu"]
for name in d:
    if name == "lisi":
        continue
    print(name)

import random
num = random.randint(0,10)
x = 0
n1 = 0 #记录猜的最近数
n2 = 100 #记录猜的最近数的距离
flag = False

while x<5:
    x = x+1
    n = int(input('随机输入一个数:'))
    if n == num:
        flag = True
        print('你真聪明,只用了%d次就猜对了,答案是%d'%(x, num))
        break
    elif n>num:
        print('太大了!')
        if n-num<n2:
            n2 = n-num
            n1 = n
    else:
        print('太小了!')
        if num-n<n2:
            n2 = num-n
            n1 = n  
if  not flag:
    print('都猜错了!答案是%d,你猜的数%d很接近了,下次努力!'%(num,n1))

打印结果:

apple@192 python % python3 test.py
300
a>0
I'm "OK"!
\t\
\\\t\\
line1
...line2
...line3
line1

line2

line3
line1
line2
line3
hello,\n
...world
hello,\n
world
True
False
True
False
False
True
True
True
True
False
True
False
['Chinese', 'Math', 'English']
['Chinese', True, 123]
3
['Chinese', True, 123, 123456]
['Chinese', 'Math', 12334, 'English']
['Chinese', 'Math', 12334, 'English', 1233456]
['Chinese', 'Math', 12334, 'English']
('zhangs', 'lis', 'wangw')
{'zhangsan': 18, 'lisi': 19}
{'zhangsan': 18, 'lisi': 19}
18
18
{'lisi': 19}
{'lisi': 19, 1: 20}
{1, 2, 3}
{1, 2, 3, 4}
{1, 2, 3, 4}
{1, 2, 4}
kid
b
a
c
5050
range(0, 30)
30
2500
lisi
zhangsan
wangwu
随机输入一个数:5
太大了!
随机输入一个数:3
太大了!
随机输入一个数:2
你真聪明,只用了3次就猜对了,答案是2
apple@192 python % 



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