python基础(一)
python安装
1.下载
2. 安装,记得添加环境变量,之后就是下一步下一步
运行第一个python代码
变量/常量/注释
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)
变量只能指向数据,不能指向变量
答案: 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 循环的基本原理
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打印1-100的所有数字num = 1 while num < 101: print(num) num += 1
for循环
# 第一中用法:s = "这是一个天大的理想" # 把s的每个字符一个一个打印出来 for i in s: print(i) 答案: 这 是 一 个 天 大 的 理 想# 第二种用法: 嵌套ifs = "这是一个天大的理想"
for i in s:
print(i)
if i == "天":
break答案:这
是
一
个
天# 第三种用法: for elses = "这是一个天大的理想"
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.
str和bytes数据类型的区别
区别 | str | bytes |
称呼 | 文字文本 | 字节文本 |
表示 | ‘’ “” .. | b’’ b”””.. |
编码 | Unicode | 非Unicode |
# 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 --------------