注释、变量、常量、基本数据类型、输入输出、基本运算符、流程控制 02
一、注释
多行注释 """ 注释1 注释2 注释3 """ 单行注释 # 注释的内容 # print("hello") # 注释的内容 # ctrl+d、ctrl+? # print("hello1") # print("hello2") # print("hello3") # print("hello4") # print("hello5") # print("hello6")
二、变量
""" 1、什么是变量 量:记录的事物的状态 变:事物的状态是可以发生变化的 2、为何要有变量 为了让计算机具备人类的记忆事物状态的能力,并且状态是可以发生改变的 3、如何用变量 原则:先定义、后引用 """ # 一、定义变量 # name = "egon" # age = 18 # gender = "male" # 1.1 变量的定义分为三大组成部分 # (1)变量名:是用来访问值的 # (2)赋值符号:负责把变量值的内存地址绑定给变量名 # (3)变量值:是我们记录的事物的状态,即数据 # 1.2 变量名的命名原则/大前提:变量名的命名应该有见名知意的效果 # 1.3 变量名的命名规范: # (1). 变量名只能是 字母、数字或下划线的任意组合 # (2) 变量名的第一个字符不能是数字 # (3) 关键字不能声明为变量名['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield' # print=3333 # print(111) # name1="egon" # name2="lxx" # gender_of_lxx = "male" # _=3333333 # _x=3333333 # print(_) # print(_x) # 1.4 变量名的命名风格 # (1)驼峰体 AgeOfOldboy = 73 # (2)纯小写+下划线(变量名的名推荐该风格) age_of_oldboy = 73 # 1.5 变量值:两大特征 # (1)id:反映的是值的内存地址 # (2)type:变量值的类型 x = 10 y=x # print(id(x)) # print(x is y) # 如果结果为True,证明id是一样的 # print(x == y) # # True # False # None # print(type(x)) # 1.6 垃圾回收机制GC:引用计数、标记/清除、分代回收 # 详见:https://zhuanlan.zhihu.com/p/108683483 x = 10 # 值10的引用计数为1 y = x # 值10的引用计数为2 y = 20 # 值10的引用计数为1 del x # 值10的引用计数为0 # 二、引用变量 # print(name) # 强调1:变量名放在等号的左边代表赋值操作 # 强调2:变量名没有放在等号的左边代表取值操作 # age = 18 # # age # age = age + 1 # print(age) # print("hello" # xxx=111 # xxx
三、常量
# 规定变量名全为大写代表常量 AGE = 18 AGE = 19 print(AGE)
四、基本数据类型
""" 基本数据类型=》变量值的类型 """ # 一:数字类型 # 1:整型int # 作用:记录年龄、个数、年份、等级等 # 定义: # age = 18 # 使用: # res=age * 10 # print(res) # print(age * 10) # print(age > 16) # 2:浮点型float # 作用:记录身高、体重、薪资等 # 定义: # salary = 3.1 # print(type(salary)) # 使用: # print(salary + 1) # print(3.1 + 1) # print(3.1 > 1) # 二:字符串类型str # 作用: 记录名字\性别\国籍等描述性质的状态 # 定义: 引号('',"",'''''',""" """)内包含一串字符 # s1='abc' # print(type(s1)) # 区别: # s2=""" # aaa # bbb # ccc # """ # print(type(s2)) # 注意1: 引号的嵌套 # print('my name is "egon"') # 注意2: 转义字符\n # print("m\ty na\nme is egon") # print("aaaa",end='') # print("bbbb",end='') # 注意3:原生字符串 # file_path="C:\aaa\new.txt" # file_path="C:\\aaa\\new.txt" # file_path=r"C:\aaa\new.txt" # print(file_path) # 使用: # name="egon" # print(name) # print("abc"+"defg") # print("abc"*10) # print("="*50) # print("hello") # print("="*50) # 三 列表类型list=>索引对应值,索引反映的是位置/顺序 # 作用: 按照顺序把多个值放在一起 # 定义: 在[]内用逗号分隔开多个任意类型的值 # 0 1 2 3 # l1 = [111,3.3,"aaa",[222,333]] # 使用: # print(l1[0]) # print(l1[-1]) # print(l1[100]) # 索引超出范围,报错 # print(l1[3][1]) # names=["张三", "李四","王五"] # print(names[0]) # print(names[1]) # students_info=[ # ["egon1",18,['read','music']], # ["egon2",19,['play','music']], # ["egon3",20,['movie','music']], # ] # print(students_info[1][2][1]) # 第二个学生的第二个爱好 # 四 字典dict=》key对应值,称之为map类型/映射类型 # 作用:按照key:value的方式把多个value放在一起, # 其中value可以是任意类型 # 而key通常是字符串类型,是用来描述value的属性 # 定义:{}内用逗号分隔开多key:value的值 # d = {"k1":111,'k2':3.1,"k3":"aaa","k4":[222,3333],"k5":{"kk":4444}} # 使用: # print(d["k1"]) # print(d["k4"][1]) # print(d["k5"]["kk"]) # info={"name":"egon","age":18,"gender":"male","level":10} # print(info["level"]) # names=["xxx","yyy"] # # print(names[0]) # print(names[1]) # infos=['egon',18,'male'] # infos[0] # studetns_info=[ # {"name":'egon1',"age":18,'gender':"male"}, # {"name":'egon2',"age":19,'gender':"male"}, # {"name":'egon3',"age":20,'gender':"male"}, # ] # print(studetns_info[1]['name'] # ) # 五:布尔类型True与False # 作用:主要用于判断 # 定义:如何得到布尔值 # 1、显式的布尔值 # 1.1、直接定义 # x = True # y = False # 1.2、通过比较运算得到 # print(10 > 3) # print(10 >= 3) # print("egon" == "egon") # 2、隐式的布尔值 # 所有类型的变量值都具有隐式的布尔值,前提是它们得放到条件中 # 其中0、None、空三者隐式的布尔值为False,其他都为True # if []: # print('Hello')
五、输入输出
# 1、python3中的input会把用户输入的任意内容都存成str类型 # print('start...') # name=input("请输入您的账号: ") # "123" # print(name == "egon") # print('end...',name,type(name)) # age = input("your age: ") # age="19" # age=int(age) # print("19" > 18) # 2、 # print("a",'b','c','d',end='\n') # res="my name is %s my age is %s" % ("egon1","19") # res="my name is %s my age is %d" % ("egon1",19) # res="my name is %s my age is %s" % ("egon1",[1,2,3]) # print(res)
六、基本运算符
# 1、算数运算符 # print(10 / 3) # print(10 // 3) # print(10 % 3) # print(10 ** 3) # 2、比较运算 # 2.1 关于相等性的比较所有数据类型可以混用 # print("egon" == 10) # print("egon" != 10) # print([111,222] == [111,222]) # print([111,222] == [222,111]) # 2.2 > >= < <=主要用于数字类型 # print(10 > 10) # print(10 >= 10) # 了解:** "abcdef" # "abz" # print("abcdef" > "abz" ) # print(len("abcdef") > len("abz")) # l1=['abc',123,3.1] # l2=["az","aaa"] # l2=["abc","aaa"] # print(l1 > l2) # 3、赋值运算符 # age = 18 # 3.1 增量赋值 # age += 1 # age = age + 1 # print(age) # x = 10 # x %= 3 # x = x % 3 # print(x) # 3.2 链式赋值 # x = 10 # y=x # z=y # z = y = x = 10 # print(id(x)) # print(id(y)) # print(id(z)) # 3.3 交叉赋值 # x = 10 # y = 20 # temp=y # y=x # x=temp # x,y=y,x # print(x) # print(y) # 3.4 解压赋值 salaries=[11,22,33,44,55,66] # mon0=salaries[0] # mon1=salaries[1] # mon2=salaries[2] # mon3=salaries[3] # mon4=salaries[4] # mon5=salaries[5] # 强调:变量名的个数与值应该一一对应 # mon0,mon1,mon2,mon3,mon4,mon5=salaries # mon0,mon1,mon2,mon3,mon4,mon5,mon6=salaries # 多一个不行 # mon0,mon1,mon2,mon3,mon4=salaries # 少一个不行 # print(mon0) # print(mon1) # print(mon2) # print(mon3) # print(mon4) # print(mon5) # salaries=[11,22,33,44,55,66] # mon0,mon1,*_=salaries # print(mon0) # print(mon1) # print(_) # mon0,mon1,*_,mon_last=salaries # print(mon_last) # *_,x,y=salaries # print(x,y) # x,y,z={'k1':111,'k2':222,'k3':3333} # print(x,y,z) # x,y,z="hel" # print(x,y,z) # 4、逻辑运算符 # (1) not:对紧跟其后的那个条件的结果取反 # print(not True) # False # print(not 10 > 3) # False # print(not 0) # True # (2) and:用来连接左右两个条件,左右两个条件的结果都为True时,and的最终结果才为True # print(True and 10 > 3) # (3) or:用来连接左右两个条件,左右两个条件的结果但凡有一个True时,or的最终结果就为True # print(10 < 3 or 10 == 10) # ps:偷懒原则=》短路运算 # 条件1 and 条件2 and 条件3 # 条件1 or 条件2 or 条件3 # (4)优先级:not > and > or # res1 = 3>4 and 4>3 or not 1==3 and 'x' == 'x' or 3 >3 # print(res1) # res2 = (3>4 and 4>3) or (not 1==3 and 'x' == 'x') or 3 >3 # print(res2) # # res3 = 3 < 4 and (4>3 or not (1==3 and 'x' == 'x')) # print(res3) # 了解 # print(1 and "abc" and 333) # print(False and True or True) # print( 0 and 2 or 1)
七、流程控制之if判断
""" 案例: 接收用户输入的用户名 接收用户输入的密码 判断 输入的用户名 等于 正确的用户名 并且 输入的密码 等于 正确的密码: 告诉用户登录成功 否则: 告诉用户账号名或密码输入错误 if判断的完整的语法 if 条件1: 代码1 代码2 代码3 ... elif 条件2: 代码1 代码2 代码3 ... elif 条件3: 代码1 代码2 代码3 ... ...... else: 代码1 代码2 代码3 ... """ # 案例: # 如果:成绩>=90: # 优秀 # 如果 成绩>=80且<90: # 良好 # 如果 成绩>=70且<80: # 普通 # 其他情况: # 很差 # print('start....') # score = input('请输入你的成绩:') # score = int(score) # if score >= 90: # print('优秀') # elif score >= 80: # print('良好') # elif score >= 70: # print('普通') # else: # print("很差") # # print('end....') # 语法1: """ if 条件1: 代码1 代码2 代码3 ... """ # age = 19 # height = 1.9 # gender = "female" # is_beautiful = True # # if 18 < age < 26 and 1.6 < height < 1.8 and gender == "female" and is_beautiful: # print("开始表白。。。。") # # print('其他代码。。。') # 语法2: """ if 条件1: 代码1 代码2 代码3 ... else: 代码1 代码2 代码3 ... """ # age = 19 # height = 1.9 # gender = "female" # is_beautiful = True # # if 18 < age < 26 and 1.6 < height < 1.8 and gender == "female" and is_beautiful: # print("开始表白。。。。") # else: # print("你是个好人。。。") # # print('其他代码。。。') # # 语法3: """ if 条件1: 代码1 代码2 代码3 ... elif 条件2: 代码1 代码2 代码3 ... """ # 语法4:if判断是可以嵌套的 # 登录功能实现 # db_name = "egon" # db_pwd = "123" # # inp_name = input("please input your name: ") # inp_pwd = input("please input your password: ") # # if inp_name == db_name and inp_pwd == db_pwd: # print("用户登录成功") # else: # print("用户账号名或密码输入错误")
八、流程控制之while循环
""" while 条件: 代码1 代码2 代码3 ... """ # 1、基本使用 # print('start...') # count = 0 # while count < 5: # print(count) # count+=1 # print('end...') # """ start... 0 1 2 3 4 end... """ # 2、死循环 # while 1: # name=input(">>: ") # print(name) # 3、用户认证功能案例 # db_name = "egon" # db_pwd = "123" # # while True: # inp_name = input("please input your name: ") # inp_pwd = input("please input your password: ") # # if inp_name == db_name and inp_pwd == db_pwd: # print("用户登录成功") # else: # print("用户账号名或密码输入错误") # 4、结束while循环 # (1)把条件改成False # db_name = "egon" # db_pwd = "123" # # tag = True # while tag: # inp_name = input("please input your name: ") # inp_pwd = input("please input your password: ") # # if inp_name == db_name and inp_pwd == db_pwd: # print("用户登录成功") # tag = False # else: # print("用户账号名或密码输入错误") # # print('=============>') # (2) break会直接结束本层循环 # db_name = "egon" # db_pwd = "123" # # while True: # inp_name = input("please input your name: ") # inp_pwd = input("please input your password: ") # # if inp_name == db_name and inp_pwd == db_pwd: # print("用户登录成功") # break # else: # print("用户账号名或密码输入错误") # # print('=============>') # while True: # while True: # while True: # break # break # break # tag = True # while tag: # while tag: # while tag: # tag = False # 5、while循环的嵌套 # (1) break结束嵌套多层的while循环 # db_name = "egon" # db_pwd = "123" # # while True: # inp_name = input("please input your name: ") # inp_pwd = input("please input your password: ") # # if inp_name == db_name and inp_pwd == db_pwd: # print("用户登录成功") # while True: # print(""" # 0 退出 # 1 提现 # 2 转账 # """) # choice = input("请输入您的命令编号 ") # if choice == "0": # break # elif choice == "1": # print('===========>提现功能<============') # elif choice == "2": # print('===========>转账功能<============') # else: # print('===========>非法指令<============') # # break # else: # print("用户账号名或密码输入错误") # (2) tag = False # db_name = "egon" # db_pwd = "123" # # tag = True # while tag: # inp_name = input("please input your name: ") # inp_pwd = input("please input your password: ") # # if inp_name == db_name and inp_pwd == db_pwd: # print("用户登录成功") # while tag: # print(""" # 0 退出 # 1 提现 # 2 转账 # """) # choice = input("请输入您的命令编号 ") # if choice == "0": # tag = False # elif choice == "1": # print('===========>提现功能<============') # elif choice == "2": # print('===========>转账功能<============') # else: # print('===========>非法指令<============') # else: # print("用户账号名或密码输入错误") # 6、while+continue:continue会终止本次循环,直接进入下一次 # count = 0 # while count < 5: # if count == 3: # # break # # count+=1 # continue # 强调:与continue同一级别的后续代码永远都不会运行 # # count+=1 # print(count) # count+=1 # db_name = "egon" # db_pwd = "123" # # while True: # inp_name = input("please input your name: ") # inp_pwd = input("please input your password: ") # # if inp_name == db_name and inp_pwd == db_pwd: # print("用户登录成功") # break # else: # print("用户账号名或密码输入错误") # # continue # 此处不加continue也会进入下一次,不要画蛇添足 # 7、while+else # 如果while循环不是被break干掉的,那么while的结束都算正常死亡 count = 0 while count < 5: if count == 3: # count+=1 # continue break print(count) count+=1 else: print("else会在while循环正常死亡之后运行")