思维导图
基础数据类型
布尔(bool) True False
字符(str) ‘hello Python’
整型(int) -1,5,88
浮点(float) -2.3,4.1
数据结构
字典 {“position”:“中路”,“hero”:“诸葛亮”}
列表 [“q”,“w”,“e”]
元组 (“q”,“w”,“e”)
集合 {“q”,“w”,“e”}
列表与元组的不同:元组一旦成立,不可改变
列表与集合的不同:集合不能存在重复元素,且不能存在可变类型 (可变类型:如列表、字典)
基础语法
关键字
continue:跳过本次循环,往下执行 (适用于for循环、while循环)
break:打破循环 (适用于for循环、while循环)
for循环
for i in range(3): print(i) >>0 >>1 >>2
while循环
a=0 while a<3: print(a) a+=1 >>0 >>1 >>2
if 条件语句
用法1:
a=0 if a>2: print("a>2") else: print("a<2")
用法2:
b=6 if b>1 and b<2: print("C") elif b>2 and b<3: print("B") else: print("A")
函数编程
def myfunc(): return "ok" print(myfunc())
多文件编程:import
index.py: def myfunc(): return "ok" main.py: import index print(index.myfunc())
高级语法
for else : for循环正常执行完的情况下,执行else。若for循环体异常,则不执行else
for i in range(3): print(i) else: print("ok") >>0 >>1 >>2 >>ok
三元表达式
for i in range(3): print(i) 等价于: [print(i) for i in range(3)] >>0 >>1 >>2
简单编程题
1、程序开始运行后,输入一个三位数整数; 程序会根据输入的整数输出百位、十位和个位上的数。例如,输入123,
输出为:“百:1,十:2,个:3”。
2、输入一个总秒数,计算是几小时几分钟几秒,并一行输出
3、这里有四个数字,分别是:1、2、3、4。提问:能组成多少个互不相同且无重复数字的三位数?各是多少?
4、输出第10个斐波那契数列
5、99乘法表
def test1(number): number=str(number) print('百:',number[0],'十:',number[1],'个:',number[2]) def test2(time): hour=time//3600 minute=time%3600//60 second=time%3600%60 print('时:',hour,'分钟:',minute,'秒数:',second) def test3(): a=[] for i in range(1,5): for k in range(1, 5): for n in range(1, 5): if i != k and i!=n and k!=n: print(i,k,n) a.append(str(i)+str(k)+str(n)) def test4(): a=[0,1] for i in range(8): a.append(a[-1]+a[-2]) print('第十个数是',a[-1]) def test5(): for i in range(1,10): for k in range(1,i+1): print(f"{k}*{i}={i*k}",end=' ') print(end='\n')
工程项目类
石头剪子布
功能:
石头剪子布游戏,人机对战
编程思路:
1、采用字典rule列出游戏规则:1代表石头,2代表剪刀,3代表布
2、采用二维数组win表示玩家用户赢的可能
3、如果用户的输入不是‘1’,‘2’,’3‘,则判定输入不符合规则
4、由电脑随机生成数字代表电脑出拳
5、如果user==computer,则平局;如果符合win,则玩家用户赢;除此之外便是电脑赢
源代码
import random import time rule={1:'石头',2:'剪刀',3:'布'} win=((1,2),(2,3),(3,1)) while 1: user=input('请出拳(1:石头 2:剪刀 3:布):') if user not in ['1','2','3']: print('输入不正确') time.sleep(1) continue user=int(user) computer=random.randint(1,3) if user==computer: print(f'你出{rule[user]},电脑出{rule[computer]},平局') elif (user,computer) in win: print(f'你出{rule[user]},电脑出{rule[computer]},你贏了') else: print(f'你出{rule[user]},电脑出{rule[computer]},电脑赢了') if input('继续:Y 退出:除Y任意键') == 'Y': continue break
扑克发牌
功能:
3人斗地主随机发牌系统。共54张扑克牌,每人17张基础牌,随机地主再发3张牌
编程思路:
1、枚举所有花色,除大王外所有牌值,运用三元表达式遍历得到52张牌,再添加大小王,凑齐54张牌,创建deal函数进行发牌.
2、random.sample从puke中随机抽取17张牌添加到lis列表中.再将抽取到的17张牌从puke中移除.循环3次.最后puke中只剩下3张地主牌.
3、此时lis中有三组牌,故索引为0,1,2.利用random.randint(0,2)随机生成一个数对应索引,将剩余的3张牌进行分配.故完成扑克发牌
源代码
import random color=['♠','♣','♥','♦'] numbers=['A','2','3','4','5','6','7','8','9','10','J','Q','K'] puke=[i+k for i in color for k in numbers] puke.extend(['大王','小王']) def deal(puke:list): lis=list() for i in range(3): lis.append(random.sample(puke,17)) for k in lis[i]:puke.remove(k) else: lis[random.randint(0,2)].extend(puke) return lis [print('player:'+str(i)) for i in deal(puke)]
学生成绩管理系统
功能
1、添加学生信息
2、删除学生信息
3、修改学生信息
4、查询学生信息
5、获取所有学生信息
6、退出系统
编程思路
1、创建列表作为学生系统的总数据管理。定义字典来储存每一组学生。
2、使用while循环不断问讯实现控制台交互
3、使用1-6的选择模式进行相关系统操作,不同操作对应不同的类中函数
4、所有操作都围绕列表、和字典进行实现
stu_msg=[] while 1: print(''' 1、添加学生成绩 2、删除学生成绩 3、修改学生成绩 4、查询学生成绩 5、获取学生成绩 6、退出 ''') n=input("请输入你的选择:") if n=='1': stu_msg.append({"id":input('请输入要录入的学生学号:'), "name":input('姓名:'), "math":input('数学:'),"english": input('英语:'), "python":input('python:')}) elif n=='2': id=input("你要删除的id:") for index in range(len(stu_msg)): if id == stu_msg[index]['id']: del stu_msg[index] print('删除成功') break else: print("没有该学生") elif n == '3': id = input("你要修改的id:") for stu in stu_msg: if id == stu['id']: print(stu) stu.update({"name":input('姓名:'), "math":input('数学:'),"english": input('英语:'), "python":input('python:')}) print('修改成功') break else: print("没有该学生") elif n == '4': id = input("你要查询的id:") for stu in stu_msg: if id == stu['id']: print(stu) break else: print("没有该学生") elif n == '5': for i in stu_msg: print(i) elif n == '6': break else: print('您输入有误,请重新输入') continue print('成功退出')