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 = 56
NumberOfStudents = 80

#下划线
age_of_oldboy = 56
number_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 = 0
while count <= 100 : #只要count<=100就不断执行下面的代码
    print("loop ", count)
    if count == 5:
        break
    count +=1 #每执行一次,就把count+1,要不然就变成死循环啦,因为count一直是0

print("-----out of while loop ------")

输出

loop  0
loop  1
loop  2
loop  3
loop  4
loop  5
-----out of while loop ------
②continue举例
count = 0
while 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  1
loop  2
loop  3
loop  4
loop  5
loop  95
loop  96
loop  97
loop  98
loop  99
loop  100
loop  101
-----out of while loop ------
③while…else…举例
count = 0
while count <= 5 :
    count += 1
    print("Loop",count)

else:
    print("循环正常执行完啦")
print("-----out of while loop ------")

输出

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

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

count = 0
while count <= 5 :
    count += 1
    if count == 3:break
    print("Loop",count)

else:
    print("循环正常执行完啦")
print("-----out of while loop ------")

输出

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

八、格式化输出

语法:

  • % ——占位符
  • s ——表示占位的是str数据类型的变量
  • d ——表示占位的是digital数据类型的变量
name = input('请输入姓名:')
age = input('请输入年龄:')
job = input('请输入工作:')
hobbie = input('你的爱好:')

msg = '''------------ info of %s -----------
Name  : %s
Age   : %d
job   : %s
Hobbie: %s
------------- end -----------------''' %(name,name,int(age),job,hobbie)
print(msg)

输出

请输入姓名:yang
请输入年龄:18
请输入工作:engineer
你的爱好:coding
------------ info of yang -----------
Name  : yang
Age   : 18
job   : engineer
Hobbie: 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 = 10
b = 30

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

输出

40
-20
300
0.3333333333333333
10
1000000000000000000000000000000
0

3、比较运算

# 比较运算
a = 10
b = 30

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

输出

False
True
False
True
False
True

4、赋值运算

# 赋值运算
a = 0
b = 30

a = 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)

输出

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

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)
# 2
print(3 > 1 or 2 and 2)
# 2

十一、作业重点回顾

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

count = 1
sum = 0
while count < 100:
    if count % 2 != 0:
        sum += count
    elif count % 2 == 0:
        if count == 88:
            # pass  #此处可以用pass替代下面两行
            count += 1
            continue
        else:
            sum -= count
    count += 1
print(sum)
★ 注意:两个if与if…elif…的区别,如果是两个if,则在判断完第一个if之后后面的if也会进行判断,而if…elif…是进行多选一判断
# 此题中,当count为88时,首先执行第一个if,之后依然会判断第二个if

count = 1
sum = 0
while count < 100:
    if count == 88:
        pass
    if count % 2 == 0:
        sum -= count
    elif count % 2 != 0:
        sum += count

    count += 1
print(sum)

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

# 这道题与第1题的却别在于99这个元素的符号,上题中比较简单,即偶数88的符号应该为负号,在除去88的同时将其的负号也一同除去了;而此题中则只是将偶数88除去,负号依然保留

count = 0
symbol = -1
sum = 0
while count < 99:
    count += 1
    if count == 88:
        continue
    else:
        symbol = -symbol
        sum = sum + count * symbol
print(sum)

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

count = 3
while 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 = 3
while 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  

00001100
01111111
---------
00001100

所以答案为:00001100 => 12
'''

a= 12 & 127
print(12)
>>> 12

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

编码方式英文中文
ASCII8位(1字节)
UNICODE16位(2字节)16位(2字节)->生僻字用32位(4字节)
UTF-88位(1字节)24位(3字节)
GBK8位(1字节)16位(2字节)
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐