前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 面试常见问题及答案-01

Python 面试常见问题及答案-01

作者头像
子乾建建-Jeff
发布2020-06-28 17:36:54
5380
发布2020-06-28 17:36:54
举报
文章被收录于专栏:iBroProiBroPro

↑↑↑点击上方蓝色小字,关注「iBroPro」

跟随朱少 · 储备斜杠资源

01

各种类型的变量与值之间的多种连接方式

Q1:字符串与字符串之间的连接方式

共5种

第一种:+(加号)

代码语言:javascript
复制
s1 = "hello"s2 = "world"s = s1+s2print(s)

第二种:直接连接

代码语言:javascript
复制
s = "hello""world"
print(s)

第三种:用逗号 ( , )连接

代码语言:javascript
复制
print("hello","world")

可再用标准输出重定向。(赋值给一个变量,使用 print 函数从控制台定位到变量)

代码语言:javascript
复制
from io import StringIO
import sys
old_stdout = sys.stdout
result = StringIO()
sys.stdout = result
print('hello','world')
sys.stdout = old_stdout # 恢复标准输出
result_str = result.getvalue()
print('用逗号连接:',result_str)

第四种:格式化 百分号等

代码语言:javascript
复制
s1 = 'hello'
s2 = 'world'
s = '<%s> <%s>' %(s1,s2)
print('格式化:'+s)

第五种:join 方法

代码语言:javascript
复制
# 使用空格将列表中的两个元素连接起来
join_str = " ".join([s1,s2])
print(join_str)

Q2:字符串与非字符串之间如何连接

第一种:加号(使用 str 方法转换)

代码语言:javascript
复制
n = 20
s = s1 + str(n)
print(s)

v = 12.33
b = True
print(s+str(v)+str(b))

第二种:格式化

%s : 字符串

%d : 整数

%.2f : 保留两位小数

代码语言:javascript
复制
s = '<%s> <%d> <%.2f>' %(s1,n,v)
print(s)

第三种:重定向

代码语言:javascript
复制
from io import StringIO
import sys
old_stdout = sys.stdout
result = StringIO()
sys.stdout = result
print(s1, True, n, v, sep='*') # sep 表示每个变量间的分割符号
sys.stdout = old_stdout
result_str = result.getvalue()
print('用逗号连接:',result_str)

Q3:字符串与对象连接时如何让对象输出特定的内容

重写对象的 __str__() 方法

代码语言:javascript
复制
class MyClass:
    def __str__(self):
        return 'This is MyClass instance.'
my = MyClass()
print(s1+str(my))

类似于 Java 中重写对象的 toString() 方法。

02

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

Q1:如何表示二进制、八进制和十六进制

直接表示为 十进制

开头加 0b 表示二进制

加 0o 表示八进制

加 0x 表示十六进制

不区分大小写

代码语言:javascript
复制
# 二进制(0,1)
n2 = 0b11101

print(n2)

# 八进制(0~7)
n3 = 0o123
print(n3)

# 十六进制
n4 = 0xF15
print(n4)

Q2:二进制、八进制和十六进制直接如何转换

转换完以后是字符串类型。数值大小是对应的值大小。

代码语言:javascript
复制
# 进制之间的转换
# 十进制转换为二进制
print(bin(120))
# 二进制转为十进制 前缀加不加都可以
print(int('10110',2))

# 十六进制 转为 十进制
print(int('F35AE',16))
# 将十进制转换为十六进制
print(hex(54321))

# 十六进制转换为二进制
print(bin(0xF012A))
# 将二进制转为十六进制
print(hex(0b1101100))

# 将十进制转为八进制
print(oct(1234))
# 将八进制转为十进制
print(int('3213',8))

# 多种进制可以混合使用,输出结果仍未十进制
print(0b1101 * 0o157 * 0xA23F *10)

结论:

bin(带前缀数值) 把数转换为二进制

oct(带前缀数值) 把数转换为八进制

hex(带前缀数值) 把数转换为十六进制

int('不带前缀数值',n)n=2,8,16 把数转换为十进制

只有int()函数的转换中需要加 引号

03

改变字符串首字母的大小写

Q1:如何改变字符串首字母的大小写

直接使用 capitalize() 函数、title() 函数也可

代码语言:javascript
复制
# 直接调用函数
s1 = 'hello'
print(s1)
print(s1.title())
print(s1.capitalize()

改变字符串中某个字母大小写,使用切片方式

即考察字符串拆分和连接

代码语言:javascript
复制
# 通过切片
s1 = s1[0:1]+s1[1].upper()+s1[2:]
print(s1)

Q2:如果字符串中包含多个单词,

如何改变每个单词首字母的大小写

代码语言:javascript
复制
s3 = 'hello world haha'
arr = s3.split(' ') # 根据指定格式分隔开
#new_str = f'{arr[0].capitalize()} {arr[1].capitalize()} ' \
#          f'{arr[2].capitalize()}'
new_str = ''
for i in range(0,len(arr)):
    new_str += f'{arr[i].capitalize()}'+' '
print(new_str)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 iBroPro 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档