Python零基础学习--基础语法

目录

一、

1、字符串拼接

1)直接

2)字符串格式化

2、输入输出

3、运算符

1)算术运算符

2)赋值运算符

3)比较运算符

4)赋值运算符

4、流程控制语句

1)条件判断

a、if条件

b、match...case模式匹配

2)循环语句

a、while循环

b、for循环

c、案例

d、关键字break和continue

二、数据容器

1、list列表

2、str

1)如何判断某个子串是否在字符串中

2)如何将字符串反转

3、元组(tuple)

组包与解包

例子

案例

4、集合(set)

运算符

1、运算符 &

2、运算符 -

3、运算符 |

将多个set合并

1、成一个列表

2、成一个集合

5、字典(dict)

遍历

案例

6、数据容器总结对比

7、综合案例


python官网地址:python.org

pycharm官网:www.jetbrains.com

一、

1、字符串拼接

1)直接

用+ :字符串常量和字符串变量都可以用+进行拼接

str():将整形转化成字符串,就可以与字符串拼接了

int():其他类型转为int

float():其他类型转为float

bool():其他类型转为bool

print 时,输出不同内容可以用逗号连接,但输出结果中间会存在空格

2)字符串格式化

通过%占位符(%表示要占位,s表示将变量转为字符串放入占位的位置)

a,b = 8,9 #将变量转为字符串放入占位的位置 print("大家好,我是%s"%a) #有几个占位符,就要跟几个变量 print("大家好,我是%s,欢迎%s"%(a,b))

通过f"内容{变量/表达式}",大括号内可以写算术表达式

a,b = 8,9 #占位符是{} print(f"大家好,我是{a}") #有几个占位符,就要跟几个变量 print(f"大家好,我是{a},欢迎{b}")

2、输入输出

input语句获取键盘输入,s = input(提示信息),要注意从键盘中获取到的都是字符串,无论输入什么

print将数据输出到控制台,print(数据),print默认以“\n”结束,如果想让他输出不换行,要指定end参数,来指定每次print以什么结束

注意:如果想一次性输入多个变量,由于input() 返回的是一个字符串,是一个整体,不能自动拆分,所以要使用split()函数,将字符串用空格分开或指定其他分隔符

# 错误写法 × name, price, num = input("请输入商品名称、价格、数量") #正确写法 √ name, price, num = input("请输入商品名称、价格、数量").split()

3、运算符

1)算术运算符

特别的,除法运算的结果是小数

优先级:(** )>(* / // % )>(+ -

精度损失问题,可以用decimal模块来解决

#修改前 x=float(input())#0.5 y=float(input())#0.4 print("x-y=",x-y) #输出为0.999999998,这是二进制float无法精确表示所有小数 #修改后 from decimal import Decimal x = Decimal(input()) #0.5 y = Decimal(input()) #0.4 print("x-y =", x - y) #正确输出0.1

小数想要四舍五入保留精度,可以使用round()函数,

语法是round(数字,保留精度位数小数点后几位)

2)赋值运算符

3)比较运算符
4)赋值运算符

4、流程控制语句

1)条件判断
a、if条件
"""案例:三角形类型判断""" a = int(input("请输入第一个边长")) b = int(input("请输入第2个边长")) c = int(input("请输入第3个边长")) if a+b > c and a+c>b and b+c>a: if a == b == c: print(f"{a} {b} {c}等边") elif a == b or a == c or b == c: print(f"{a} {b} {c}等腰") else: print(f"{a} {b} {c}普通") else: print("不能构成三角形")
b、match...case模式匹配

case语句后面可以加条件判断语句

"""计算器""" a = float(input("请输入第一个运算数")) b = float(input("请输入第二个运算数")) opre = input("输入运算符") match opre: case "+": print(f"{a}+{b}={a+b}") case "-": print(f"{a}-{b}={a-b}") case "*": print(f"{a}*{b}={a*b}") case "/" if b != 0: print(f"{a}/{b}={a/b}") case _: #匹配其他所有情况 print("错误")
2)循环语句
a、while循环
"""计算1-100之间所有偶数的累加之和""" a = 1 sum = 0 while a <= 100: if a % 2 == 0: sum += a a += 1 # else这段逻辑可有可无 else: print(f"结果为{sum},正常结束")
b、for循环

与c语言中不太一样,for的本质是遍历一个数据集中的所有元素

"""计算1-100之间所有奇数的累加之和""" sum1 = 0 for i in range(1, 101, 2): sum1 += i #用逗号连接输出会有空格 print("1-100之间所有奇数的累加之和为",sum1) """计算100-500之间所有3的倍数之和""" sum2 = 0 for i in range(100, 501): if i % 3 == 0: sum2 += i #没空格 print(f"100-500之间所有3的倍数之和为{sum2}")
c、案例
"""打印99乘法表""" for i in range(1, 10): for j in range(1, i+1): print(f"{j} × {i} = {i*j}", end="\t") print()
d、关键字break和continue

break只能用于循环中,跳出当前循环

continue用于略过后面的执行体,进入下一次循环

"""用户登录""" while True: admin = input("请输入用户名") password = input("请输入密码") if admin == "" or password == "": print("用户名和密码不能为空!") continue else: if (admin == "admin" and password == "666888") or (admin == "zhangsan" and password == "123456") or (admin == "taoge" and password == "888666"): print("登陆成功") break else: print("用户名或密码错误")

二、数据容器

1、list列表

2、str

1)如何判断某个子串是否在字符串中
# 1、count()方法、find()方法 s = "wer@123.com" if s.find('.') and s.count('@') == 1: print("邮箱格式正确") else: print("邮箱格式错误") # 2、in运算符 s = "wer@123.com" if '.' in s and s.count('@') == 1: print("邮箱格式正确") else: print("邮箱格式错误")
2)如何将字符串反转
#利用字符串切片 s = "asdfgh" ss = s[::-1]

判断字符串是否是回文串

s = input() ss = s[::-1] if s == ss: print("是回文串") else: print("不是回文串")

3、元组(tuple)

注意:如果元组中只有一个元素,单个元素之后必须要加逗号,例如(100,)

组包与解包

基础解包的变量数量要与容器的元素个数一致

解包用*会收集成列表便于后续处理

例子
# 将a b c数据交换 a, c = 1, 3 b = 2 a, b, c = c, a, b print(a, b, c)
案例

grad = ( ("S001", "王林", 85, 92, 78), ("S002", "李慕婉", 92, 88, 95), ("S003", "十三", 78, 85, 82), ("S004", "曾牛", 88, 79, 91), ("S005", "周轶", 95, 96, 89), ("S006", "王卓", 76, 82, 77), ("S007", "红蝶", 89, 91, 94), ("S008", "徐立国", 75, 69, 82), ("S009", "许木", 86, 89, 98), ("S010", "遁天", 66, 59, 72), ) # 1 每个学生计算总分、各科平均分 print("学号\t\t总分\t\t平均分") # 方式一 """for g in grad: all_score = g[-1] + g[-2] + g[-3] average_score = all_score / 3 print(f"{g[0]}\t{all_score}\t\t{average_score:.1f}")""" # 方式二 基于解包,可读性高 for id, name, chinese, math, english in grad: all_score = chinese + math + english average_score = all_score / 3 print(f"{id}\t{all_score}\t\t{average_score:.1f}") # 2 各科成绩的 chinese_scores = [s[2] for s in grad] math_scores = [s[3] for s in grad] english_scores = [s[4] for s in grad] print(f"语文最低分{min(chinese_scores)},最高分{max(chinese_scores)},平均分{sum(chinese_scores)/len(chinese_scores)}") print(f"数学最低分{min(math_scores)},最高分{max(math_scores)},平均分{sum(math_scores)/len(math_scores)}") print(f"英语最低分{min(english_scores)},最高分{max(english_scores)},平均分{sum(english_scores)/len(english_scores)}") # 3 查找成绩优秀的学生 """for g in grad: all_score = g[-1] + g[-2] + g[-3] average_score = all_score / 3 if average_score > 90: print(f"{g[0]}同学成绩优秀,平均分大于90")""" for id, name, chinese, math, english in grad: all_score = chinese + math + english average_score = all_score / 3 if average_score > 90: print(f"{id}同学成绩优秀,平均分大于90")

4、集合(set)

运算符
1、运算符 &

可以实现和intersection一样的效果

set1.intersection(set2) 等价于 set1 &set2

2、运算符 -

可以实现和difference一样的效果

set1.difference(set2) 等价于 set1 - set2

还可以用集合推导式语法:{要往集合中添加的数据 for s in set1 if 条件}

set3 = { s for s in set1 if s not in set2 }

3、运算符 |

可以实现和union一样的效果

set1.union(set2) 等价于 set1 | set2

将多个set合并
1、成一个列表

使用解包,可以用于计算多个集合中每个元素一共出现多少次

all_list = [*set1 , *set2 , *set3]

2、成一个集合

使用union或者|,可以用于去重

5、字典(dict)

如果键重复,后面的值会覆盖前面的值

添加和修改的语法一样,如果字典中已经存在这个key,就会修改,否则添加

遍历
for k in dict.keys(): print(f"{k} : {dict[k]}") for item in dict.items(): print(f"{item[0]} : {item[1]}") for k, v in dict.items(): print(f"{k} : {v}") #注意如果想遍历键值对,不能直接遍历dict,因为默认遍历的是键 #以下是错误的 for k in dict1: print(k)
案例

print("欢迎使用购物车") shop_car = dict() while 1: instruct = input("请选择要进行的操作:\n1、添加\n2、修改\n3、删除\n4、查询\n5、退出") match instruct: case "1": name, price, num = input("请输入商品名称、价格、数量").split() if name in shop_car: print("该商品已存在,添加失败") else: shop_car[name] = [price, num] print("添加成功") case "2": name, price, num = input("请输入商品名称、价格、数量").split() if name not in shop_car: print("不存在该商品,请核实") else: shop_car[name] = [price, num] print("修改成功") case "3": name = input("请输入商品名称") if name not in shop_car: print("商品不存在,删除失败") else: del shop_car[name] print("删除成功") case "4": for k, v in shop_car.items(): print(f"商品名称{k},商品价格{v[0]},商品数量{v[1]}") case "5": print("已退出") break case _: print("非法操作,请重新输入")

6、数据容器总结对比

7、综合案例

print("欢迎使用教务管理系统") menu = """ ####################### 1、添加学生信息 2、修改学生信息 3、删除学生信息 4、查询学生信息 5、列出所有学生 6、统计班级成绩 7、退出系统 ####################### """ students = {} while 1: print(menu) order = input("请选择\n") match order: case "1": name = input("请输入学生姓名:") if name in students: print("添加失败,已经存在该学生!") continue chinese = float(input("请输入语文成绩:")) math = float(input("请输入数学成绩:")) english = float(input("请输入英语成绩:")) students[name] = {"chinese": chinese, "math": math, "english": english} case "2": name = input("请输入学生姓名:") if name not in students: print("修改失败,未找到该学生!") continue chinese = float(input("请输入语文成绩:")) math = float(input("请输入数学成绩:")) english = float(input("请输入英语成绩:")) students[name] = {"chinese": chinese, "math": math, "english": english} case "3": name = input("请输入学生姓名:") if name not in students: print("删除失败,未找到该学生!") continue students.pop(name) case "4": name = input("请输入学生姓名:") if name not in students: print("查找失败,未找到该学生!") continue print(f"学生姓名:{name},语文成绩:{students[name]['chinese']}," f"数学成绩:{students[name]['math']},英语成绩:{students[name]['english']}") case "5": for name in students: print(f"学生姓名:{name},语文成绩:{students[name]['chinese']}," f"数学成绩:{students[name]['math']},英语成绩:{students[name]['english']}") case "6": chinese_score = [students[name]['chinese'] for name in students] math_score = [students[name]['math'] for name in students] english_score = [students[name]['english'] for name in students] print(f"语文最高分:{max(chinese_score)},最低分:{min(chinese_score)},平均分{sum(chinese_score)/len(chinese_score)}") print(f"数学最高分:{max(math_score)},最低分:{min(math_score)},平均分{sum(math_score) / len(math_score)}") print(f"英语最高分:{max(english_score)},最低分:{min(english_score)},平均分{sum(english_score) / len(english_score)}") case "7": print("bye!") break case _: print("error!")