python基础一百题

1. 基础语法 1.注意编码 在不同的操作系统中、不同的开发工具中,有不同的默认编码类型,常见的有:GBK、GB2313、UTF-8、UNICODE、ISO-8859-1 2.标识符规范 第一个字符可以是:字母、’_’、中文 非第一位字符可以是:字母、数字、’_’、中文 大小写敏感 _姓名 = '

1. 基础语法

1.注意编码

在不同的操作系统中、不同的开发工具中,有不同的默认编码类型,常见的有:GBK、GB2313、UTF-8、UNICODE、ISO-8859-1
在这里插入图片描述

2.标识符规范

  • 第一个字符可以是:字母、’_’、中文
  • 非第一位字符可以是:字母、数字、’_’、中文
  • 大小写敏感

_姓名 = '张三'
name01 = 'zhangsan'
print(_姓名)
print(name01)

3.保留关键字

>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

4.注释

单行注释以 # 开头,多行注释采用三对单引号(’’’)或者三对双引号(""")将注释括起来

# 这是一行注释

'''
这是多行注释
这是多行注释
这是多行注释
'''

5.缩进

通过缩进表示代码块等级,常用Tab

name = 'zhangsan'

# 打印字符
def print_char(name):
    for char in name:
        print(char)

print_char(name)

6.基本数据类型

  • Number(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Set(集合)
  • Dictionary(字典)

7.输入输出

name = input("请输入姓名:")
print('用户输入:', name)
# 保存内容到文件
open('a.log',mode='w').write('asd')

8.导包

import os
from os import path
# from xxx import *
import time

# 创建目录
if not path.exists('testDir'):
    os.mkdir('testDir')

# 格式化时间
format_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
print(format_time)

2.解释器

像java安装后设置好环境变量就可以使用java xx.class一样,安装好python和环境变量后,可以采用python xx.py进行运行,区别不一样的是无需编译,是解释型语言,可直接运行。

hello.py

print ("Hello, Python!");

执行

python hello.py

3. 运算符

python中没有三元表达式,可以通过 if(a>0) a else 0实现

3.1 算术运算法

和大多数类型的编程语言一样,python中的也有±*/,但也有不一样的

  • / 当两个数字类型相除时,如果参数余数,相除会产生小数
  • // 向下整除
  • 字符串不可以和number类型相加,需要先转换为字符串
  • 在字符串中,使用较为灵活

假设变量 a 为 10,变量 b 为 21:

运算符描述实例
+加 - 两个对象相加a + b 输出结果 31
-减 - 得到负数或是一个数减去另一个数a - b 输出结果 -11
*乘 - 两个数相乘或是返回一个被重复若干次的字符串a * b 输出结果 210
/除 - x 除以 yb / a 输出结果 2.1
%取模 - 返回除法的余数b % a 输出结果 1
**幂 - 返回 x 的 y 次幂a ** b 为 10 的 21 次方
//取整除 - 返回商的整数部分9//2 输出结果 4 , 9.0//2.0 输出结果 4.0

3.2 比较运算符

和大多数类型的编程语言一样,==、!=、>、<、>=、<=

假设变量 a 为 10,变量 b 为 20:

运算符描述实例
==等于 – 比较对象是否相等(a == b) 返回 False。
!=不等于 – 比较两个对象是否不相等(a != b) 返回 True.
>大于 – 返回 x 是否大于 y(a > b) 返回 False。
<小于 – 返回 x 是否小于 y。所有比较运算符返回 1 表示真,返回 0 表示假。这分别与特殊的变量 True 和 False 等价。注意,这些变量名的大写。(a < b) 返回 True。
>=大于等于 – 返回 x 是否大于等于 y。(a >= b) 返回 False。
<=小于等于 – 返回 x 是否小于等于 y。(a <= b) 返回 True。

3.3 赋值运算符

假设变量 a 为 10,变量 b 为 20:

运算符描述实例
=简单的赋值运算符c = a + b 将 a + b 的运算结果赋值为 c
+=加法赋值运算符c += a 等效于 c = c + a
-=减法赋值运算符c -= a 等效于 c = c - a
*=乘法赋值运算符c *= a 等效于 c = c * a
/=除法赋值运算符c /= a 等效于 c = c / a
%=取模赋值运算符c %= a 等效于 c = c % a
**=幂赋值运算符c **= a 等效于 c = c ** a
//=取整除赋值运算符c //= a 等效于 c = c // a

3.4 位运算符

按位运算符是把数字看作二进制来进行计算的。Python 中的按位运算法则如下:

假设变量 a 为 60,b 为 13。

运算符描述实例
&按位与运算符:参与运算的两个值,如果两个相应位都为 1,则该位的结果为 1,否则为 0(a & b) 输出结果 12 ,二进制解释: 0000 1100
按位或运算符:只要对应的二个二进位有一个为 1 时,结果位就为 1。
^按位异或运算符:当两对应的二进位相异时,结果为 1(a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~按位取反运算符:对数据的每个二进制位取反,即把 1 变为 0,把 0 变为 1(~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
<<左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补 0。a << 2 输出结果 240 ,二进制解释: 1111 0000
>>右移动运算符:把">>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数a >> 2 输出结果 15 ,二进制解释: 0000 1111

3.5 逻辑运算符

假设变量 a 为 10, b 为 20:

运算符逻辑表达式描述实例
andx and y布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。(a and b) 返回 20。
orx or y布尔"或" - 如果 x 是 True,它返回 x的值,否则它返回 y 的计算值。(a or b) 返回 10。
notnot x布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。not(a and b) 返回 False

3.6 成员运算符

用户判断成员是否包含还是未包含在括字符串、列表或元组。

运算符描述实例
in如果在指定的序列中找到值返回 True,否则返回 False。x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in如果在指定的序列中没有找到值返回 True,否则返回 False。x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

3.7 身份运算符

身份运算符用于比较两个对象的存储单元

运算符描述实例
isis 是判断两个标识符是不是引用自一个对象x is y, 如果 id(x) 等于 id(y) , is 返回结果 True
is notis not 是判断两个标识符是不是引用自不同对象x is not y, 如果 id(x) 不等于 id(y). is not 返回结果 True

4. 数字

Python 数字类型用于数值的储存。数值类型是不允许改变的,如果改变数字数据类型的值,将重新分配内存空间。

  • int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
  • bool (布尔), 如 True。
  • float (浮点数), 如 1.23、3E-2
  • complex (复数), 如 1 + 2j、 1.1 + 2.2j

count = 100
result = True
change = 12.34
c = complex(2, 3)

数字类型转换

有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。

  • int(x) 将x转换为一个整数。
  • float(x) 将x转换到一个浮点数。
  • complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
  • complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。

数学函数

函数返回值 ( 描述 )
abs(x)返回数字的绝对值,如abs(-10) 返回 10
ceil(x)返回数字的上入整数,如math.ceil(4.1) 返回 5
cmp(x, y)如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 Python 3 已废弃,使用 (x>y)-(x<y) 替换
exp(x)返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
fabs(x)返回数字的绝对值,如math.fabs(-10) 返回10.0
floor(x)返回数字的下舍整数,如math.floor(4.9)返回 4
log(x)如math.log(math.e)返回1.0,math.log(100,10)返回2.0
log10(x)返回以10为基数的x的对数,如math.log10(100)返回 2.0
max(x1, x2,…)返回给定参数的最大值,参数可以为序列。
min(x1, x2,…)返回给定参数的最小值,参数可以为序列。
modf(x)返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。
pow(x, y)x**y 运算后的值。
round(x [,n])返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数。
其实准确的说是保留值将保留到离上一位更近的一端。
sqrt(x)返回数字x的平方根。

5. 字符串

  • 单引号和双引号使用完全相同。
  • 使用三对引号(’’'或""")可以囊括一个多行字符串。
  • 转义符 ‘’
  • 自然字符串, 通过在字符串前加 r 或 R。 如 r"this is a line with \n" 则\n会显示,并不是换行。
  • Python 允许处理 unicode 字符串,加前缀 u 或 U, 如 u"this is an unicode string"。
  • 字符串是不可变的。
  • 按字面意义级联字符串,如"this " "is " "string"会被自动转换为this is string。
  • 字符串可以用 + 运算符连接在一起,用 * 运算符重复。
  • Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
  • Python中的字符串不能改变。
  • Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
  • 字符串的截取的语法格式如下:变量 [头下标: 尾下标: 步长]

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

字符串格式化
常用的有:%s、%d、%f

content = '姓名:%s,年龄:%d' % ('张三', 16)
print(content)

字符串内建函数
find、endwith、startwith、index、join、replace、split、lower、upper

6. 列表List

  • 列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
  • 列表用 [ ] 标识,是 python 最通用的复合数据类型。
  • 列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾,遵循左闭右开。
  • 加号 + 是列表连接运算符,星号 * 是重复操作。

content = [1, 3, 5.0, 'zhangsan']
nums = [1, 3, 5, 7, 9]
nums2 = [2, 4, 6, 8, 10]
nums.remove(1)
print(nums[0])
print(nums[0:2])
print(nums[-1])
print(nums[-3:])
nums.append(11)
# nums = nums*3
nums += nums2
print(nums)

在这里插入图片描述

7. 元组

元组与列表类似,不同之处在于元组的元素不能修改,但可以相加组合

tup1 = (1, 3, 5, 7, 9)
tup2 = (2, 4, 6, 8, 10)
print(tup1[0])
print(tup1[1:3])
print(tup1[-3:])
tup1 += tup2
print(tup1)

内置函数
len、min、max、tuple

8. 字典

在python中的字典对应是java中的map集合,可以进行增删改查,格式化后就是我们常用的json数据格式

import json
headers = {
    "Host": "www.baidu.com",
    "Connection": "keep-alive",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36",
    "Accept-Encoding": "gzip, deflate",
    "Accept-Language": "zh-CN,zh;q=0.9",
}

print(headers["Accept-Language"])
headers.update({"Accept-Language": "666"})
headers["Accept-Language"]="777"
print("Accept-Language" in headers)
headers.pop("Accept-Language")
print("Accept-Language" in headers)
print(json.dumps(headers))
print(type(headers))

9. 条件控制语句和循环

通过条件控制语句,进行代码有选择性的执行,常见if、while、

a = 6
b = 10
if a > b:
    print('a>b')
else:
    print('a<=b')

while a < b:
    a += 1
else:
    print('end')

10. 迭代器和生成器

迭代器:用于遍历数据
生成器:生成可迭代的数据,使用yield

nums = [1, 2, 3, 4]
it = iter(nums)
print(next(it))
for item in it:
    print(item)
nums = [1, 2, 3, 4]

def get_nums():
    for item in nums:
        yield 'times' + str(item)
    print('end')

for i in get_nums():
    print(i)

11. 函数、方法、类

与类和实例无绑定关系的function都属于函数(function); 与类和实例有绑定关系的function都属于方法(method)
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
‘_’下划线开头变量表示内部成员,类似于java中的private,不能直接使用

count = 0


class User:
    """
    用户类
    """
    name = ''
    _age = 0
    count = 1

    def set_name(self, name):
        self.name = name

    def set_age(self, age):
        self._age = age

    def get_format_name(self):
        count = 2

        # 闭包
        def print_something():
            global count
            count = 3
            print('print_something')

        print_something()
        return '姓名:%s' % self.name

    def get_age(self):
        return self._age


user = User()
user.set_name('张三')
print(user.get_format_name())
print('姓名:%s' % user.name)
# 错误使用
# print('年龄:%s' % user._age)
print(count)

使用外部作用域需要使用 global 关键字

def  函数名(参数列表,*):
    函数体
    # return "xxx"
nums = [1, 2, 3, 4]

def print_nums(nums, debug=False):
    if debug:
        print('debug:', nums)
    else:
        print('release:', nums)
    return debug

result = print_nums(nums, debug=True)
print(result)

12. 模块

模块是一个包含所有你定义的函数和变量的文件,其后缀名是 .py。模块可以被别的程序引入,以使用该模块中的函数等功能。常用的三方库也是模块。所谓的导包就是导入模块

import sys
import os
from xxx import xxx

13. File文件

file 文件对象使用 open 函数来创建,下表列出了 file 文件对象常用的函数:
常用的:write、writelines、read、readlines、close

方法及描述
file.close()
关闭文件。关闭后文件不能再进行读写操作。
file.flush()
刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
file.fileno()
返回一个整型的文件描述符 (file descriptor FD 整型), 可以用在如 os 模块的 read 方法等一些底层操作上。
file.isatty()
如果文件连接到一个终端设备返回 True,否则返回 False。
file.next()
返回文件下一行。
file.read([size])
从文件读取指定的字节数,如果未给定或为负则读取所有。
file.readline([size])
读取整行,包括 “\n” 字符。
file.readlines([sizehint])
读取所有行并返回列表,若给定 sizeint>0,返回总和大约为 sizeint 字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。
file.seek(offset[, whence])
设置文件当前位置
file.tell()
返回文件当前位置。
file.truncate([size])
截取文件,截取的字节通过 size 指定,默认为当前文件位置。
file.write(str)
将字符串写入文件,返回的是写入的字符长度。
file.writelines(sequence)
向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

14. 标准库和常用的类库

os、sys、shutil、re、threading、datetime、time、random、math、…
requests、urllib、numpy、pandas、matplotlib、beautifulsoup、tkinter、json、django、flask、selenium、xlwt、xlrd
更多

15. 异常处理

在python中,如果程序逻辑出错,也会抛出错误。
通过try except 进行组合使用可以捕获异常,err作为具体的异常信息进行打印处理,finally是可选的,无论是否发生异常,try except逻辑执行完毕后,会调用finally,执行相应操作

times = 0
while True:
    try:
        x = int(input("Please enter a number: "))
        break
    # except Exception as err:
    except ValueError as err:
        print("Oops!  That was no valid number.  Try again   ")
        print(err)
    finally:
        times += 1
        print("End times:%d" % times)

知秋君
上一篇 2024-08-28 15:36
下一篇 2024-08-28 15:02

相关推荐