Python笔记1(基础语法)

一、数据类型和变量

1)、数据类型

1.整数 int

十六进制用0x前缀和0-9a-f表示

2.浮点数 float

对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5

3.字符串 String

  • 字符串是以单引号'或双引号"括起来的任意文本
  • 字符串内部既包含'又包含",可以用转义字符\来标识:\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\
  • r''表示''内部的字符串默认不转义
  • 用'''...'''的格式表示多行内容
  • 字符串有两种索引方式,从左往右以 0开始,从右往左以 -1 开始
  • 字符串可以用 +运算符连接在一起,用 * 运算符重复
  • 字符串的截取的语法格式如下:变量[头下标:尾下标:步长]
str = 'Runoob'

print(str)  # 输出字符串
print(str[0:-1])  # 输出第一个到倒数第二个的所有字符
print(str[0])  # 输出字符串第一个字符
print(str[2:5])  # 输出从第三个开始到第五个的字符
print(str[2:])  # 输出从第三个开始的后的所有字符
print(str * 2)  # 输出字符串两次
print(str + '你好')  # 连接字符串

print('------------------------------')

print('hello\nrunoob')  # 使用反斜杠(\)+n转义特殊字符
print(r'hello\nrunoob')  # 在字符串前面添加一个 r,表示原始字符串,不会发生转义

输出结果为:


4.布尔值 bool

  • 布尔值只有TrueFalse两种值(请注意大小写)
  • 布尔值可以用andornot运算:
    and运算是与运算,只有所有都为Trueand运算结果才是True
    or运算是或运算,只要其中有一个为Trueor运算结果就是True
    not运算是非运算,它是一个单目运算符,把True变成FalseFalse变成True
    布尔值经常用在条件判断中
if age >= 18:
    print('adult')
else:
    print('teenager')

5.空值

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

2)、变量

1.变量

  • 变量名必须是大小写英文、数字和_的组合,且不能用数字开头
  • 等号(=)用来给变量赋值:等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值

同时为多个变量赋值
a = b = c = 1
为多个对象指定多个变量
a, b, c = 1, 2, "runoob"

2.常量

  • 通常用全部大写的变量名表示常量

PI = 3.14159265359

  • / 除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数
print(9 / 3)
3.0
  • // 除法只取结果的整数部分
print(10 // 3)
3
  • % 余数运算,可以得到两个整数相除的余数
print(10 % 3)
1

二、字符串和编码

1)、字符编码

  • Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串
  • ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符
  • 在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytesbytes的每个字符都只占用一个字节

对bytes类型的数据用带b前缀的单引号或双引号表示:
x = b'ABC'

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

print('ABC'.encode('ascii'))
b'ABC'
print('中文'.encode('utf-8'))
b'\xe4\xb8\xad\xe6\x96\x87'
print('中文'.encode('ascii'))
Traceback (most recent call last):
  File "D:/Study/str.py", line 22, in 
    print('中文'.encode('ascii'))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

② 把bytes变为str,就需要用decode()方法

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

bytes中只有一小部分无效的字节,可以传入errors='ignore'忽略错误的字节

print(b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore'))
中

④计算str包含多少个字符,可以用len()函数

print(len('ABCD'))
4
print(len('你好,北京'))
5

2)、格式化

1.%运算符:用来格式化字符串的

%d ---- 整数
%f ---- 浮点数
%s ---- 字符串(不太确定应该用什么,%s永远起作用)
%x ---- 十六进制整数

  • 格式化整数和浮点数还可以指定是否补0和整数与小数的位数:
print('%2d-%02d' % (13, 14))
13-14
print('%.2f' % 3.1415926)
3.14
  • 字符串里面的%是一个普通字符,需要转义,用%%来表示一个%

2.format()方法:用传入的参数依次替换字符串内的占位符{0}、{1}……

print('你好, {0}, 你的成绩提升了 {1:.2f}%'.format('张晓华', 11.23565))
你好, 张晓华, 你的成绩提升了 11.24%

三、使用list和tuple

1)、list

list是一种有序的集合,可以随时添加和删除其中的元素
列表使用 方括号[ ]

  • len()函数可以获得list元素的个数
  • 用索引来访问list中每一个位置的元素,记得索引是从0开始的,用-1做索引,直接获取最后一个元素
list1 = ['Google', 'Runoob', 1997, 2000];
list2 = [1, 2, 3, 4, 5, 6, 7 ];

print ("list1[0]: ", list1[0])
list1[0]:  Google
print ("list2[1:5]: ", list2[1:5])
list2[1:5]:  [2, 3, 4, 5]
  • 可以往list中追加元素到末尾:append()
nickname = ['Mary','John','Hele']

nickname.append('Sam')
print(nickname)
['Mary', 'John', 'Hele', 'Sam']
  • 把元素插入到指定的位置,比如索引号为2的位置:insert(i,' ')方法,其中i是索引位置
nickname = ['Mary','John','Hele']
nickname.append('Sam')

nickname.insert(2,'Lili')
print(nickname)
['Mary', 'John', 'Lili', 'Hele', 'Sam']
  • 要删除list末尾的元素:pop()
nickname = ['Mary','John','Hele']
nickname.append('Sam')
nickname.insert(2,'Lili')

nickname.pop()
print(nickname)
['Mary', 'John', 'Lili', 'Hele']
  • 要删除指定位置的元素:pop(i)方法,其中i是索引位置
nickname = ['Mary','John','Hele']
nickname.append('Sam')
nickname.insert(2,'Lili')
nickname.pop()

nickname.pop(1)
print(nickname)
['Mary', 'Lili', 'Hele']
  • 把某个元素替换成别的元素,可以直接赋值给对应的索引位置
nickname = ['Mary','John','Hele']
nickname.append('Sam')
nickname.insert(2,'Lili')
nickname.pop()
nickname.pop(1)

nickname[1] = 'Sunny'
print(nickname)
['Mary', 'Sunny', 'Hele']
  • 列表对 + 和 * 的操作符与字符串相似。+号用于组合列表,* 号用于重复列表


squares = [1, 4, 9, 16, 25]
squares += [36, 49, 64, 81, 100]
print(squares)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
  • list里面的元素的数据类型也可以不同
L = ['Apple', 123, True]
print(L)
['Apple', 123, True]
s = ['python', 'java', ['asp', 'php'], 'scheme']
print(len(s))
4
p = ['asp', 'php']
s = ['python', 'java', p, 'scheme']
print(s)
['python', 'java', ['asp', 'php'], 'scheme']
print(p[1])
php
print(s[2][1])
php
  • 其他列表函数&方法
    list(seq):将元组转换为列表
    max(list):返回列表元素最大值
    min(list):返回列表元素最小值
    list.copy():复制列表
    list.clear():清空列表
    list.count(obj):统计某个元素在列表中出现的次数
    list.extend(seq):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
    list.remove(obj):移除列表中某个值的第一个匹配项
    list.reverse():反向列表中元素
    list.sort( key=None, reverse=False):对原列表进行排序(reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认))

2)、tuple

tuple:是一种有序列表叫元组。tuple和list非常类似,但是tuple一旦初始化就不能修改。
元组使用 小括号()

  • 定义一个空的tuple:tup1 = ()
  • 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用
  • 元组中的元素值是不允许修改的,但我们可以对元组进行连接组合
tup1 = (12, 34.56);
tup2 = ('abc', 'xyz')
 
# 以下修改元组元素操作是非法的。
# tup1[0] = 100
 
# 创建一个新的元组
tup3 = tup1 + tup2;
print (tup3)
(12, 34.56, 'abc', 'xyz')
  • 元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组
tup = ('Google', 'Runoob', 1997, 2000)
 
print (tup)
('Google', 'Runoob', 1997, 2000)
del tup;
print (tup)
Traceback (most recent call last):
  File "D:/Study/str.py", line 67, in 
    print(tup)
NameError: name 'tup' is not defined
元组运算符
元组内置函数

四、条件判断

1)、if 语句

if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>

1. if中常用的操作运算符:

<   小于
<=  小于或等于
>   大于
>=  大于或等于
==  等于,比较两个值是否相等
!=  不等于

2.input

因为input()返回的数据类型是strstr不能直接和整数比较,必须先把str转换成整数

s = input('birth: ')
birth = int(s)
if birth < 2000:
    print('00前')
else:
    print('00后')

birth: 1955
00前

2)、if 嵌套

在嵌套 if 语句中,可以把 if...elif...else 结构放在另外一个 if...elif...else 结构中

if 表达式1:
    语句
    if 表达式2:
        语句
    elif 表达式3:
        语句
    else:
        语句
elif 表达式4:
    语句
else:
    语句

举个栗子:

num=int(input("输入一个数字:"))
if num%2==0:
    if num%3==0:
        print ("你输入的数字可以整除 2 和 3")
    else:
        print ("你输入的数字可以整除 2,但不能整除 3")
else:
    if num%3==0:
        print ("你输入的数字可以整除 3,但不能整除 2")
    else:
        print  ("你输入的数字不能整除 2 和 3")

输入一个数字:8
你输入的数字可以整除 2,但不能整除 3

五、循环

1)、while 循环

  • while语句的一般形式:只要条件满足,就不断循环,条件不满足时退出循环

while 判断条件:
语句

举个栗子:

n = 100

sum = 0
counter = 1
while counter <= n:
    sum = sum + counter
    counter += 1

print("1 到 %d 之和为: %d" % (n, sum))

1 到 100 之和为: 5050
  • 无限循环:设置条件表达式永远不为 false 来实现无限循环,使用 CTRL+C 来退出当前的无限循环
    举个栗子:
var = 1
while var == 1 :  # 表达式永远为 true
   num = int(input("输入一个数字  :"))
   print ("你输入的数字是: ", num)
 
print ("Good bye!")

输入一个数字  :11
你输入的数字是:  11
输入一个数字  :25
你输入的数字是:  25
输入一个数字  :

  • while 循环使用 else 语句:在条件语句为 false 时执行 else 的语句块
count = 0
while count < 5:
   print (count, " 小于 5")
   count = count + 1
else:
   print (count, " 大于或等于 5")

0  小于 5
1  小于 5
2  小于 5
3  小于 5
4  小于 5
5  大于或等于 5

2)、for 语句

  • for...in循环,依次把listtuple中的每个元素迭代出来
    格式:
for  in :
    
else:
    

举个栗子:for x in ...循环就是把每个元素代入变量x,然后执行缩进块的语句

nickname = ['Mary','John','Hele']
for name in nickname:
    print(name)

Mary
John
Hele

3)、range()函数

  • 遍历数字序列,可以使用内置range()函数。会生成数列
for i in range(5):
    print(i)

0
1
2
3
4
  • 使用range指定区间的值
for i in range(5,9) :
    print(i)

5
6
7
8
  • 可以使range以指定数字开始并指定不同的增量(甚至可以是负数,有时这也叫做'步长')
for i in range(0, 10, 3) :
    print(i)

0
3
6
9
  • 负数
for i in range(-10, -100, -30) :
    print(i)
   
-10
-40
-70
  • range()函数,可以生成一个整数序列,再通过list()函数可以转换为list
L=list(range(5))
print(L)
   
[0, 1, 2, 3, 4]

4)、结束循环

  • break:在循环中,break语句可以提前退出循环
n = 1
while n <= 100:
    if n > 10: # 当n = 11时,条件满足,执行break语句
        break # break语句会结束当前循环
    print(n)
    n = n + 1
print('END')

1
2
3
4
5
6
7
8
9
10
END
  • continue:作用是提前结束本轮循环,并直接开始下一轮循环
n = 0
while n < 10:
    n = n + 1
    if n % 2 == 0: # 如果n是偶数,执行continue语句
        continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
    print(n)

1
3
5
7
9

break语句可以在循环过程中直接退出循环,而continue语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都必须配合if语句使用

5)、pass 语句:pass 不做任何事情,一般用做占位语句

六、dict和set

1)、dict

dict字典是另一种可变容器模型,且可存储任意类型对象
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中
格式:

d = {key1 : value1, key2 : value2 }

  • 键必须是唯一的,但值则不必
访问字典里的值
  • 把相应的键放入到方括号中
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
 
print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])

dict['Name']:  Runoob
dict['Age']:  7
  • 字典键的特性:一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉
    ① 通过in判断key是否存在
    ② 通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value
    pop(key)方法,对应的value也会从dict中删除
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
d.pop('Bob')
print(d)

{'Michael': 95, 'Tracy': 85}

2)、set

set集合是一个无序的不重复元素序列
可以使用大括号{ }或者 set()函数创建集合,注意:创建一个空集合必须用set()而不是 { },因为 { } 是用来创建一个空字典
格式:

parame = {value01,value02,...}
或者
set(value)

  • 集合的特性
    ① 重复元素在set中自动被过滤
    ② 通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果
    ③ 通过remove(key)方法可以删除元素
    ④ set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作
s1 = set([1, 2, 3])
s2 = set([2, 3, 4])

s3 = s1 & s2
print(s3)
s4 = s1 | s2
print(s4)

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

1. 添加元素

语法格式:s.add( x )s.update( x )

2. 移除元素

语法格式:s.remove( x )s.discard( x )

3. 计算集合元素个数

语法格式:len(s)

4. 清空集合

语法格式:s.clear()

5. 判断元素是否在集合中存在

语法格式:x in s

你可能感兴趣的:(Python笔记1(基础语法))