数据结构与算法可以说是每位程序员的必修课,即使是AI高速发展的今天,熟悉数据结构与算法都无疑是面向开发的一项加分项。先从一个问题看起:
# 怎么让=后面不带空格 print("1+1=",1+1) # 1+1= 2
方案可能有更多,就像一个问题,设计程序去实现的方法也可能很多
# 1 print(f"1+1={1+1}") # 2 print("1+1={}".format(1+1)) # 3 print("1+1=%d"%(1+1)) # 4 print("1+1="+str(1+1))
1.输入输出
1.1常量与变量
变量(Variables)
变量是用于存储数据的容器,其值可以在程序运行过程中改变。变量名通常由字母、数字和下划线组成,但不能以数字开头。
特点
可变性:变量的值可以在程序执行过程中被修改。
动态类型:Python是动态类型的语言,这意味着变量的类型是在运行时确定的,并且可以改变。
命名规则:变量名区分大小写,且不能与Python的关键字冲突。
# 定义一个整数变量
age = 25
print(age) # 输出: 25# 修改变量的值
age = 30
print(age) # 输出: 30# 定义一个字符串变量
name = "Alice"
print(name) # 输出: Alice
常量(Constants)
常量是一种特殊类型的变量,其值在程序运行过程中不应被修改。虽然Python没有内置的常量类型,但通过约定俗成的方式,可以将某些变量视为常量。
特点
不可变性:常量的值一旦定义后就不能被修改。
命名约定:为了表示常量,通常使用全大写字母和下划线来命名。
命名约定:虽然Python本身不会强制要求常量必须全大写,但遵循这一约定有助于代码的可读性和维护性。
保护常量:如果需要更严格的保护,可以使用类或模块级别的属性来模拟常量。例如,通过定义一个类并使用类属性来存储常量。
# 定义一个常量
PI = 3.14159
print(PI) # 输出: 3.14159
注意:不能以数字、特殊符号命名变量,_(下划线)可以
1.2基础数据类型
转换关系:
1.3运算符号
1.4输入
import sys# print -- print(*object,sep='',end='\n',file=sys.stdout,flush=False)''' parm:object:表示输出一个或者多个对象,输出多个对象时需要使用sep分隔开sep:输出多个对象时使用 sep 分隔开,默认值 一个空格end:输出结束以 end 结尾,默认值是换行符\n,可以替换成其他字符串file:要写入的文件对象,默认为终端输出flush:输出(内容)是否被缓存,通常决定于file,如果flush=True,流会被强制刷新 '''print("www","baidu","com",sep='.',end='\n')
1.5输出
# input -- input([prompt]) ''' parm:prompt:提示信息默认输入的变量为 strint()可以转换成整数型 '''# 输出三角形的面积 a = int(input()) b = int(input()) c = int(input()) 1 p = (a+b+c)/2import math s = math.sqrt(p*(p-a)*(p-b)*(p-c))print("三角形的面积是{}".format(s))
2.选择结构
2.1 if...else...
1.if语句
2.if...else...语句
year = int(input()) # 1000-9999if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):print(year,"是闰年") else:print(year,"不是闰年")
2.2 if...elif...else...
# 1 if条件句 c_grade = int(input()) m_grade = int(input()) e_grade = int(input())if c_grade==100 or m_grade==100 or e_grade==100:print("奖励一朵小红花") elif (c_grade>90 and m_grade>90) or (c_grade>90 and e_grade>90) or (m_grade>90 and e_grade>90):print("奖励一朵小红花") elif c_grade>80 and m_grade>80 and e_grade>80:print("奖励一朵小红花") else:print("再接再厉")
2.3 逻辑判断语句
1. 基本逻辑运算符
and: 逻辑与运算符,当且仅当两个操作数都为真时,结果才为真。
a = True
b = False
result = a and b # result 为 False
or: 逻辑或运算符,只要有一个操作数为真,结果就为真。
a = True
b = False
result = a or b # result 为 True
not: 逻辑非运算符,将操作数的布尔值取反。
a = True
result = not a # result 为 False
2. 比较运算符
这些运算符用于比较两个值,并返回布尔值(True 或 False)。
==: 等于
a = 5
b = 5
result = (a == b) # result 为 True
!=: 不等于
a = 5
b = 3
result = (a != b) # result 为 True
<, >, <=, >=: 小于、大于、小于等于、大于等于
a = 5
b = 3
result = (a > b) # result 为 True
result = (a < b) # result 为 False
result = (a >= b) # result 为 True
result = (a <= b) # result 为 False
3. 组合逻辑表达式
可以使用括号来组合多个逻辑表达式,以明确运算顺序。
a = True
b = False
c = True
result = (a and b) or c # result 为 True
4. 短路求值
and: 如果第一个操作数为False,则整个表达式的结果为False,不再计算第二个操作数。
or: 如果第一个操作数为True,则整个表达式的结果为True,不再计算第二个操作数。
def func1():
print("func1 called")
return Truedef func2():
print("func2 called")
return Falseresult = func1() and func2() # func1 called, func2 called, result 为 False
result = func1() or func2() # func1 called, result 为 True
5. 三元运算符(条件表达式)
Python支持三元运算符,用于简洁的条件判断。
a = 5
b = 3
result = "a is greater" if a > b else "b is greater" # result 为 "a is greater"
# 实现例题 # 逻辑判断语句 a = int(input()) b = int(input()) c = int(input())case1 = a == 100 or b == 100 or c == 100 case2 = (a>90 and b>90) or (a>90 and c>90) or (b>90 and c>90) case3 = a>80 and b>80 and c>80ans = case1 or case2 or case3print(ans)