一共103个题,都是基础中的基础。断断续续写了好几天才完成
(放假真的会变懒,正在做出改变)
选了一些不熟悉的题型,附对应知识整理,没事多看看。
fighting ! ! !
控制小数的位数
a = float(input())
print('%.2f'%a)
1.000000
1.00
控制python中的浮点数输出的位数,一般有三种方法:
① 使用round函数,用法为:round( x [, n] ),x为浮点数,n为保留的小数位数参数是可选的如果不写那么默认不保留小数
② 利用"%nf"输出n位小数
③ 使用format函数格式化数字输出,format函数中使用一个大括号表示需要填充的参数,:后面可以规定数字的精度与类型
十六进制转十进制
num16 = input()
num10 = int(num16,16)
print(num10)
A
10
int() 方法的语法:
class int(x, base=10)
参数
x -- 字符串或数字。
base -- 进制数,默认十进制。
返回值
返回整型数据。
int() 方法的实例:
>>>int() # 不传入参数时,得到结果0
0
>>> int(3) # 输入整数的时候,默认10进制
3
>>> int(3.6) # 浮点数向下取值
3
>>> int('12',16) # 如果是带参数base的话,12要以字符串的形式进行输入,12 为 16进制
18
>>> int('0xa',16) # 16进制 转10进制
10
>>> int('10',8) # 8进制转10进制
8
字符串连接
字符串连接的几种方法整理:
print( name1 + name2 )
print("".join([name1,name2]))
print(f"{name1}{name2}".format(name1,name2))
print(f"{name1 + name2}".format(name1 + name2)
格式化输出
(1)
.lower() 全部小写
.upper() 全部大写
.title() 各个字符的首字母大写
.capitalize() 首字母大写
(2)
.strip() 删除两边空格
.lstrip() 删除左边空格
.rstrip() 删除右边空格
.replace(" ","") 删除所有空格
.split() 先切分 "".join() 再拼接
发送offer
offer_list = ['Allen','Tom']
for i in range(len(offer_list)):
print('{}, you have passed our interview and will soon become a member of our company. '.format(offer_list[i]))
for str_i in offer_list:
if str_i == 'Tom':
print('Andy, welcome to join us!')
else:
print('{}, welcome to join us! '.format(str_i))
生成数字列表
思路:
使用split()函数将字符串转化为列表
对列表进行for 循环对每个元素进行int()格式转化加工后输出
str1=input()
#使用split()将字符串生成列表
list1=str1.split()
#创建一个空列表
list2=[]
#将数据处理后依次插入到列表(这一步可以简化,详见下方一个代码块)
for i in list1:
i=int(i)
list2.append(i)
print(list2)
简化后的代码如下:
#这是另一个知识点,list推导式
list1 = [int(i) for i in input().split()]
print(list1)
# 知识拓展:list其他操作
list的操作和str的操作还挺相似的,它俩最本质的区别在于list可变,str不可变
list的操作主要有:内置函数,method
还要再补充一个很好用的东西:list的推导式
list内置函数和method的区别,有一个比较粗浅的记忆方法:凡是会改变原来list的都是method,以sorted(list)和list.sort 为例
list1 = [9, 7, 23, 18, 45, 2, 96, 37]
# 临时排序,不改变list1
print(sorted(list1))
print(list1)
# 对list1本身进行调整,改变list1
list1.sort()
print(list1)
[2, 7, 9, 18, 23, 37, 45, 96]
[9, 7, 23, 18, 45, 2, 96, 37]
[2, 7, 9, 18, 23, 37, 45, 96]
list常见内置函数:
- len() :求列表元素个数
- max() :求列表最大值
- min() :求列表最小值
- sum() :求列表的和
- sorted() :求排序后的列表序列
- list() :将其他数据结构转换成列表
- any() :只要列表里有一个True就会返回True
- all():表里的所有元素都是True才会返回True
- enumerate() :可以配合for循环使用,提取列表元素的位置信息
ws = ["崔瀺", "左右", "君倩", "齐静春", "陈平安"]
for i, j in enumerate(ws):
print(f"第{i + 1}个徒弟是{j}")
第1个徒弟是崔瀺
第2个徒弟是左右
第3个徒弟是君倩
第4个徒弟是齐静春
第5个徒弟是陈平安
list常见method:
- list.append(元素):在末尾添加一个元素
- list.insert(位序,元素):可以看作是更强大的append,在特定的位置插入数据
- list.pop(位序):返回删除的特定位置元素
- list.remove():删除指定元素
- list.extend():合并两个列表
- list.copy():复制原列表
- list.clear():清空列表
- list.index(元素):搜索元素在序列的第几个位置
- list.count():计算某个元素在列表中出现的次数
- list.reverse():反转排序
- list.sort():升序排列
- list.sort(reverse=True):降序排列
list推导式:
list2 = [推导语句 for i in list1] ,可以省略append和创建空list这两个步骤。
二进制位运算
第一遍时候题目没读懂,然后去转进制,七万八拐,理解题目真的很重要。
x,y = input().split()
print(int(x)&int(y))
print(int(x)|int(y))
计算平均绩点
难点:阅读理解题目,平均绩点的算法(我是一遍没看懂)
使用自己的分数*绩点数的和/(所有总绩点的和-注意是输入的成绩)
例如题目(3*4+4*3+2*2)/(3 + 4 + 2) = 28/7=3.11
temp = 0
result = 0
try:
while True:
level = input()
level_score = {"A": 4, "B": 3, "C": 2, "D": 1, "F": 0}
# 输入的内容
if level != "False": # 如果输入false会自动退出循环
score = int(input())
# 定义一个字典来存储等级绩点
result = result + level_score[level] * score
temp = temp + score
else:
break
except Exception as e:
print(e)
finally:
temp2 = result / temp
print("%.2f" % temp2)
字符串列表的长度
my_list = ['P','y','t','h','o','n']
print('Here is the original list:')
print(my_list)
print()
print('The number that my_list has is:')
print(len(my_list))
疑问:打印空格和\n的区别?
打印空格 显示两个空行
打印 \n 显示一个空行
跳过列表的某个元素
for i in range(1,16):
if i == 13:
continue
else:
print(i,end = ' ')
sep和end的区别:
end: 决定输出语句以什么符号结尾,默认是换行。 eg: 换行 end=" "
sep: 定义print函数中分割对象的符号,默认是空格。 eg: 空格 sep=" "
1.sep用法: sep = '(想使用的分隔符)'
2.end用法: end = '(想使用的结束符)'
矩阵相加
list = [[1,2,3],[4,5,6],[7,8,9]]
n = int(input())
res = [[x*n for x in i] for i in list]
print(res)
对列表进行嵌套时,要注意[ ]和( )的使用情况,判断每一步输出的数据类型
字符串查找
find函数
1. 定义:
Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。
2. 语法
str.find(str, beg=0, end=len(string))
str---a指定检索的字符串
beg---开始检索,默认为0
end---结束检索,默认为字符串的长度
3. 返回值
如果包含子字符串返回开始的索引值,否则返回-1。
单词造句
join函数
1. 定义:
连接任意数量的字符串(包括要连接的元素字符串、元组、列表、字典),用新的目标分隔符连接
2. 语法:
'sep'.join(sep_object)
sep:分割符。
sep_object:分割对象,可为字符串、以及储存字符串的元组、列表、字典。
(1)对象为字符串
';'.join('abc')
# 输出结果为:'a;b;c'
string1 = 'good idea'
# 定义字符串
' '.join(string1)
# 输出结果:'g o o d i d e a'
#说明:由于字符串里没指明按字符串之间是怎么连接的,默认每个字符之间插入目标字符
(2)对象为元组
tuple1 = ('a','b','c') #定义元组tuple1
'、'.join(tuple1)
tuple2 = ('hello','peace','world') #定义元组tuple2
' '.join(tuple2)
(3)对象为列表
b = ['a','b','c'] #定义列表
'、'.join(b)
list1 = ['hello','peace','world'] #定义列表
' '.join(list1)
(4)对象为字典
c={'hello':1,'world':2}
';'.join(c)
d = {'hello':'hi','world':'2'}
' '.join(d)
3. 返回值:返回新的字符串。
4. 易错点及其解决方法
(1)问题:储存非字符串的元组、列表、字典等报错,比如元组储存数字进行连接
a = (1,2,3) #定义元组a
';'.join(a)
#报错:TypeError: sequence item 0: expected str instance, int found
(2)解决方法:结合for循环语句,将数字转为字符串再连接起来
a = (1,2,3) #定义元组a
';'.join(a)
b = (186234,1385475,1235462)
';'.join(str(i) for i in b)
#调用set函数去重处理
e = (1,2,3,2) #定义元组a
'、'.join(str(i) for i in set(e))
保留小数分位
round函数
1. 是python自带的函数,用于数字的四舍五入
2. 语法:
round(number,digit)
(1) digits > 0,四舍五入到指定的小数位
(2) digits = 0, 四舍五入到最接近的整数
如果round()函数只有number这个参数,等同于digits=0
(3) digits < 0 ,在小数点左侧进行四舍五入
ps:四舍五入规则
(1)要求保留位数的后一位<=4,则进位。
round(5.214,2) 保留小数点后两位,结果是 5.21
(2)要求保留位数的后一位“=5”,且该位数后面没有数字,则不进位。
round(5.215,2) 结果为5.21
(3)要求保留位数的后一位“=5”,且该位数后面有数字,则进位.
round(5.2151,2) 结果为5.22
(4)要求保留位数的后一位“>=6”,则进位。
round(5.216,2) 结果为5.22
结束语
放假快半个月重新捡起python发现好多都眼熟但是不会写,忘了的没记的都有,很头疼
写的过程也是断断续续,两三天能写完的硬是拖了一周
还是得做出改变啊,不能摆烂
这算是小小的第一步吧,假期也过了三分之一,后面还是每天花点儿时间认真学点儿东西吧
唉,又是觉醒的一天