Python面试100讲(一)核心基础

一、 核心基础

1、导入Python模块的基本方式

import、from

import math #导入模块中的所有内容
print(math.sin(1.2)#使用

from math import cos,tan #从模块中导入部分内容
print(cos(2.3))#使用,不需要写模块名,前缀

from math import * #导入模块中的所有内容

2、指定别名

import math as m
print(m.sin(1.2)#原名称不能用

from math import cos as c
print(c(2.3))

3、设置Python模块的搜索路径

(1)设置Python模块的搜索路径有几种方式?

  • ①设置PYTHONPATH环境变量;
  • ②添加.pth文件;
  • ③通过sys.path设置路径;
  • ④如果使用PyCharm,可以直接设置搜索路径。

(2)永久设置Python模块搜索路径有几种方式,如何使用?

  • ① 如果使用PyCharm,可以直接设置搜索路径(文件夹-Mark Directory as-Sources Root(unmark取消);
  • ②控制台添加环境变量;
  • ③添加.pth文件。

(3)如何临时设置Python模块的搜索路径?

  • ①设置PYTHONPATH环境变量(copy path,复制到搜索路径中环境变量处);
  • ②控制台添加环境变量,export PYTHONPATH=路径;
  • ③通过sys.path设置路径。
import sys
sys.path.append('路径')
#临时设置PYTHONPATH(site)

4、不同数据类型的变量或值首尾相接

(1)字符串与字符串连接方式:5种

①加号

s1='hello'
s2='world'
s=s1+s2
print(s)

②直接连接

s='hello''world'
print(s)

③用逗号,连接,标准输出重定位

print('hello','world')

from io import StringIO
import sys
old_stdout=sys.stdout
result=StringIO()#保留老的
print('hello','world')
sys.stdout=old_stdout#恢复标准输出
result_str=result.getvalue()
print("用逗号连接:",result_str)

用逗号连接: hello world

④格式化(更改格式),%前后对应

s='<%s><%s>'%(s1,s2)#%前后对应
print('格式化:',s)

⑤join,将列表中的每一个元素通过前面的分隔符连接起来

s="".join([s1,s2])
print("join连接:",s)

(2)字符串与字符串连接方式:3种

①加号,非字符串通过str()转化成字符串

n=20
v=12.3
s=s1+str(n)+str(v)
print(s)

②格式化

s='<%s><%d><%.2f>'%(s1,n,v)#字符串、整型、浮点型
print('格式化',s)

③重定位

from io import StringIO
import sys
old_stdout=sys.stdout
result=StringIO()
print(s1,True,n,v,sep="*")
sys.stdout=old_stdout#恢复标准输出
result_str=result.getvalue()
print("用逗号连接:",result_str)

用逗号连接:helloTrue20*12.3

(3)字符串与对象连接时如何让对象输出特定的内容:如MyClass(类)

class MyClass:
    def __str__(self):
        return 'This is a MyClass Instance.'
my=MyClass()
s=s1+str(my)
print(s)

5、十进制、二进制、八进制和十六进制之间的相互转换

(1)如何表示不同进制的数值

n1=1234#十进制
n2=0b11101#二进制(0b,不区分大小写)
print(n2)
n3=0o123#八进制(0o)
print(n3)
n4=0xF15#十六进制(0x,0-F)
print(n4)

29
83
3861

(2)进制之间的转换

#十进制转换为二进制(十进制外的格式均为str)
print(bin(120))

#二进制转换为十进制
print(int('10110',2))

#十六进制转换为十进制(前缀无所谓加不加)
print(int('0xF15',16))

#十进制转换为十六进制
print(hex(54321))

#十六进制转换为二进制
print(bin(0xF15))

#二进制转换为十六进制
print(hex(0b1101110101))

#十进制转换为八进制
print(oct(1234))

#八进制转换为十进制
print(int('3213',8))

#不同进制相乘,输出仍为十进制
print(0b11010101*0XF12*0o432*123)

0b1111000
22
3861
0xd431
0b111100010101
0x375
0o2322
1675
28503359244

6、改变字符串(每个单词)首字母的大小写

(1)字符串首字母大小写转换

s1='hello'
print(s1.capitalize())

s1=s1[0:1]+s1[1].upper()+s1[2:]
print(s1)

s2='Hello'
s=s2[0].lower()+s2[1:]
print(s)

Hello
hEllo
hello

(2)如何将字符串中每个单词的首字母变成大写,拆分(按空格)

s3='hello world'
arr=s3.split(' ')#空值拆分每个单词
new_str=f'{arr[0].capitalize()}{arr[1].capitalize()}'
print(new_str)

7、如何检测一个字符串否为数字

(1)如何检测字符串是否为数字(数字和字母混和形式)

s1='12345'
print('是数字',s1.isdigit())#检测是否为数字
print(int(s1))

是数字 True
12345

s2='12345a'
print('12345a是数字:',s2.isdigit())
print('12345a是数字字母混合形式:',s2.isalnum())#检测是否为数字和字母混合

s3='12345_a'
print('12345_a是数字字母混合形式:',s2.isalnum())#下划线不属于字母和下划线

12345a是数字: False
12345a是数字字母混合形式: True
12345_a是数字字母混合形式: True

(2)怎样将一个字符串转换为数字才安全,先用isdigit进行判断

s2='123a'
if s2.isdigit():
    print(int(s2))
else:
    print('s2不是数字,无法转换')

s2不是数字,无法转换

try:
    print(int('222aaa'))
except Exception as e:
    print('223aaa不是数字,无法转换')
    print(e)

223aaa不是数字,无法转换
invalid literal for int() with base 10: ‘222aaa’

8、如何反转字符串

(1)如何反转字符串

#循环
s1='abcde'
s2=""
for c in s1:
    s2=c+s2
    print(s2)

a
ba
cba
dcba
edcba

(2)如何用分片反转字符串

print(s1[::2])
print(s1[::-1])#步长设为-1

ace
edcba

9、格式化整数和浮点数

(1)整数格式化

#格式化整数,按10位输出,不足10位前面补0
print(format(n,'10d'))
print(format(n,'0>10d'))
print(format(n,'0<10d'))

20
0000000020
2000000000

(2)格式化浮点数

#格式化浮点数,保留小数点后2位
x1=1.234
x2=32.3
print(format(x1,'0.2f'))#多了截取
print(format(x2,'0.2f'))#不足补0

1.23
32.30

(3)format函数

#描述format函数用法
print(format(x2,'*>15.4f'))#右对齐,15位
print(format(x2,'*<15.4f'))#右对齐,15位
print(format(x2,'*^15.4f')) #中心对齐,15位
print(format(123456789,','))#千位号分割
print(format(123456789.3456789,',.2f'))
print(format(x1,'E'))#科学计数法
print(format(x1,'0.2E'))#科学计数法,保留小数点后2位

32.3000
32.3000
32.3000
123,456,789
123,456,789.35
1.234000E+00

10、你了解Python字符串吗

(1)如何同时在字符串中显示单引号和双引号

print('hello "world"')
print("hello 'world'")
print('"hello"\'world\'')#转义符,\后的输出引号

hello “world”
hello ‘world’
“hello”‘world’

(2)如让转义符失效(3种方法:r、repr和\)

print('Let\'s go!')
print(r'Let\'s go!')#r
print(repr('hello\nworld'))#repr()输出括号中的所有内容
print('hello\nworld')
print('hello\\nworld')#\\

Let’s go!
Let’s go!
‘hello\nworld’
hello
world
hello\nworld

(3)保持原始格式输出字符串:三对单引号或三对双引号

print("""
      hello
            world
""")

hello
----------- world

–不展示

11、print函数核心功能

(1)用逗号分隔输出的字符串(分隔符)

print("aa","bb",sep="分隔符")

aa分隔符bb

(2)如何让print不换行(设置结尾符号)

print('hello',end=" ")
print('world')

print('hello',end=" 1 ")
print('world')

hello world
hello 1 world

(3)格式化数据(重定义字符串内容)

s='wang'
q=len(s)
print('The length of %s is %d'%(s,q))#对应替换指定格式指定内容

The length of wang is 4

from io import StringIO
import sys
old_stdout=sys.stdout#保留老的
result=StringIO()#输出定位
sys.stdout=old_stdout#恢复标准输出
print('The length of %s is %d'%(s,q))
result_str=result.getvalue()
print('result_str',result_str,sep=':')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值