编写一个程序,输入一个整数,判断它是奇数还是偶数。
输入格式:
一个整数 num
输出格式:
如果是偶数,输出 "num 是偶数";如果是奇数,输出 "num 是奇数"。
示例:
输入:42
输出:42 是偶数
输入:17
输出:17 是奇数
使用取模运算符 % 判断一个数是否能被2整除。如果余数为0,则是偶数;否则是奇数。
num = int(input())
if num % 2 == 0:
print(f"{num} 是偶数")
else:
print(f"{num} 是奇数")
当你在练习中答错题目时,它们会自动添加到这里
在题库中点击题目旁边的星标图标来收藏题目
核心概念:Python是动态类型语言,采用引用语义,变量无需声明类型,但每个对象都有类型。
# 整数 (int) - 任意精度整数 a = 10 b = -5 c = 0 # 浮点数 (float) - 双精度浮点数 pi = 3.14159 d = 2.0 e = 1.5e3 # 科学计数法 # 字符串 (str) - Unicode不可变序列 name = "Alice" greeting = 'Hello, World!' multiline = """多行 字符串""" # 布尔值 (bool) - True/False is_student = True is_teacher = False # 空值 (None) - 特殊空值对象 result = None # 类型检查 print(type(a)) #print(isinstance(a, int)) # True # 类型转换(显式转换更安全) num_str = "123" num = int(num_str) # int() float_num = float("3.14") # float() str_num = str(456) # str()
==比较浮点数,使用math.isclose()+运算符is比较None、True、Falsex: int = 10"123" + 456 → 类型错误,需转换0.1 + 0.2 ≠ 0.3理论阐述:运算符优先级影响表达式求值顺序,括号可明确指定优先级。
x = 10
y = 3
print(x + y) # 加法 13
print(x - y) # 减法 7
print(x * y) # 乘法 30
print(x / y) # 除法 3.333...
print(x % y) # 取模 1
print(x ** y) # 幂运算 1000
print(x // y) # 整除 3
print(x > y) # 大于 True
print(x < y) # 小于 False
print(x == y) # 等于 False
print(x != y) # 不等于 True
print(x >= y) # 大于等于 True
print(x <= y) # 小于等于 False
print(True and False) # 与 False
print(True or False) # 或 True
print(not True) # 非 False
理论阐述:Python使用缩进表示代码块,elif是"else if"的缩写,条件表达式从上到下依次判断,直到找到第一个为True的条件。
score = 85
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
elif score >= 60:
grade = "D"
else:
grade = "F"
print(f"成绩等级: {grade}")
result = "yes" if x > 0 else "no"and/or逻辑运算符时间复杂度:O(1) 最优,O(n) 最差(需要遍历所有条件)
理论阐述:for循环用于遍历可迭代对象,while循环在条件为真时持续执行。break用于提前退出循环,continue用于跳过当前迭代。
# 遍历列表
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
print(fruit)
# range()函数(生成整数序列)
for i in range(5): # 0,1,2,3,4
print(i)
for i in range(2, 7): # 2,3,4,5,6
print(i)
for i in range(0, 10, 2): # 0,2,4,6,8 (步长)
print(i)
count = 0
while count < 5:
print(count)
count += 1 # 避免无限循环
# break: 立即跳出整个循环
for i in range(10):
if i == 5:
break
print(i) # 输出: 0,1,2,3,4
# continue: 跳过当前迭代,继续下一次
for i in range(10):
if i % 2 == 0:
continue
print(i) # 输出: 1,3,5,7,9
for i in range(3):
print(i)
else:
print("循环正常结束") # 循环未被break时执行
for i, val in enumerate(list)遍历n个元素:时间O(n),空间O(1)
核心概念:列表是Python中最常用的数据结构,是有序、可变的序列,支持索引访问和动态增长。
# 创建列表
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", True, 3.14]
empty = []
# 访问元素(索引从0开始,负数从后向前)
print(numbers[0]) # 1
print(numbers[-1]) # 5(最后一个)
# 切片 [start:end:step]
print(numbers[1:3]) # [2, 3]
print(numbers[:3]) # [1, 2, 3]
print(numbers[2:]) # [3, 4, 5]
print(numbers[::2]) # [1, 3, 5] (步长2)
# 修改
numbers[0] = 100
# 添加元素
numbers.append(6) # 末尾添加 O(1)
numbers.insert(0, 0) # 指定位置插入 O(n)
# 删除
numbers.remove(3) # 删除第一个匹配值 O(n)
popped = numbers.pop() # 弹出最后一个 O(1)
del numbers[0] # 删除指定索引 O(n)
# 常用方法
print(len(numbers)) # 长度
print(2 in numbers) # 包含判断 O(n)
numbers.sort() # 排序 O(n log n)
numbers.reverse() # 反转 O(n)
print(numbers.index(2)) # 查找索引 O(n)
print(numbers.count(2)) # 统计次数 O(n)
[x**2 for x in range(5)]copy = lst[:]
索引访问: O(1) | 末尾追加: O(1) | 中间插入: O(n)
搜索: O(n) | 排序: O(n log n)
核心概念:字典是基于哈希表实现的无序键值对集合,提供O(1)时间复杂度的查找、插入和删除操作。
# 创建字典
student = {
"name": "张三",
"age": 20,
"major": "计算机科学"
}
# 访问
print(student["name"]) # 张三
print(student.get("age", 0)) # 20(get带默认值)
print(student.get("gender")) # None(无默认值)
# 添加/修改
student["grade"] = "大二" # 添加
student["age"] = 21 # 修改
# 删除
del student["major"] # O(1)
age = student.pop("age") # O(1),返回被删除的值
# 常用操作
print(student.keys()) # dict_keys(['name', 'age', 'grade'])
print(student.values()) # dict_values(['张三', 21, '大二'])
print(student.items()) # dict_items([...])
# 遍历
for key, value in student.items():
print(f"{key}: {value}")
# 字典推导式
squares = {x: x**2 for x in range(5)}
setdefault()处理默认值collections.defaultdict简化逻辑查找/插入/删除: O(1) 平均 | O(n) 最坏(哈希冲突)
有序、不可变的序列(创建后不能修改)。
# 创建元组
point = (3, 4)
colors = ("红", "绿", "蓝")
single = (1,) # 单元素元组需要逗号
# 访问
print(point[0]) # 3
# 元组解包
x, y = point
print(x, y) # 3 4
# 用途:函数返回多个值
def get_size():
return 100, 200
width, height = get_size()
无序、唯一的元素集合,自动去重。
# 创建集合
s1 = {1, 2, 3, 3, 4} # {1,2,3,4}(自动去重)
s2 = set([3, 4, 5, 6])
# 添加删除
s1.add(5)
s1.remove(1)
# 集合运算
print(s1 | s2) # 并集 {2,3,4,5,6}
print(s1 & s2) # 交集 {3,4}
print(s1 - s2) # 差集 {2}
print(s1 ^ s2) # 对称差 {2,5,6}
# 去重应用
lst = [1, 2, 2, 3, 3, 3, 4]
unique = list(set(lst)) # [1,2,3,4]
核心概念:函数是一段可重用的代码块,通过def关键字定义。Python函数支持默认参数、可变参数、关键字参数等多种参数形式。
# 定义函数
def greet(name):
"""这是文档字符串,说明函数用途"""
return f"你好, {name}"
# 调用函数
message = greet("张三")
print(message)
# 带默认参数
def power(x, n=2):
return x ** n
print(power(3)) # 9 (默认n=2)
print(power(3, 3)) # 27
# 可变参数 *args
def sum_all(*numbers):
total = 0
for num in numbers:
total += num
return total
print(sum_all(1, 2, 3, 4, 5)) # 15
# 关键字参数 **kwargs
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="张三", age=20)
def func(x: int) -> str:理论阐述:递归函数通过调用自身来解决问题,需设置终止条件防止无限递归。Python使用LEGB规则管理变量作用域。
# 阶乘
def factorial(n):
if n == 0 or n == 1:
return 1
return n * factorial(n - 1)
print(factorial(5)) # 120
# 斐波那契(优化版本)
def fib(n, memo={}):
if n in memo:
return memo[n]
if n <= 1:
return n
memo[n] = fib(n-1, memo) + fib(n-2, memo)
return memo[n]
x = 10 # 全局变量
def func():
x = 20 # 局部变量
print(x) # 20 (局部)
func()
print(x) # 10(全局x没变)
# 使用global修改全局变量
def change_global():
global x
x = 30
change_global()
print(x) # 30
# 创建字符串
s1 = "Hello"
s2 = 'World'
s3 = """多行
字符串"""
# 访问与切片
s = "Python"
print(s[0]) # P
print(s[-1]) # n
print(s[1:4]) # yth
# 拼接与重复
print("Hello" + " " + "World")
print("Hi" * 3)
# 长度
print(len("Hello")) # 5
# 成员检查
print("th" in "Python") # True
s = " Hello, World! "
# 大小写
print(s.upper()) # HELLO, WORLD!
print(s.lower()) # hello, world!
print(s.title()) # Hello, World!
# 去除空白
print(s.strip()) # "Hello, World!"
print(s.lstrip()) # "Hello, World! "
print(s.rstrip()) # " Hello, World!"
# 分割与连接
print(s.split(",")) # [" Hello", " World! "]
print("-".join(["a", "b", "c"])) # a-b-c
# 替换
print(s.replace("World", "Python"))
# 查找
print(s.find("World")) # 8
print(s.count("l")) # 3
# 判断
print(s.startswith("He"))
print(s.endswith("!"))
print(s.isdigit())
print(s.isalpha())
name = "张三"
age = 20
print(f"{name}今年{age}岁")
print(f"{name}明年{age + 1}岁")
print("{}今年{}岁".format(name, age))
print("{1}今年{0}岁".format(age, name))
pi = 3.1415926
print(f"{pi:.2f}") # 3.14
print(f"{1000:,}") # 1,000
print(f"{0.5:.1%}") # 50.0%
# 基本输入
name = input("请输入姓名: ")
print(f"你好, {name}!")
# 获取数字
age = int(input("请输入年龄: "))
height = float(input("请输入身高(米): "))
# 多个输入
nums = input("请输入3个数字,用空格分隔: ").split()
x, y, z = map(int, nums)
print(f"和: {x + y + z}")
# print函数
print("Hello")
print(1, 2, 3)
print(1, 2, 3, sep="-") # 1-2-3
print("Hello", end=" ") # 不换行
print("World")
# 格式化输出
name = "Alice"
print(f"Name: {name}")
print("Name: {}".format(name))
# 写入文件
with open("test.txt", "w", encoding="utf-8") as f:
f.write("Hello, World!\n")
f.write("第二行")
# 读取文件
with open("test.txt", "r", encoding="utf-8") as f:
content = f.read() # 全部读取
print(content)
# 逐行读取
with open("test.txt", "r", encoding="utf-8") as f:
for line in f:
print(line.strip())
# 追加
with open("test.txt", "a", encoding="utf-8") as f:
f.write("\n第三行")
import math
print(math.pi) # π
print(math.e) # e
print(math.sqrt(16)) # 4
print(math.sin(math.pi/2)) # 1
print(math.cos(0)) # 1
print(math.log(10)) # 自然对数
print(math.pow(2, 3)) # 8
print(math.factorial(5)) # 120
print(math.floor(3.7)) # 3
print(math.ceil(3.2)) # 4
import random
print(random.random()) # 0-1随机浮点数
print(random.randint(1, 10)) # 1-10随机整数
print(random.uniform(1, 10)) # 1-10随机浮点数
print(random.choice(["红", "绿", "蓝"])) # 随机选择
lst = [1,2,3,4,5]
random.shuffle(lst) # 打乱
print(lst)
print(random.sample(lst, 3)) # 随机取3个
import time
from datetime import datetime
print(time.time()) # 时间戳
time.sleep(2) # 暂停2秒
now = datetime.now()
print(now)
print(now.year, now.month, now.day)
print(now.strftime("%Y-%m-%d %H:%M:%S"))
# 字符串转日期
date_str = "2024-01-01"
date_obj = datetime.strptime(date_str, "%Y-%m-%d")
# 定义类
class Person:
# 构造方法
def __init__(self, name, age):
self.name = name # 属性
self.age = age
# 方法
def greet(self):
return f"你好, 我是{self.name}"
def have_birthday(self):
self.age += 1
return f"{self.name}今年{self.age}岁了!"
# 创建对象
p = Person("张三", 20)
print(p.name) # 张三
print(p.greet()) # 你好, 我是张三
print(p.have_birthday()) # 张三今年21岁了!
class Student(Person): # 继承Person
def __init__(self, name, age, student_id):
super().__init__(name, age) # 调用父类构造
self.student_id = student_id
def study(self):
return f"{self.name}正在学习,学号{self.student_id}"
s = Student("李四", 19, "2024001")
print(s.greet()) # 继承的方法
print(s.study()) # 自己的方法