代码随想录学习
代码随想录学习
前置知识
基础语法:Python的“单词”与“句子”
Python语法简洁,类似英语,重点掌握以下核心概念:
1. 第一个Python程序:Hello World
创建hello.py文件,输入以下代码并运行(命令行执行python hello.py):
print("Hello, Python World!") # 输出:Hello, Python World!
print()是Python的内置函数,用于输出内容到控制台。
2. 变量与数据类型
变量是存储数据的“容器”,Python无需声明类型(动态类型),直接赋值即可:
name = "Alice" # 字符串(str):用单/双引号包裹
age = 25 # 整数(int):无小数部分
salary = 5000.50 # 浮点数(float):有小数部分
is_student = True # 布尔值(bool):仅True/False
- 查看变量类型:用
type()函数,如print(type(age))输出<class 'int'>。
3. 基本运算
Python支持算术、比较、逻辑三类运算符:
- 算术运算:
+(加)、-(减)、*(乘)、/(除,返回浮点数)、//(整除,返回整数)、%(取余)、**(幂)。
示例:print(10 // 3)输出3(10除以3的整数部分);print(2 ** 3)输出8(2的3次方)。 - 比较运算:
==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于),返回布尔值。
示例:print(5 == 5)输出True;print(10 > 20)输出False。 - 逻辑运算:
and(与,两者都为True则返回True)、or(或,其一为True则返回True)、not(非,取反)。
示例:print((5 > 3) and (10 < 20))输出True;print(not (5 == 10))输出True。
核心概念:控制流、函数、数据结构
这些是Python编程的“骨架”,掌握后才能写出复杂逻辑的代码。
1. 控制流:让程序“做选择”
- 条件语句(if-elif-else):根据条件执行不同代码块,用缩进(4个空格)标识代码块(Python不用大括号)。
示例:判断成绩等级:score = 85 if score >= 90: print("优秀") elif score >= 60: print("及格") else: print("不及格") - 循环语句:重复执行代码块,常用
for(遍历序列)和while(条件为真时循环)。- for循环:遍历列表、字符串等序列:
# 遍历列表 fruits = ["apple", "banana", "cherry"] for fruit in fruits: print(fruit) # 依次输出每个水果 # 遍历范围(0到4) for i in range(5): print(i) # 输出0、1、2、3、4 - while循环:当条件为真时重复执行:
count = 0 while count < 5: print(count) count += 1 # 等价于count = count + 1,输出0-4
- for循环:遍历列表、字符串等序列:
2. 函数:代码的“积木”
函数是可重复使用的代码块,用于封装功能,减少重复代码。
- 定义函数:用
def关键字,格式为def 函数名(参数):。
示例:问候函数:def greet(name): """这是一个问候函数(文档字符串,说明函数功能)""" return f"Hello, {name}!" # 返回字符串,f-string是Python 3.6+的字符串格式化方式 - 调用函数:用
函数名(参数)。
示例:print(greet("Alice"))输出Hello, Alice!"。 - 默认参数:参数可设置默认值,调用时未提供则用默认值。
示例:def greet(name="World"): print(f"Hello, {name}!"),调用greet()输出Hello, World!"。
3. 数据结构:高效处理数据
Python内置列表、字典、元组、集合四种常用数据结构,用于存储和组织数据:
-
列表(List):有序、可变的序列,用
[]表示,适合存储同类数据(如学生成绩)。
示例:scores = [90, 85, 95, 88] scores.append(100) # 添加元素到末尾,scores变为[90,85,95,88,100] print(scores[0]) # 访问第一个元素(索引从0开始),输出90 print(len(scores)) # 获取列表长度,输出5 -
字典(Dictionary):无序、键值对(key-value)的集合,用
{}表示,适合存储映射关系(如用户信息)。
示例:user = {"name": "Alice", "age": 25, "city": "Beijing"} print(user["name"]) # 通过key访问value,输出Alice user["age"] = 26 # 修改value,user变为{"name":"Alice","age":26,"city":"Beijing"} user["gender"] = "female" # 添加新的键值对 -
元组(Tuple):有序、不可变的序列,用
()表示,适合存储不应修改的数据(如坐标)。
示例:coordinates = (10.0, 20.0) print(coordinates[0])输出10.0
(元组不可修改,coordinates[0] = 15会报错)。 -
集合(Set):无序、不重复的元素集合,用
{}表示,适合去重或数学运算(如交集、并集)。
示例:unique_numbers = {1, 2, 3, 3, 4} print(unique_numbers)输出{1,2,3,4}自动去重:
set1 = {1,2,3} set2 = {3,4,5} print(set1 & set2)输出{3}(交集)。
实战项目:用代码解决实际问题
学完基础后,通过小项目巩固知识,以下是3个适合新手的实战项目:
1. 猜数字游戏(综合运用条件、循环、随机数)
目标:程序随机生成1-100的数字,用户猜测,程序提示“太大”或“太小”,直到猜中。
代码:
import random # 导入随机数模块
def guess_number():
number = random.randint(1, 100) # 生成1-100的随机数
attempts = 0 # 记录猜测次数
while True:
guess = int(input("猜一个1-100的数字:"))
attempts += 1
if guess < number:
print("太小了!")
elif guess > number:
print("太大了!")
else:
print(f"恭喜!你猜中了,用了{attempts}次!")
break
guess_number() # 调用函数开始游戏
运行效果:
猜一个1-100的数字:50
太大了!
猜一个1-100的数字:25
太小了!
猜一个1-100的数字:37
恭喜!你猜中了,用了3次!
2. 简易计算器(综合运用函数、条件、运算)
目标:实现加、减、乘、除四种基本运算,用户输入两个数字和运算符,程序输出结果。
代码:
def calculator():
num1 = float(input("输入第一个数字:"))
operator = input("输入运算符(+、-、*、/):")
num2 = float(input("输入第二个数字:"))
if operator == "+":
result = num1 + num2
elif operator == "-":
result = num1 - num2
elif operator == "*":
result = num1 * num2
elif operator == "/":
if num2 == 0:
print("错误:除数不能为0!")
return
result = num1 / num2
else:
print("错误:无效的运算符!")
return
print(f"结果:{result}")
calculator() # 调用函数开始计算
运行效果:
输入第一个数字:10
输入运算符(+、-、*、/):/
输入第二个数字:2
结果:5.0
3. 待办事项列表(综合运用列表、循环、函数)
目标:实现添加、查看、删除待办事项的功能。
代码:
todos = [] # 存储待办事项的列表
def add_todo():
todo = input("输入待办事项:")
todos.append(todo)
print(f"已添加:{todo}")
def view_todos():
if not todos:
print("没有待办事项!")
return
print("待办事项:")
for i, todo in enumerate(todos, 1): # enumerate生成索引(从1开始)
print(f"{i}. {todo}")
def delete_todo():
view_todos()
if not todos:
return
index = int(input("输入要删除的事项编号:")) - 1 # 转换为列表索引(从0开始)
if 0 <= index < len(todos):
deleted = todos.pop(index)
print(f"已删除:{deleted}")
else:
print("错误:无效的编号!")
# 主循环
while True:
print("
待办事项管理器")
print("1. 添加事项")
print("2. 查看事项")
print("3. 删除事项")
print("4. 退出")
choice = input("选择操作:")
if choice == "1":
add_todo()
elif choice == "2":
view_todos()
elif choice == "3":
delete_todo()
elif choice == "4":
print("退出程序!")
break
else:
print("错误:无效的选择!")
运行效果:
待办事项管理器
1. 添加事项
2. 查看事项
3. 删除事项
4. 退出
选择操作:1
输入待办事项:写作业
已添加:写作业
待办事项管理器
1. 添加事项
2. 查看事项
3. 删除事项
4. 退出
选择操作:2
待办事项:
1. 写作业
待办事项管理器
1. 添加事项
2. 查看事项
3. 删除事项
4. 退出
选择操作:3
待办事项:
1. 写作业
输入要删除的事项编号:1
已删除:写作业
待办事项管理器
1. 添加事项
2. 查看事项
3. 删除事项
4. 退出
选择操作:4
退出程序!
ACM输⼊输出模板
1. 多⾏输⼊,每⾏两个整数
import sys
# 接收输⼊
for line in sys.stdin:
a, b = line.split(' ')
# 输出
print(int(a) + int(b))
# 输出换⾏
print()
2. 多组数据,每组第⼀⾏为n, 之后输⼊n⾏两个整数
while 1:
try:
N = int(input())
for i in range(N):
l = list(map(int,input().split()))
print(sum(l))
except:
break
3. 若干行输入,每行输入两个整数,遇到特定条件终止。
import sys
while True:
s = input().split() #一行一行读取
a , b =int (s[0]), int(s[1])
if not a or not b : #遇到 0,0 则中断
break
print( a+b )
4. 若干行输入,遇到0终止,每行第一个数为N,表示本行后面有N个数。
import sys
for line in sys.stdin:
nums = line.split()
nums = list(map(int,nums))
n = nums[0]
if not n
break
print(sum(nums[-n:]))
5. 若干行输入,每行包括两个整数a和b,由空格分隔,每行输出后接一个空行。
while True:
try:
x , y = map(int,(input()split()))
print( x + y )
print( )
except:
break
6. 多组n行数据,每行先输入一个整数N,然后在同一行内输入M个整数,每组输出之间输出一个空行。
while 1 :
try:
N = int(input())
for i in range(N):
n = list(map(int,inpute().split()))
if n[0] == 0:
print()
continue
print(sum(n[1: ]))
if i<N-1:
print()
except;
break
7. 多组测试样例,每组输入数据为字符串,字符串用空格分隔,输出位小数点后两位。

学习算法
python前置基础知识
acm输入输出
浙公网安备 33010602011771号