尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

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

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、str1如何判断某个子串是否在字符串中2如何将字符串反转3、元组tuple组包与解包例子案例4、集合set运算符1、运算符 2、运算符 -3、运算符 |将多个set合并1、成一个列表2、成一个集合5、字典dict遍历案例6、数据容器总结对比7、综合案例python官网地址python.orgpycharm官网www.jetbrains.com一、1、字符串拼接1直接用 字符串常量和字符串变量都可以用进行拼接str()将整形转化成字符串就可以与字符串拼接了int()其他类型转为intfloat()其他类型转为floatbool()其他类型转为boolprint 时输出不同内容可以用逗号连接但输出结果中间会存在空格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模块来解决#修改前 xfloat(input())#0.5 yfloat(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 ab c and acb and bca: 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}{ab}) 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(f100-500之间所有3的倍数之和为{sum2})c、案例打印99乘法表 for i in range(1, 10): for j in range(1, i1): print(f{j} × {i} {i*j}, end\t) print()d、关键字break和continuebreak只能用于循环中跳出当前循环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、str1如何判断某个子串是否在字符串中# 1、count()方法、find()方法 s wer123.com if s.find(.) and s.count() 1: print(邮箱格式正确) else: print(邮箱格式错误) # 2、in运算符 s wer123.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 set22、运算符 -可以实现和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!)
返回列表