python基础(一)

python安装

1.下载

image

image

2. 安装,记得添加环境变量,之后就是下一步下一步

image

运行第一个python代码

image

变量/常量/注释

1.变量名只能是字母/数字或者下划线

2.变量名的第一个字符不能是数字

3.变量名不能是关键字

4.变量的定义要具有可描述性    name    sex

5.不能使用中文

6.不能过长

推荐:驼峰体 ,

>>> x = 1+2+3+4+5
>>> x
15
>>> y = x*3/2
>>> y
22.5
>>> z = (y+100) /24
>>> z
5.104166666666667
>>>

变量练习

x8 = 100            # True
b_ = 12             # True
4g = 32             # False    # 不能数字开头
_  =  11            # True
*r = 12             # False    # 不是数字、字符、下划线
r3t4 = 10           # True
t_  = 66            # True

变量的小高级

age1 = 18
age2 = age1
age3 = age2
age2 = 12
print(age1,age2,age3)

image

变量只能指向数据,不能指向变量

答案:  18     12     18


常量

生活中一直不变的:改变 , Π,性别,身份证号码,历史发生的事

常量:一直不变的量,python中没有真正的常量,为了迎合其他语言的口味,全部大写的变量称为常量。

用法:将常量全部大写,放在文件的最上面

设置一些不变的量:身份证号码,id


注释

why: 文言文中对一些晦涩难懂的成语或者经典的出处  解释说明。便于你理解

how:

单行注释:  #

多行注释:   ”””   代码块  ”””

where:

难以理解的代码后面,加注释。

函数,类,文件都需要注释

基础数据类型初识

why:

人类接触一些信息会做出一些比较精准的划分。数字,汉文,英文…


我们告诉计算机:
       	100,102,就是数字(int), + – * / …
 	'中国','hello','沙维杜卡'文字,: 记录信息,描述信息等
	[1,2,3,'中国']列表,他能做他相应的一些操作即可
	... python 的基础数据类型。


数字 int (整型): 1 , 3, 5 , …

取值范围:

            32位机器:-2**31 ~ 2**31-1  

             64为机器:-2**63 ~ 2**63-1

i = 100
i1 = 2
i2 = i * i1
print(i2)

答案:    200


字符串 str:凡是用引号引起来的数据称为字符串

'',"",""" """"
字符串拼接(字符串相加)

字符串与数字相乘


布尔值  bool   :True    False

type用法


input

username = input('请输入用户名:')
password = input('请输入密码:')
print(username)
print(password)



流程控制语句

if语句

1.单独if 

if  条件:
    代码块

2.  if  else  (二选一)

if  满足条件:
    代码块
else:
    代码块

3. if   elif    else (多选)

if 条件1:
    代码块
elif 条件2:
    代码块
else:
    代码块

4. 嵌套的if

code = "password"
input_code = input('请输入验证码:')
username = input("请输入用户名:")
password = input("请输入密码:")
if code = input_code:
    if username = "alex" and "password" = "sb":
        print("登录成功")
    else:
        print("用户名和密码不正确!!!")
else:
    print("验证码错误")


while循环

why:大气循环,吃饭,上课,睡觉,日复一日,歌曲列表循环,程序中:ATM机

1、结构

while 条件:
    循环体

2、while 无限循环

while True:
    print("第一行")
    print("第二行")
    print("第三行")
    print("第四行")

3、while 循环的基本原理

image

4、结束条件

       4.1:改变条件

flag = True
while flag:
    print("第一行")
    print("第二行")
    print("第三行")
    flag = False
    print("第四行")

答案:
    第一行
    第二行
    第三行
    第四行

       4.2:break

while flag:
    print("第一行")
    print("第二行")
    print("第三行")
    break
    print("第四行")


答案:
    第一行
    第二行
    第三行

练习题:

while  else


count = 1
while count < 4:
num = int(input("请输入一个数字:"))
if num < 66:
print("你猜的数字太小了")
elif num > 66:
print("你猜的数字太大了")
else:
print("恭喜你,猜对了")
break
count += 1
else:
print("你真笨")



flag = True
num = 1
while flag:
     if num>100:
         break
     print(num)
     num += 1

方法一:
num = 1
while num < 101:
    print(num)
    num += 1

方法二:
flag = True
num = 1
while flag:
    print(num)
    if num>99:
        flag = False
    num += 1

方法三:
flag = True
num = 1
while flag:
    if num>100:
        break
    print(nu
num = 1
while num < 101:
    print(num)
    num += 1
打印1-100的所有数字

for循环

# 第一中用法:
s = "这是一个天大的理想"
#  把s的每个字符一个一个打印出来
for i in s:
    print(i)

答案:
这
是
一
个
天
大
的
理
想

# 第二种用法:  嵌套if
s = "这是一个天大的理想"
for i in s:
print(i)
if i == "天":
break
答案:






# 第三种用法:  for else
s = "这是一个天大的理想"

for i in s:
print(i)
else:
print("吗?")
答案:










吗?


运算符

1、算数运算符

+  –  *  /   %    **    //

2、赋值运算符

=    +=   -=     *=   /=    **=   …

3、逻辑运算符

and    or      no

优先级: 在没有()的情况下,no>and>or,同一优先级从左到右依次计算

情况1:两边都是比较运算

print(2>1 and 3<4 or 4>5 and 2<1)

print(True or False)

答案: True

情况2:两边都是整数( x or y , x为真,返回x,x为假,值为y)   注意:非零即True

print(1 or 2)
print(3 or 2)
print(4 or 2)
print(-1 or 2)
print(0 or 2)
答案:

1
3
4
-1
2


情况3:思考题

print(1>2 and 3 or 6)         答案:6

4、成员运算符

not in 和 in

s = "这是一个天大的理想"
print("" in s)                   # True
print("江湖" in s)                 # False
print("这是" in s)                 # True
print("这一"   in s)               # False
print("江湖" not in s)             # True


5、据类型转换

# str ---> int :字符串转数字

a = "0100"
a_num = int(a)
print(a_num)

答案:100

# int  -----> str

a = 200
a_str = str(a)
print(a_str,type(a_str))

答案:200 <class 'str'>

# int ---->bool

a = 100
a_bool = bool(a)
print(a_bool)

答案:True

# bool --->int

a = True
a_num = int(a)
print(a_num)

答案:1

# str ---> bool    # 非空就为真
""     False
" "     True
"daf"     True

所有数据都可以转化成bool值
转化成bool值为False的数据类型有:
'', 0, (), {}, [], set(), None
其他都为True

# str --- > list
# a = 'abcdse'
# l1 = list(a)
# print(l1) # ['a', 'b', 'c', 'd', 's', 'e']

# list -----> str
# l2 = [1,3,7]
# s2 = str(l2)
# print(s2,type(s2)) # [1, 3, 7] <class 'str'>

# l2 = [1,3,7,'zlex',[11,22]]
# s3 = ''
# for i in l2:
# s3 += str(i)
# print(s3) # 137zlex[11, 22]

# str -- >  set
# l2 = [1,3,7,3,8,3,'zlex']
# set1 = set(l2) # set直接转l2,必须保证l2里面元素都是不可变数据类型,否则会报错
# print(set1) # {1, 3, 7, 8, 'zlex'}

# set ---> list
set1 = {1,2,3}
l1 = list(set1)
print(l1) # [1, 2, 3]


# str ---> bytes
s1 = '中国梦'
print(s1.encode('utf-8')) # b'\xe4\xb8\xad\xe5\x9b\xbd\xe6\xa2\xa6'

# bytes ----> str
b = b'\xe4\xb8\xad\xe5\x9b\xbd\xe6\xa2\xa6'
print(b.decode('utf-8')) # 中国梦

字符串格式

例如:

name = input("请输入用户名:")
age = input("请输入年龄:")

msg = '''
    --------  %s的自我介绍 ------------
    大家好,我的名字叫%s,今年%s岁,很高兴认识大家
    --------   end  --------------------
'''%(name,name,age)
print(msg)



答案:

请输入用户名:alex
请输入年龄:18

    --------  alex的自我介绍 ------------
     大家好,我的名字叫alex,今年18岁,很高兴认识大家
     --------   end  --------------------

编码

ASCLL码:字母、数字、特殊字符

GBK:   字母、数字、特殊字符和中文,字母、数字、特殊字符占1个字节,一个中文占2个字节

unicode: 万国码,现在的万国码一个字母也是4个字节,一个中文也是4个字节,太浪费

utf-8:  字母、数字、特殊字符和中文,字母、数字、特殊字符占1个字节,一个中文占3字节,欧洲文字2个字节

'中国138eh'    gbk           9个字节
'中国138eh'    utf-8         11个字节

单位转换

8bit = 1byte
1024byte = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB
1024TB = 1EB
1024EB = 1ZB
1024ZB = 1YB
1024YB = 1NB
1024NB = 1DB  

20MB   --->     (83886080)bit

1、所有的编码(除去Unicode)之间不能互相识别

2、数据在内存中全部是以Unicode编码的,但是当你的数据用于网络传输或者存储到硬盘中,必须是以非Unicode编码(utf-8,gbk等)

bytes存在的原因:在计算机内存中,统一使用Unicode编码,当需要将数据保存到硬盘或者需要网络传输的时候,就转换为非Unicode编码比如:UTF-8编码。

bytes是一种数据类型,是python的基础数据类型,在内存中所有的数据必须是Unicode编码存在,除去bytes.

image

str和bytes数据类型的区别

区别 str bytes
称呼 文字文本 字节文本
表示‘’ “” ..b’’  b”””..
编码Unicode非Unicode


image


# str ---> bytes
# s1 = '中国梦'
# print(s1.encode('utf-8'))       # b'\xe4\xb8\xad\xe5\x9b\xbd\xe6\xa2\xa6'
#
# # bytes ----> str
# b = b'\xe4\xb8\xad\xe5\x9b\xbd\xe6\xa2\xa6'
# print(b.decode('utf-8'))        # 中国梦

bytes:

编码转换:

英文:
str ”hello”
   内存中的编码:Unicode
   表现形式:’hello’
bytes:
   内存的编码:非Unicode
   表现形式:b’hello’
中文:
str ”中”
   内存中的编码:Unicode
   表现形式:”中”
bytes:
   内存中的编码方式:非Unicode   # utf-8
   表现形式:b'\xe4\xb8\xad'


# gbk的编码转换成成utf8
b1 = b'\xd6\xd0\xb9\xfa\xd0\xc4'
s1 = b1.decode('gbk')
print(s1)          # 中国心

b2 = s1.encode('utf-8')
print(b2)          # b'\xe4\xb8\xad\xe5\x9b\xbd\xe5\xbf\x83'


练习题




# 看代码写结果
# v1 = [1,2,3,4,5]
# v2 = [v1,v1,v1]
# v1.append(6)
# print(v1) # [1,2,3,4,5,6]
# print(v2) # [[1,2,3,4,5,6],[1,2,3,4,5,6],[1,2,3,4,5,6]]


# 看代码写结果
# import copy
# v1 = 'alex'
# v2 = copy.copy(v1)
# v3 = copy.deepcopy(v1)
# print(v1 is v2) # True
# print(v1 is v3) # True

# 看代码写结果
import copy
v1 = [1,2,3,4,[11,22]]
v2 = copy.copy(v1)
v3 = copy.deepcopy(v1)

print(v1[-1] is v2[-1]) #True
print(v1[-1] is v3[-1]) # False
print(v2[-1] is v3[-1]) # False

车牌区域划分,现给以下车牌的信息,分析出各省的车牌持有量?
cars = ['鲁A32444','鲁B12333','京B8989M','黑C49678','黑C46555','沪B25041']
locals = {'沪':'上海','黑':"黑龙江","":"山东",'鄂':'湖北','湘':'湖南','京':'北京'}
# 结果:{'黑龙江':2,'山东':1,'北京':1}
ret = {}
for car in cars:
    if car[0] in locals.keys():
        if car[0] not in ret.keys():
            ret[car[0]] = 1
        else:
            ret[car[0]] += 1
print(ret)                        # {'鲁': 2, '京': 1, '黑': 2, '沪': 1}
ret1 = {}
for key,val in ret.items():
    ret1[locals[key]] = val
print(ret1)              # {'山东': 2, '北京': 1, '黑龙江': 2, '上海': 1}



-------------- end --------------

posted @ 2020-03-29 19:38  全爱国  阅读(244)  评论(0编辑  收藏  举报