python_fullstack基础(二)

来源:互联网 发布:养猫还是养狗 知乎 编辑:程序博客网 时间:2024/06/07 12:24

python_fullstack基础(二)

一、变量

1、什么是变量

变量:把程序运行的中间结果临时存放在内存中,以便后续程序进行调用

2、变量声明

#!/usr/bin/env python# _*_ coding: utf-8 _*_name = "yang"

上述代码声明了一个变量,变量名为: name,变量name的值为:”taibai”

3、变量的作用

作用:昵称,其代指内存里某个地址中保存的内容

这里写图片描述

4、变量定义规则

  • 变量名只能是 字母、数字或下划线的任意组合
  • 变量名的第一个字符不能是数字
  • 以下关键字不能声明为变量名
    [‘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’]
  • 变量的定义要具有可描述性。

定义变量不好的方式举例

  1. 变量名为中文、拼音
  2. 变量名过长
  3. 变量名词不达意

5、推荐定义方式

#驼峰体AgeOfOldboy = 56NumberOfStudents = 80#下划线age_of_oldboy = 56number_of_students = 80

二、常量

常量即指不变的量,如 pi≈3.1415926 , 或在程序运行过程中不会改变的量

举例,假如老男孩老师的年龄会变,那这就是个变量,但在一些情况下,他的年龄不会变了,那就是常量。在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代表常量
AGE_OF_OLDBOY = 56

三、注释

1、作用:方便自己方便他人理解代码。

2、种类

# 单行注释:##多行注释:'''被注释内容'''  """被注释内容"""

四、用户交互

#!/usr/bin/env python# _*_ encoding: utf-8 _*_# 将用户输入的内容赋值给 name 变量name = input("请输入用户名:")# 打印输入的内容print(name)

需要说明的几点:

1. input后系统会等待用户输入

2. 将你输入的内容赋值给了前面变量。

3. input出来的数据类型全部是str

五、基础数据类型初识

1、数字:int 12,3,45

+ - * / ** % 取余数字符串转化成数字:int(str) 条件:str必须是数字组成的。数字转化成字符串:str(int)

PS· type():用来查看变量的数据类型

2、字符串:str,python当中凡是用引号引起来的都是字符串。

可相加:字符串的拼接。可相乘:str * int

3、bool:布尔值

True False

六、流程控制之if

1、作用:用于进行条件判断,根据不同条件进行分支操作

2、种类:

①单分支

if 条件:    满足条件后要执行的代码

②双分支

if 条件:    满足条件执行代码else:    if条件不满足就走这段

③多分支

if 条件:    满足条件执行代码elif 条件:    上面的条件不满足就走这个elif 条件:    上面的条件不满足就走这个elif 条件:    上面的条件不满足就走这个    else:    上面所有的条件不满足就走这段

七、流程控制之while循环

1、基本循环

while 条件:    # 循环体    # 如果条件为真,那么循环体则执行    # 如果条件为假,那么循环体不执行

2、循环中止语句

  1. break用于完全结束一个循环,跳出循环体执行循环后面的语句
  2. continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环
  3. 与其它语言else 一般只与if 搭配不同,在Python 中还有个while …else 语句,while 后面的else 作用是指,当while 循环正常执行完,中间没有被break 中止的话,就会执行else后面的语句

①break举例

count = 0while count <= 100 : #只要count<=100就不断执行下面的代码    print("loop ", count)    if count == 5:        break    count +=1 #每执行一次,就把count+1,要不然就变成死循环啦,因为count一直是0print("-----out of while loop ------")

输出

loop  0loop  1loop  2loop  3loop  4loop  5-----out of while loop ------

②continue举例

count = 0while count <= 100 :     count += 1    if count > 5 and count < 95: #只要count在6-94之间,就不走下面的print语句,直接进入下一次loop        continue     print("loop ", count)print("-----out of while loop ------")

输出

loop  1loop  2loop  3loop  4loop  5loop  95loop  96loop  97loop  98loop  99loop  100loop  101-----out of while loop ------

③while…else…举例

count = 0while count <= 5 :    count += 1    print("Loop",count)else:    print("循环正常执行完啦")print("-----out of while loop ------")

输出

Loop 1Loop 2Loop 3Loop 4Loop 5Loop 6循环正常执行完啦-----out of while loop ------

如果执行过程中被break啦,就不会执行else的语句啦

count = 0while count <= 5 :    count += 1    if count == 3:break    print("Loop",count)else:    print("循环正常执行完啦")print("-----out of while loop ------")

输出

Loop 1Loop 2-----out of while loop ------

八、格式化输出

语法:

  • % ——占位符
  • s ——表示占位的是str数据类型的变量
  • d ——表示占位的是digital数据类型的变量
name = input('请输入姓名:')age = input('请输入年龄:')job = input('请输入工作:')hobbie = input('你的爱好:')msg = '''------------ info of %s -----------Name  : %sAge   : %djob   : %sHobbie: %s------------- end -----------------''' %(name,name,int(age),job,hobbie)print(msg)

输出

请输入姓名:yang请输入年龄:18请输入工作:engineer你的爱好:coding------------ info of yang -----------Name  : yangAge   : 18job   : engineerHobbie: coding------------- end -----------------

九、初识编码

python2解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),而python3对内容进行编码的默认为utf-8。

① ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)

是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。

显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

② Unicode(统一码、万国码、单一码)

是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多

③ UTF-8

是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存

总结

ASCII码:8位二进制数表示特殊符号、英文字母大小写
发展
Unicode:最少由16位二进制数表示字符和符号
升级
utf-8:不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存

这里写图片描述

十、基本运算符

1、运算符

计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算

2、算数运算

# 算数运算a = 10b = 30print(a + b) # 两变量相加print(a - b) # 得到负数或者是一个数减去另一个数print(a * b) # 两个数相乘或者是返回一个被重复若干次的字符串print(a / b) # 两个数相除print(a % b) # 取余-返回除法的余数print(a ** b) # 返回x的y次幂print(a // b) # 返回商的整数部分

输出

40-203000.33333333333333331010000000000000000000000000000000

3、比较运算

# 比较运算a = 10b = 30# 所有运算符返回1表示真,返回0表示假,这分别于特殊的变量True和False等于,注意这些变量名单大写print(a == b) # 等于-比较对象是否相等print(a != b) # 不等于-比较对象是否不相等# print(a <> b) # 不等于-比较对象是否不相等,python3.5之后的版本已经不支持,统一用!=代替print(a > b) # 大于-返回x是否大于yprint(a < b) # 小于-返回x是否小于yprint(a >= b) # 大于等于-返回x是否大于等于yprint(a <= b) # 小于等于-返回x是否小于等于y

输出

FalseTrueFalseTrueFalseTrue

4、赋值运算

# 赋值运算a = 0b = 30a = b # 简单的赋值运算print(a)a += b # 加法赋值运算print(a)a -= b # 减法赋值运算print(a)a *= b # 乘法赋值运算print(a)a /= b # 除法赋值运算print()a %= b # 取余赋值运算print(a)a **= b # 乘方赋值运算print(a)a //= b # 取整赋值运算print(a)

输出

# 提示:务必单独运算每个运算符,不然结果会受到之前结果的影响3030-3000.0000

5、逻辑运算

优先级:() > not > and > or

  • not:布尔‘非’,如果x为True,返回False,反之亦然
  • and:布尔‘与’,如果x为False,x and y返回True,否则返回y的计算值
  • or:布尔‘或’,如果x为True,x or y返回True,否则返回y的计算值

6、逻辑运算(高级)

  • 其中x,y是数值
  • x or y , x为真,值就是x,x为假,值是y
  • x and y, x为真,值是y,x为假,值是x
    这里写图片描述
# 思考例题print(2 or 1 < 3)# 2print(3 > 1 or 2 and 2)# 2

十一、作业重点回顾

1、写代码:计算 1 - 2 + 3 … + 99 中除了88以外所有数的总和?

count = 1sum = 0while count < 100:    if count % 2 != 0:        sum += count    elif count % 2 == 0:        if count == 88:            # pass  #此处可以用pass替代下面两行            count += 1            continue        else:            sum -= count    count += 1print(sum)

★ 注意:两个if与if…elif…的区别,如果是两个if,则在判断完第一个if之后后面的if也会进行判断,而if…elif…是进行多选一判断

# 此题中,当count为88时,首先执行第一个if,之后依然会判断第二个ifcount = 1sum = 0while count < 100:    if count == 88:        pass    if count % 2 == 0:        sum -= count    elif count % 2 != 0:        sum += count    count += 1print(sum)

2、写代码:计算 1 - 2 + 3 … - 99 中除了88以外所有数的总和?

# 这道题与第1题的却别在于99这个元素的符号,上题中比较简单,即偶数88的符号应该为负号,在除去88的同时将其的负号也一同除去了;而此题中则只是将偶数88除去,负号依然保留count = 0symbol = -1sum = 0while count < 99:    count += 1    if count == 88:        continue    else:        symbol = -symbol        sum = sum + count * symbolprint(sum)

3、⽤户登陆(三次输错机会)且每次输错误时显示剩余错误次数(提示:使⽤字符串格式化)

count = 3while count > 0:    username = input('请输入用户名:\n>>>').strip()    password = input('请输入密码:\n>>>').strip()    if username == 'admin' and password == '123':        success_msg = '''--------------------------------------------------------                       欢迎您 %s--------------------------------------------------------''' % (username)        print(success_msg)        break    else:        count -= 1        failed_msg = '''--------------------------------------------------------对不起,您输入的用户名:%s 或 密码:%s 有误,请重新输入!            您还有剩余错误次数:%s 次!--------------------------------------------------------''' % (username, password, count)        print(failed_msg)

4、⽤户登陆(三次输错机会)且每次输错误时显示剩余错误次数,同时用户输入超过3次错误时询问是否继续尝试,是则让用户继续尝试登陆,并在最终提示用户输入太多次(提示:使⽤字符串格式化)

count = 3while count > 0:    username = input('please input username:\n>>>').strip()    password = input('please input password:\n>>>').strip()    if username == 'admin' and password == '123':        print('''        用户 %s 登陆成功!欢迎您!        ''' % (username))        break    else:        count -= 1        if count == 0:            is_continue = input('对不起,您输入错误的次数超过3次,是否继续尝试(Y/N)?\n>>>').strip()            if is_continue.lower() == 'y':                count = 3        else:            print('''        对不起,您输入的用户名或密码错误!        您还有 %d 次机会尝试!        ''' % (count))else:    print('您尝试的次数过多,请考虑是否更换用户名或密码,谢谢!')

5、看代码书写结果: a= 12 & 127 ,求a的输出值

'''此题考查位运算相关知识:运算规则参加运算的两个数相&,即按二进位进行“与”运算,如果两个相应的二进位都为1,则该位的结# 果值为1,否则为0,即:0&0=0,0&1=0,1&0=0,1&1=1。所以,此题中:bin(12) = 00001100,bin(127) = 01111111  0000110001111111---------00001100所以答案为:00001100 => 12'''a= 12 & 127print(12)>>> 12

6、Unicode、utf-8、GBK,每个编码英文、中文分别用几个字节表示?

编码方式 英文 中文 ASCII 8位(1字节) 无 UNICODE 16位(2字节) 16位(2字节)->生僻字用32位(4字节) UTF-8 8位(1字节) 24位(3字节) GBK 8位(1字节) 16位(2字节)
原创粉丝点击