Python面试题一
基础部分
1.列出 5 个常用 Python 标准库?
os:提供了不少与操作系统相关联的函数
sys: 通常用于命令行参数
re: 正则匹配
math: 数学运算
datetime: 处理日期时间
2.Python 内建数据类型有哪些?
int、bool、 str、 list、 tuple、 dict
3.简述 with 方法打开处理文件帮我我们做了什么?
打开文件在进行读写的时候可能会出现一些异常状况,如果按照常规的f.open
写法,我们需要try,except,finally,做异常判断,并且文件最终不管遇到什么情况,都要执行finally f.close()关闭文件,with方法帮我们实现了finally中f.close
(当然还有其他自定义功能,有兴趣可以研究with方法源码)
4.列出 Python 中可变数据类型和不可变数据类型,为什么?
(1)可变类型(mutable):变量进行append、+=等这种操作后 == 改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。
- list
- dict
- set
- bytearray
- user-defined classes (除非是特别定义的不可变)
(2)不可变类型(immutable):改变了变量的值 == 新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象(一个地址), python的id() 方法让你明白
- int
- float
- decimal
- complex
- bool
- string
- tuple
- range
- frozenset
- bytes
例子:
``` # -- coding: utf-8 --
# 不可变类型 a = 3 b = 3 print(id(a)) print(id(b))
# 可变类型 c = [1,2,3] d = [1,2,3] print(id(c)) print(id(d)) ```
5.Python 获取当前日期?
print(datetime.datetime.now())
6.统计字符串每个字符出现的次数
# -*- coding: utf-8 -*-
str = 'taodejintaodejinjjdsinad'
result = {}
for i in str:
result[i] = str.count(i)
print(result)
7.用 python 删除文件和用 linux 命令删除文件方法
python:os.remove(文件名)
linux: rm 文件名
8.写一段自定义异常代码
# -*- coding: utf-8 -*-
# 自定义异常 需要继承Exception
class MyException(Exception):
def __init__(self,*args):
self.args = args
# 先定义异常基类,然后派生不同类型的异常
class loginError(MyException):
def __init__(self,code =100, message = '登录异常',args = ('登录异常',)):
self.args = args
self.message = message
self.code = code
class loginountError(MyException):
def __init__(self):
self.args = ('退出异常',)
self.message = '退出异常'
self.code = 200
try:
raise loginountError()
except loginountError as e:
print(e)
print(e.code)
print(e.message)
9.举例说明异常模块中 try except else finally 的相关意义
try..except..else没有捕获到异常,执行else语句
try..except..finally不管是否捕获到异常,都执行finally语句
10.遇到 bug 如何处理
百度,问人
语言特性
1.谈谈对 Python 和其他语言的区别
三个方面:
语言特点: 简洁优雅,省略了各种大括号和分号,还有一些关键字,类型说明
语言类型: 解释型语言,运行的时候是一行一行的解释并运行,所以调试代码很方便,开发效率高
第三方库: python是开源的,并且python的定位时任由其发展,应用领域很多比如Web,运维,自动化测试,爬虫,数据分析,人工智能.Python具有非常完备的第三方库
一句话概括:Python是一门语法简洁优美,功能强大无比,应用领域非常广泛,具有强大完备的第三方库的一门弱类型的可移植,可扩展,可嵌入的解释型编程语言
2.简述解释型和编译型编程语言
解释型:就是边解释边执行 编译性:编译后再执行
3.Python 的解释器种类以及相关特点?
CPython
由C语言开发的 使用最广的解释器,在命名行下运行python,就是启动CPython解释器.
IPython
基于cpython之上的一个交互式计时器 交互方式增强 功能和cpython一样
PyPy
目标是执行效率 采用JIT技术 对python代码进行动态编译,提高执行效率
JPython
运行在Java上的解释器 直接把python代码编译成Java字节码执行
IronPython
在微软 .NET 平台上的解释器,把python编译成. NET 的字节码
4.说说你知道的Python3 和 Python2 之间的区别?
py2:print语句,语句就意味着可以直接跟要打印的东西,如果后面接的是一个元组对象,直接打印
py3:print函数,函数就以为这必须要加上括号才能调用,如果接元组对象,可以接收多个位置参数,并可以打印
如果希望在 Python2 中 把 print 当函数使用,那么可以导入 future 模块 中的 print_function
下面有个示例:
# py2
>>> print("hello", "world")
('hello', 'world')
# py3
>>> print("hello", "world")
hello world
# py2
>>> print("hello", "world")
('hello', 'world')
>>> from __future__ import print_function
>>> print("hello", "world")
hello world
- 输入函数
py2:input_raw()
py3:input()
- 在使用super()的不同
py2:必须显示的在参数中写上基类
py:直接无参数调用即可
- 1/2的结果
py2:返回0
py3:返回0.5,没有了int和long的区别
- 编码
py2:默认编码ascii
py3:默认编码utf-8
而且为了在py2中使用中文,在头部引入coding声明,不推荐使用
- 字符串
py2:unicode类型表示字符串序列,str类型表示字节序列
py3::str类型表示字符串序列,byte类型表示字节序列
- True和False
py2:True 和 False 在 Python2 中是两个全局变量,可以为其赋值或者进行别的操作,初始数值分别为1和0,虽然修改是违背了python设计的原则,但是确实可以更改
py3:修正了这个变量,让True或False不可变
- 迭代器
py2:当中许多返回列表的方法,如range,字典对象的 dict.keys()、dict.values() 方法, map、filter、zip;并且迭代器必须实现next方法
py3:将返回列表的方法改为了返回迭代器对象,内置了next,不用特意去实现next
- nonlocal
py2:没有办法在嵌套函数中将变量声明为一个非局部变量,只能在函数中声明全局变量
py3:nonlocal方法实现了,示例如下:
def func():
c = 1
def foo():
c = 12
foo()
print(c)
func() #1
def func():
c = 1
def foo():
nonlocal c
c = 12
foo()
print(c)
func() # 12
5.Python3 和 Python2 中 int 和 long 区别?
python2中有long类型 python3中没有long类型,只有int类型
6.xrange 和 range 的区别?
两种用法介绍如下: 1.range([start], stop[, step]) 返回等差数列。构建等差数列,起点是start,终点是stop,但不包含stop,公差是step。 start和step是可选项,没给出start时,从0开始;没给出step时,默认公差为1。 例如:
>>> range(10) #起点是0,终点是10,但是不包括10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1,10) #起点是1,终点是10,但是不包括10
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1,10,2) #起点是1,终点是10,步长为2
[1, 3, 5, 7, 9]
>>> range(0,-10,-1) #起点是1,终点是10,步长为-1
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0,-10,1) #起点是0,终点是-10,终点为负数时,步长只能为负数,否则返回空
[]
>>> range(0) #起点是0,返回空列表
[]
>>> range(1,0) #起点大于终点,返回空列表
[]
2.xrange([start], stop[, step]) xrange与range类似,只是返回的是一个"xrange object"对象,而非数组list。 要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。 例如:
>>> lst = xrange(1,10)
>>> lst
xrange(1, 10)
>>> type(lst)
<type 'xrange'>
>>> list(lst)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
区别如下: 1.range和xrange都是在循环中使用,输出结果一样。 2.range返回的是一个list对象,而xrange返回的是一个生成器对象(xrange object)。 3.xrange则不会直接生成一个list,而是每次调用返回其中的一个值,内存空间使用极少,因而性能非常好。
编码规范
7.什么是 PEP8?
《Python Enhancement Proposal #8》又称之为Python 代码格式而编订的风格指南
8.了解 Python 之禅么?
Beautiful is better than ugly.
# 优美胜于丑陋(Python以编写优美的代码为目标)
Explicit is better than implicit.
# 明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)
Simple is better than complex.
# 简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)
Complex is better than complicated.
# 复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)
Flat is better than nested.
# 扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)
Sparse is better than dense.
# 间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)
Readability counts.
# 可读性很重要(优美的代码是可读的)
Special cases aren't special enough to ``break` `the rules.
Although practicality beats purity.
# 即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)
Errors should never pass silently.
Unless explicitly silenced.
# 不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写except:pass风格的代码)
In the face of ambiguity, refuse the temptation to guess.
# 当存在多种可能,不要尝试去猜测
There should be one-- ``and` `preferably only one --obvious way to ``do` `it.
# 而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)
Although that way may not be obvious at first unless you're Dutch.
# 虽然这并不容易,因为你不是 Python 之父(这里的Dutch是指Guido)
Now is better than never.
Although never is often better than *right* now.
# 做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
# 如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)
Namespaces are one honking great idea -- let's ``do` `more of those!
# 命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)
开交互界面 输入import this 回车就OK了。
9.了解 docstring 么?
DocStrings 文档字符串是一个重要工具,用于解释文档程序,其实就是对程序方法的一些说明信息。我们可以在函数体的第一行使用一对三个单引号"或者一对三个双引号""" 来定义文档字符串。
你可以使用函数名.__doc__
"(注意双下划线)调用函数中的文档字符串属性。DocStrings 文档字符串使用惯例:它的首行简述函数功能。
简单来说,就是出现在模块、函数、类、方法里第一个语句的,就是docstring。会自动变成属性doc。
def foo():
""" This is function foo"""
可通过foo.__doc__访问得到’ This is function foo’.
10.了解类型注解么?
类型注解介绍 我们知道 Python 是一种动态语言,变量以及函数的参数是不区分类型。 Python解释器会在运行的时候动态判断变量和参数的类型,这样的好处是编写代码速度很快,很灵活,但是坏处也很明显,不好维护,可能代码写过一段时间重新看就很难理解了,因为那些变量、参数、函数返回值的类型,全都给忘记了。 而且当你在读别人的代码的时候,也无法一眼看出变量或者参数的类型,经常要自己推敲,这样给学习带来了很大的障碍。 所以Python3里有了这个新特性,可以给参数、函数返回值和变量的类型加上注解,不过这个仅仅是注释而已,对代码的运行来说没有任何影响,变量的真正类型还是会有Python解释器来确定,你所做的只是在提高代码的可读性,仅此而已。
def add(x: int, y: int) -> int:
return x + y
没用过类型注解(Type Annotations)的同学可能咋一看有点迷糊,其实上面这段代码和下面这个代码是一样的。
def add(x, y):
return x + y
11.例举你知道 Python 对象的命名规范,例如方法或者类等
module_name, 模块
package_name, 包
ClassName, 类
method_name, 方法
ExceptionName, 异常
function_name, 函数
GLOBAL_VAR_NAME, 全局变量
instance_var_name, 实例
function_parameter_name, 参数
local_var_name. 本变量
12.Python 中的注释有几种?
1.python单行注释符号(#)
2.批量、多行注释符号。多行注释是用三引号''' '''包含的
3.对于函数还有文档注释
为函数添加文档注释,需要在函数头(包含def关键字的那一行)的下一行用一对单引号或双引号将注释括起来。
13.如何优雅的给一个函数加注释?
见12文档注释
def add (x,y):
"计算两个数的和"
return x + y
print(add.__doc__)
#输出结果:计算两个数的和
14.如何给变量加注释?
变量的声明同一行加上#的注释
15.Python 代码缩进中是否支持 Tab 键和空格混用。
在Python中,官方推荐使用4个空格作为缩进,而不是使用Tab键。不过,实际上你可以在你的代码中混用Tab和空格,但这可能会导致一些混乱,尤其是在跨不同编辑器或者查看代码时。
如果你想确保你的代码中只使用空格作为缩进,你可以在你的编辑器中设置将Tab自动转换为相应数量的空格。大多数现代编辑器和IDE都支持这种设置。
以下是一个Python代码示例,它混用了Tab和空格作为缩进:
def hello_world():
print("Hello") # 使用了Tab作为缩进
print("World") # 使用了4个空格作为缩进
尽管这样的代码是可以运行的,但最好还是遵循一种缩进风格,并在你的编辑器或IDE中设置对应的规则。
16.是否可以在一句 import 中导入多个库?
支持,但是不推荐。
因为一次导入多个模块可读性不是很好,所以一行导入一个模块会比较好。同样的尽量少用 from modulename import *,因为判断某个函数或者属性的来源有些困难,不方便调试,可读性也降低了。
17.在给 Py 文件命名的时候需要注意什么?
1.模块名和包名采用小写字母并且以下划线分隔单词的形式; 如:regex_syntax,py_compile,_winreg
2.类名或异常名采用每个单词首字母大写的方式; 如:BaseServer,ForkingMixIn,KeyboardInterrupt
3.全局或者类常量,全部使用大写字母,并且以下划线分隔单词; 如:MAX_LOAD
4.其余变量命名包括方法名,函数名,普通变量名则是采用全部小写字母,并且以下划线分隔单词的形式命名。 如:my_thread
5.以上的内容如果是内部的,则使用下划线开头命名。 如:init,new
18.例举几个规范 Python 代码风格的工具
PyCharm,vscode
数据类型
19.列举 Python 中的基本数据类型?
Python 语言中包含以下几种基本数据类型:
- int (整数):可以是正数、零或负数。例如,1, -1, 0。
- float (浮点数):浮点数是一个数字,包含一个小数点。例如,1.23, -0.12。
- bool (布尔):布尔数据类型通常用于比较和逻辑运算,只有两个值:True 或 False。
- str (字符串):字符串是字符的序列,可以是引号内的任何文本。例如,'Hello', "World"。
- list (列表):列表是一个顺序存储多个值的集合,可以修改。例如,[1, 2, 3]。
- tuple (元组):元组与列表类似,但是不可变。例如,(1, 2, 3)。
- dict (字典):字典是一个无序的键-值对集合。例如,{'name': 'Alice', 'age': 25}。
20.如何区别可变数据类型和不可变数据类型
可变数据类型:在id不变的情况下,value可改变(列表和字典是可变类型,但是字典中的key值必须是不可变类型)
不可变数据类型:value改变,id也跟着改变。(数字,字符串,布尔类型,都是不可类型)
21.将"hello world"转换为首字母大写"Hello World"
str = 'hello,world'
a = str.title()
print(a)
22.如何检测字符串中只含有数字?
a = '12121212'.isdigit()
print(a)
b = 'dsa1212121'.isdigit()
print(b)
23.将字符串"ilovechina"进行反转
s1 ='ilovechina'[: :-1]
print(s1)
24.Python 中的字符串格式化方式你知道哪些?
1、最传统的用%格式化字符串
“Hello, %s. You are %s.” % (name, age)
2、string.format ()
“Hello,{}. You are {}”.format(name,age)
3、f-string python3.6诞生的新方法
该方法叫做“F字符串方法”,又称为“格式化字符串文字”。F字符串是开头有一个f的字符串文字,以及包含表达式的大括号将被其值替换。表达式在运行时进行渲染,然后使用format协议进行格式化。
f’his name is {name}’
25.有一个字符串开头和末尾都有空格,比如“ adabdw ”,要求写一个函数把这个字符串的前后空格都去掉。
a = ' asdf '
b = a.replace(' ','')
print(a)
print(b)
26.获取字符串”123456“最后的两个字符。
#获取字符串最后两个字符
def getLastTwo(s):
return s[-2:]
27.一个编码为 GBK 的字符串 ,要将其转成 UTF-8 编码的字符串,应如何操作?
str.encode("GBK") str.encode("UTF-8")
(1)、s="info:xiaoZhang 33 shandong",用正则切分字符串输出['info', 'xiaoZhang', '33', 'shandong']
```
-- coding: utf-8 --
import re
s="info:xiaoZhang
33 shandong"
def reStr1(s): return re.split(r'[\s\:\:]+', s)
print(reStr1(s)) ```
(2)、a = "你好 中国 ",去除多余空格只留一个空格。
(3)、怎样将字符串转换为小写
s2.upper()
29.单引号、双引号、三引号的区别?
(1)单引号和双引号平时使用时候,是没有太多区别的。但是在定义字符串时候,可以单双引号混用来避免转义问题。
(2)三引号作用:
-可以作为格式化输出
-可以作为多行注释
列表
30.已知 AList = [1,2,3,1,2],对 AList 列表元素去重,写出具体过程。
list(set(list)) --先将列表转化为set,再转化为list就可以实现去重操作
31.如何实现 "1,2,3" 变成 ["1","2","3"]
str = "1,2,3"
print(str.split(","))
32.给定两个 list,A 和 B,找出相同元素和不同元素
利用集合:
A=[1,2,3,4,5,6,7,8,9]
B=[1,3,5,7,9]
print('A、B中相同元素:')
print(set(A)&set(B))
print('A、B中不同元素:')
print(set(A)^set(B))
33.[[1,2],[3,4],[5,6]]一行代码展开该列表,得出[1,2,3,4,5,6]
l1 = [[1,2],[3,4],[5,6]] l = [j for t in l1 for j in t]
34.合并列表[1,5,7,9]和[2,2,6,8]
a1 = [1,5,7,9]
a2 = [2,2,6,8]
print(a1+a2)
35.如何打乱一个列表的元素?
import random
l = [1,2,3,4,5,6]
random.shuffle(l)
print(l)
字典
36.字典操作中 del 和 pop 有什么区别?
del 可以删除指定key的键值对,并且没有返回。用法:del dict[key]; 也可以使用del来清空整个字典 pop是从字典中取走指定key的键值对,并且返回键值。是字典的一个方法。用法:dict.pop(key)
37.按照字典的内的数值排序
dict1={'a':2,'e':3,'f':8,'d':4}
# 正向排序
dict2 = sorted(dict1)
# 反向排序
dict3 = sorted(dict1,reverse=True)
print(dict2)
print(dict3)
38.请合并下面两个字典 a = {"A":1,"B":2},b = {"C":3,"D":4}
def dictMerge1():
a = {"A":1,"B":2}
b = {"C":3,"D":4}
a.update(b)
print(a)
dictMerge1()
39.如何使用生成式的方式生成一个字典,写一段功能代码。
list4 = [('name','zhangsan'),('age',22),('phone',110)]
# for 循环遍历列表,将列表中小元组的key和value取出,作为字典中的key:value
dict_1 = {key:value for key,value in list4}
print (dict_1)
40.如何把元组("a","b")和元组(1,2),变为字典{"a":1,"b":2}
a = ("a","b")
b = (1,2)
z = zip(a,b)
print(dict(z))
41.Python 常用的数据结构的类型及其特性?
一、基础数据类型
标准数据类型:
·不可变数据类型
Number(数字):int、float、bool、complex(复数)
String(字符串)
Tuple(元祖):不可变,无法通过下标来修改值
·可变数据类型
List(列表):[ ]
Set(集合):{ }
Dictionary(字典):{ key:value}
可变数据类型:当值改变时,id编号不变化【可以使用id()函数来查看】
不可变数据类型:当值改变时,会产生新的id编号
二、基本数据结构(列表、集合、字典、元祖):
· 列表(list):
特点:是一个可变集合,不仅结构可变,里面还可以放不同类型的对象:num = [1,2,3,‘123’,True,321]
常规操作:
·获取元素:可以通过下标获取:num[0],输出:1
可以通过切片获取:num[3:5],输出:'123',321
·添加元素:
num.append(3):在列表后方添加元素
num.insert(index,value):插入到列表的指定位置
num + [1,2,3] 或
num.extend([1,2,3]):连接两个列表
·元祖(tuple)
特点:不可变
常规操作:
·可以通过下标取值,但无法修改
·可以通过 index(value1,value2) 来获取制定元素在元祖中出现的位置
·可以通过count(value) 来统计指定元素在元祖中出现的个数
·集合({ })
特点:集合是一个无序不重复元素的集
常规操作:
推导式:
42.如何交换字典 {"A":1,"B":2}的键和值?
mydict={"a":1,"b":2,"c":3}
mydict_new={}
for key,val in mydict.items():
mydict_new[val]=key
print(mydict_new)
43.Python 里面如何实现 tuple 和 list 的转换?
list(tup) tuple(list)
44.我们知道对于列表可以使用切片操作进行部分元素的选择,那么如何对生成器类型的对象实现相同的功能呢?
这个题目考察了 Python 标准库的itertools模快的掌握情况,该模块提供了操作生成器的一些方法。 对于生成器类型我们使用islice方法来实现切片的功能。例子如下
from itertools import islice
gen = iter(range(10)) #iter()函数用来生成迭代器
#第一个参数是迭代器,第二个参数起始索引,第三个参数结束索引,不支持负数索引
for i in islice(gen,0,4):
print(i)
45.请将[i for i in range(3)]改成生成器
直接将中括号改成小括号就行了
(i for i in range(3))
46.a="hello"和 b="你好"编码成 bytes 类型
a="hello"
c=a.encode(encoding='utf-8')
a = b'hello'
b="世界"
b = b.encode(encoding='utf-8')
print(a,b,c)
47.下面的代码输出结果是什么?
48.下面的代码输出的结果是什么?
a = (1,2,3,[4,5,6,7],8)
# a[2] = 2
a[3][0] = 2
print(a)
(1, 2, 3, [2, 5, 6, 7], 8)
49.Python 交换两个变量的值
a,b =b,a
50.在读文件操作的时候会使用 read、readline 或者 readlines,简述它们各自的作用
1)read([size])方法从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,输出的结果是字符串对象
2)readline():每次读出一行内容,所以,读取时占用内存小,比较适合大文件,输出的结果也是一个字符串对象。
3)readlines():读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素,但读取大文件会比较占内存。
总结:read和readline返回的是字符串,而readlines返回的是列表,其中每行是作为列表的一个元素。
51.json 序列化时,可以处理的数据类型有哪些?如何定制支持 datetime?
1、可以处理的数据类型是 string、int、list、tuple、dict、bool、null
2、自定义时间序列化转换器
import json
from json import JSONEncoder
from datetime import datetime
class ComplexEncoder(JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.strftime('%Y-%m-%d %H:%M:%S')
else:
return super(ComplexEncoder,self).default(obj)
d = { 'name':'alex','data':datetime.now()}
print(json.dumps(d,cls=ComplexEncoder))
# {"name": "alex", "data": "2018-05-18 19:52:05"}
52.json 序列化时,默认遇到中文会转换成 unicode,如果想要保留中文怎么办?
import json
a = json.dumps({"ddf":"你好"},ensure_ascii=False)
b = json.dumps({"ddf":"你好"})
print(a) #{"ddf": "你好"}
print(b)
53.有两个磁盘文件 A 和 B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件 C 中。
# -*- coding: utf-8 -*-
with open("F:/Scrapy_test/test/A") as A:
content_a = A.read() #用read结果可以对A、B中的字母都排序好,如果用readlines()就只会把A、B整个文件的字母排序
with open("F://Scrapy_test//test//B") as B:
content_b = B.read()
s = ''.join(sorted(content_a+content_b))
C = open("F://Scrapy_test//test//C",'w+')
result = C.write(s)
A.close()
B.close()
C.close()
54.如果当前的日期为 20190530,要求写一个函数输出 N 天后的日期,(比如 N 为 2,则输出 20190601)。
def toDate(n):
if type(n) is not int:
return;
from datetime import date
from datetime import timedelta
date2 = date.today() + timedelta(days=n)
print(date2.strftime("%Y%m%d"))
toDate(2)
toDate(29)
55.写一个函数,接收整数参数 n,返回一个函数,函数的功能是把函数的参数和 n 相乘并把结果返回。
def lazy_mul(n):
def mul(m):
return m*n
return mul
56.下面代码会存在什么问题,如何改进?
无法编译通过。 将函数内的str变量换为其他名称即可
57.一行代码输出 1-100 之间的所有偶数。
print(list(even for even in range(100) if (even%2 == 0 )))
58.with 语句的作用,写一段代码?
with open(r'c:\test.txt', 'r') as f:
data = f.read()
59.python 字典和 json 字符串相互转化方法
在Python中自带json库。通过import json导入。 在json模块有2个方法, loads():将json数据转化成dict数据 dumps():将dict数据转化成json数据 load():读取json文件数据,转成dict数据 dump():将dict数据转化成json数据后写入json文件
60.请写一个 Python 逻辑,计算一个文件中的大写字母数量
import os
os.chdir(r'F://Scrapy_test//test') #os.chdir切换到指定目录
with open('B') as today:
count=0
for i in today.read():
if i.isupper():
count+=1
print(count)
本文来自博客园,作者:业余砖家,转载请注明原文链接:https://www.cnblogs.com/yeyuzhuanjia/p/18722194
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
2024-02-18 Windows如何在一台电脑访问其他电脑里的虚拟机