Python 语言基础

177 阅读6分钟

Python 语言基础


1.Python中的缩进

Python中,以# 开头的语句是注释,解释器会忽略注释,其他每一行都是一个语句,当语句以冒号结尾时,缩进的语句视为代码块.

# print absolute value of an integer;
a = 100
if a >=0:
   print(a)
else:
   print(-a)

缩进强迫我们写出格式化代码,但没有固定缩进是几个空格还是Tab.按照约定俗称的惯例,应该时政坚持使用4个空格. l另外,缩进会使黏贴"失效",黏贴过去的代码必须重新检查缩进是否正确.

2.Python中的数据类型和变量


2.1 整数类型

Python可以处理任意大小的整数,当然包括负整数,在程序中的标识方法和数学上的写法一样.

a = 1
b = 100
c = -800

对于很大的数,例如 100000000000,python允许在数字中间以_分割

a = 1_000_0000
b = 0xa1b2_c3d4
2.2 浮点数

浮点数也就是小数,称为浮点数,是一位按照科学计数法标识的时候,一个浮点数的小数点位置是可变的.

# 小数点位置是可变的
1.23x10*912.3x10*8
# 对于很大或者很小的浮点数,必须使用科学计数法标识
1.23x109就是1.23e9,或者12.3e80.000012可以写成1.2e-5
2.3 字符串

字符串使用单引号' 或者双引号""括起来的任意文本,特殊符号使用\来标识. 转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\表示的字符就是\

'I\'m \"OK\"!'

如果字符串内部有很多换行,用\n写在一行不便阅读,为了简化,Python允许使用... 的格式标识多行内容

print(```line1
...line2
...line3```)
2.4 布尔值

一个布尔值只有True False 两种值,可移直接使用True、False表示布尔值,也可以通过布尔运算计算出来

True
False
3 >2

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

# and 运算,只有所有都为True,and运算才为True
5>3 and 3>1
#or运算是或运算,只要其中有一个为True
5>3 or 1>3
#not运算是非运算,它是一个单目运算符,把True变成Fals
not 1 > 2 # True 
2.5 空值

空值是Python里一个特殊的值,用None表示.None不能理解为0,因为0 是有意义的,而None是一个特殊的空值.

2.6 变量

变量名必须是大小写英文、数字和_的组合,切不能用数字开通

a = 1
t_007 = 'T800'
2.8 常量

Python中,通常用全部大写的变量名表示常量

PI = 3.1415926

3.字符串和编码


3.1 Python的字符串
# ord()函数获取字符串的整数标识,chr()函数把编码转换为对应的字符

ord('A') # 65
ord('中') # 20013
chr(66) # 'B'
chr(25991) # '文'

以Unicode表示的str通过encode()方法可以编码为指定的bytes

'ABC'.encode('ascii') # b'ABC'
'中文'.encode('utf-8') # b'\xe4\xb8\xad\xe6\x96\x87'

从网络或磁盘上读取了字节流,那么读到的数据就是bytes,要把bytes变为str,就需要decode()方法

b'ABC'.decode('ascii') # 'ABC'
b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8') # '中文'

len()函数计算str的字符数,换成bytes就计算字节数

len(b`ABC`) # 3
len('中文') # 3
3.2 字符串格式化

Python中的格式化方式和C语言是一致的,用%实现

print('Hello ,%s % world')
print('hi,%s ,you hava $%d % (jay,100000)')
3.2.1 字符串格式化常见占位符
占位符替换内容
%d整数
%f浮点数
%s字符串
%x十六进制整数
3.2.2 格式化整数和浮点数还可以指定是否补0 和整数与小数的位数
print('%2d-%02d' % (3, 1))
#  3-01 前边有一位空着
print('%.2f' % 3.1415926)
#3.14

3.3.3 f-string
r = 2.5
s = 3.14*r**2
print(f'The area of a circle with radius {r} is {s:.2f}')

# The area of a circle with radius 2.5 is 19.62

4.list 和tuple


4.1 list

Pyhotn内置的一种数据类型是列表list,list 是一种有序的集合,可以随时添加和删除其中的元素.

  • list 声明

    classmates = ['Michael','Bob','Tracy']
    
  • 使用len()函数可以获得list元素个数

    len(classmates)
    
  • list元素访问 使用索引访问元素从0开始,除了计算索引位置之外,还可以用-1做索引,直接获取最后一个元素

    classmates[0]
    classmates[-1]
    
  • 使用append()向list中添加元素

    classmate.append('Adam')
    
  • 使用insert()将元素插入到指定索引的位置

    classmate.insert(1,'Jack')
    
  • 使用pop()方法删除掉最后一个元素

    classmates.pop()
    
  • 要把某个元素替换成别的元素,可以直接赋值给对应的索引位置

    classmates[1] = 'S'
    
  • list里面的元素的数据类型也可以不同

    L = ['Apple',1234,True]
    
  • list中的元素也可以是另一个list

    s = ['python', 'java', ['asp', 'php'], 'scheme']
    
4.2 tuple(元组)

元组是另一种有序列表,和list非常类似,但tuple一旦初始化就不能修改. tuple获取元素的方法是一样的,可以使用索引,但不能再赋值为另外的元素.

  • 声明元组

    classmates = ('1','2','3')
    
  • 定义一个空的元组

    t=()
    
  • 声明只有一个元素的tuple

    t = (1,)
    

5.条件判断

age = 3
if age >=18:
   print('adult')
elif age >=6:
    print('teenager')
else:
    print('kid')

6. 循环

Python 中有两种循环,一种是for...in 依次把list或tuple中的每个元素迭代出来.

range()函数可以生成一个整数序列

names = ['a','b','c']
for name in namse:
    print(name)
# 生成0 - 99的整数序列
for x in range(100):
    print(x)

while循环

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

7.dict和set

7.1 Python内置了字典:dict的支持,在其他语言中成为map,使用键值对(key-value)存储,具有极快的查找速度
  • 声明一个字典

    d = {'Michael':95,'Bob':75,'Tracy':85}
    # 或者
    d = dict(name='Bob', age=20, score=88)
    # 访问字典元素
    d['Michael']
    
  • 把数据放入dict的方法,除了初始化时指定外,还可以通过key方式

    d['Adam'] = 67
    
  • 使用in 判断key是否存在

    'Thomas' in d
    
  • 要删除一个key,用pop(key)方法,对应的value也会从dict中删除

    d.pop('Bob')
    
7.2 set

set和dict类似,也是一组key的集合,但不存储value,由于key不能重复,所以在set中没有重复的ky

  • 创建一个set需要提供一个list作为输入集合

    s = set([1,3,5])
    
  • 通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果

    s.add(6)
    
  • set可以看成数学意义上的无序和无重复的集合,因此可以做数学意义上的交集、并集等操作

    s1 = set[1,2,3]
    s2 = set[2,3,4]
    s1 & s2 # {2,3}
    s1 | s2 # {1,2,3,4}