python刷题宝典(1) 基础知识
基础知识
准备
环境:安装Python 3.10及其扩展包(如NumPy、Pandas)。
下载:从官方网站获取并解压源码。
输入输出
数字输入:
- input()获取单行输入。
- int(input())转为整数;float(input())转为浮点数;str(input())转为字符串。
- 多个字符串输入可结合split()处理。
文件读取:- 使用open()打开文件并读取内容,默认以UTF-8编码解析文件。
字符串操作
常用操作:- 拼接:var = var1 + var2
- 转换:list(var)将字符串转为字符列表;str()将字符列表转回字符串。
- 表达式计算与拆分:
python str = '1+2*3/4' eval(str) str.split() str.replace('python', 'java')
列表操作
创建方式:
python list1 = ['Google', 'Runoob', 1997, 2000] list2 = [i for i in range(5)] 切片与索引:python
nums = [1,2,3,4,5]
print(nums[0:4]) # 不包含索引4
print(nums[:-2:2]) # 步长为2
print(nums[-2:1:-1]) # 反向步长为-1
修改与删除:
`
基础知识
准备
环境安装:
pycharm
教程网站:
菜鸟教程
1 基础输入输出
1.1 字符串输入
s = input()
1.2 数字输入
n = int(input())
1.3 多个字符串输入
strs = input().split()
1.4 固定个数字输入
a,b = map(int,input().split())
知识点: map(fun,list) 对list中的所有元素执行fun,返回map类型
1.5 多个数字输入
nums = list(map(int,input().split()))
知识点: map强转成list
1.6 多行输入
#知道几行
updates= []
for i in range(n):
updates.append(input())
#不知道几行
updates = []
while True:
update = list(map(int, input().split()))
if len(update) == 3: #每行三个
updates.append(update)
else:
print(updates)
break
知识点:while循环,不符合条件时跳出
1.7 输入列表转换
import ast
s = ast.literal_eval(input())
>In: [[1,3,2],[2,4,3],[0,2,-2]]
>Out: [[1, 3, 2], [2, 4, 3], [0, 2, -2]]
1.8 输出
nums = [1,2,3]
print(nums)
#不换行输出
for num in nums:
print(num,end=" ")
#格式化输出
print('Hello {} world {}'.format('python1','python2'))
print('Hello {1} world {0}'.format('python1','python2'))
print("pi is %.3f" % 3.1415926)
print('{:0>2d}:{:0>2d}'.format(5,34))
2 数字
2.1 数字转字符串
s = str(num) #数字转字符串
s = hex(num) #数字转十六进制
>>>hex(255)
'0xff'
>>> hex(-42)
'-0x2a'
>>> hex(1L)
'0x1L'
>>> hex(12)
'0xc'
s = oct(num) #数字转八进制
>>> oct(10)
'0o12'
>>> oct(20)
'0o24'
>>> oct(15)
'0o17'
s = bin(num) #数字转二进制
>>>bin(10)
'0b1010'
>>> bin(20)
'0b10100'
2.2 字符串转数字
>>>int() # 不传入参数时,得到结果0
0
>>> int(3)
3
>>> int(3.6)
3
>>> int('12',16) # 如果是带参数base的话,12要以字符串的形式进行输入,12 为 16进制
18
>>> int('0xa',16)
10
>>> int('10',8)
8
2.3 常见运算
表达式的语法很直白: +, -, * , / , % 和其它语言里一样
// 特殊除法,返回值小数位和计算前保持一致,常用于整除
>>> 7//2
3
>>> 7.0//2
3.0
>>> 7//2.0
3.0
**幂运算
>>> 5 ** 2 # 5 的平方
25
>>> 2 ** 7 # 2的7次方
128
例题:
类型转换 HJ57 高精度整数加法
进制转换 计算int型正整数在内存存储中二进制表示中的1的数量 https://www.nowcoder.com/practice/440f16e490a0404786865e99c6ad91c9?tpId=37&tqId=21238&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D37&difficulty=undefined&judgeStatus=undefined&tags=&title=
2.4 常用函数
sqrt(x) 返回数字x的平方根。
pow(x, y) x**y 运算后的值。
max(x1, x2,...) 返回给定参数的最大值,参数可以为序列。
min(x1, x2,...) 返回给定参数的最小值,参数可以为序列。
floor(x) 返回数字的下舍整数,如math.floor(4.9)返回 4
abs(x) 返回数字的绝对值,如abs(-10) 返回 10
round(x [,n])返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数。
3 字符串
Python 中字符用单双引号都可以
var1 = 'Hello World!'
var2 = "Runoob"
索引从左或右都可以

当前尝试的外链图片无法正常访问...,请确保将图片保存下来后重新尝试上传
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KrraExgj-1652597021638)(img_1.png)]
字符串常用操作
var = var1+var2 #字符串拼接
list(var) #字符串转list
计算表达式:
str = '1+2*3/4'
eval(str)
字符串拆分
str = 'hello world! python'
str.split()
字符串替换
str.replace("python","java")
例题:
该课程包含...HJ54 表达式求值...和...HJ50 四则运算...两个核心模块
第一个模块主要讲解如何实现复杂表达式的求值过程
获取索引和切片操作 [HJ1 字符串最后一个词的长度属性](https://www.nowcoder.com/practice/8c949ea5f36f422594b306a2300315da?tpId=37&tqId=21224&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=圆工罭測觫�� %E7%A8%8B%E7%B1 %E6%B8 %E7%B1)
该代码块用于定义名为HJ10的字符个数统计功能
标签 [HJ46 截取字符串] 用于引用官方链接:https://www.nowcoder.com/practice/a30bbc1a0aca4c27b86dd88868de4a4a?tpId=37&tqId=21269&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D37&difficulty=undefined&judgeStatus=undefined&tags=&title=
对[HJ106 字符逆序]进行翻转操作
4 列表
Python中的列表可以被视为一个高级的数组结构。
创建列表
list1 = ['Google', 'Runoob', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]
list4 = ['red', 'green', 'blue', 'yellow', 'white', 'black']
list5 = ['1', 2, 'a', [3, 4]]
nums = [0]*10
nums = [x for x in range(10)]
nums = list(range(10))
>>知识点:range 生成一个范围,三个参数,一般只填第二个,其他两个可以省略
参数1起点可不写,默认0
参数2终点不包含自己
参数3步长
列表索引,同字符串
nums = [10, 20, 30, 40, 50, 60, 70, 80, 90]
print(nums[0:4]) #不包含后面的索引
print(nums[:-2:2]) #step 2
print(nums[-2:1:-1]) # step -1
列表增删
nums = [10, 20, 30, 40]
nums.append(50)
nums += [50,60]
nums.append([50,60])
nums.extend([50,60])
del nums[1]
nums.remove(1)
#函数
len(nums)
max(nums)
min(nums)
#方法
list.count(obj) #统计某个元素在列表中出现的次数
list.index(obj) #从列表中找出某个值第一个匹配项的索引位置
list.insert(index, obj) #将对象插入列表
#***pop 让list可以当堆栈或队列使用***
list.pop([index=-1]) #移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj) #移除列表中某个值的第一个匹配项
list.reverse() #反向列表中元素
list.sort( key=None, reverse=False)# 对原列表进行排序
#列表去重
strs = list(set(strs))
#列表拼接字符串
list4 = ['red', 'green', 'blue', 'yellow', 'white', 'black']
" ".join(list4)
#判断元素是否在列表中
if 'red' in list4:
print('true')
else:
print('false')
例题:
有序数据处理中对BM46中最小值的K个数值进行列表排序切片
即明明模块涉及随机数值的排序功能
涉及具体排序方法
list反转,list字符串互转 HJ11 数字颠倒
HJ12 字符串反转
HJ13 句子逆序
参考资料:
