python 基础02 基本数据类型


今日学习

1.基本数据类型

2.与用户交互

3.格式化输出

4.诸多运算符

5.流程控制简介

基本数据类型

基本数据类型 作用 特点
列表(list) 能够存储多个数据 并且能够方便的获取整体或者局部 数据值可以是任意数据类型
字典(dict) 能够存储多个数据 并且能够方便的获取整体或者局部 并且数据key vlaue形式存在 字典取值:字典无法使用索引取值(因为字典是无序的) 可以使用按K取值。并且key不存在是会报错
布尔(bool) 用来表示事物是否可行 是否正确 是否合理 is 开头
使用频率最高的
程序中所有的数据类型都可以转成布尔值
布尔值为False的数据有 0 None 空字符串 空列表 空字典 …
除上述之外所有的数据对于的布尔值都是True
元组(tuple) 能够存储多个数据 并且能够方便的获取整体或者局部与列表的区别在于元组内数据值 不能”直接修改” 而列表可以
所以元组有一个小外号>>>:不可变的列表
一般用于存储一些只能看不能改的数据

1.数据类型之列表(list)

2.基本使用
	l1 = [1, 2, 3, 4, 5]
3.语言描述
	中括号括起来 内存可以存放多个数据值 数据值与数据值之间逗号隔开
	数据值可以是任意数据类型
    	l2 = [11, 11.11, 'jason', [11, 22, 33]]
  • 列表练习
#列表
#练习
#取出5555和88888
l2 = [11, 22, [111, 222, 333, [1111, 3333, 5555], 88888]]

print(l2[2][3][2])
5555

print(l2[2][4])
88888

2.数据类型之字典(dict)

基本使用
	info_dict = {'姓名': 'jason', '年龄': 18, '爱好': 'read'}
    按K取值
	 info_dict = {'姓名': 'jason', '年龄': 18, '爱好': 'read'}
    '''字典取值:字典无法使用索引取值(因为字典是无序的) 可以使用按K取值'''
    print(info_dict['姓名'])  # jason
    print(info_dict['年龄'])  # 18
    print(info_dict['家产'])  # K不存在直接报
  • 字典练习
#取出打印age字符
例:
data = {
    'name': 'jason',
    'others': [
        111,
        222,
        {
            'a1': '嘿嘿',
            'a2': '哈哈',
            'a3': [
                123,
                {
                    'name': 'jason1',
                    'age': 18
                }]}]}
思路
#print(data)
#print(data['others'])
#print(data['others'][2])

运行结果
#{'name': 'jason', 'others': [111, 222, {'a1': '嘿嘿', 'a2': '哈哈', 'a3': [123, {'name': 'jason1', 'age': 18}]}]}
#[111, 222, {'a1': '嘿嘿', 'a2': '哈哈', 'a3': [123, {'name': 'jason1', 'age': 18}]}]
#{'a1': '嘿嘿', 'a2': '哈哈', 'a3': [123, {'name': 'jason1', 'age': 18}]}


#最终打印命令
print(data['others'][2]['a3'][1]['age'])

18

3.基本类型之布尔(bool)

基本使用
	is_right = True  # 真 可以 正确
	is_delete = False  # 假 不可以 错误

4.基本数据类型之元组(tuple)

1.基本使用
	t1 = (111, 222, 333)
2.与列表对比	
	 l1 = [11, 22, 33]
    t1 = (11, 22, 33)
    # print(l1[0])
    # print(t1[0])
    # l1[0] = 'jason'  # 将列表索引0重新绑定数据值jason
    # print(l1)  # ['jason', 22, 33]
    t1[0] = 'tony'  # 将元组索引0重新绑定数据值tony  直接报错!!!
    print(t1)

用户交互

输入 input()
输出 print()

练习

username=input("请输入您的用户名:")
passwd=input("请输入您的密码:")
# 默认print功能有一个end参数,该参数的默认值为"/n"(代表换行),可以将end参数的值改成任意其它字符
print("aaaa",end='')
print("bbbb",end='&')
print("cccc",end='@')
#整体输出结果为:aaaabbbb&cccc@

格式化输出

格式化输出用到了占位符

%s 占位符 可以接受任意类型的值
%d 占位符 只能接受数字
print('亲爱的%s你好!你的%s月的花费是%d,余额是%d' %('tony',12,103,11))
亲爱的tony你好!你的12月的花费是103,余额是11

运算符

算数运算符

算数运算符 描述 示例
+ 5+3=8
5-3=2
* 5*3=15
/ 5*3=5/3
// 整除,只保留整数部分 5//3=1
% 取余 相除只返回余数 5%3=2
** 幂 一个数的n次方 5**3=125

例子

x = 10
#新手           #老手
x = x + 100  # x += 100 
x = x - 10   # x -= 10
x = x * 10   # x *= 10
x = x / 10   # x /= 10
ps:学习阶段还是能多敲就多敲!!!

比较运算符

比较运算符 描述 示例 True/fasle
== 等于; 两个对象相等返回true,不相等返回false 1==1 true
!= 不等于; 两个对象不相等返回true,相等返回false 1!=2 true
> 大于 2>1 true
>= 大于等于 2>=1 false
< 小于 1<2 true
<= 小于等于 1<=2 false

赋值运算符

python语法中除了有=号这种简单的赋值运算外,还支持增量赋值、链式赋值、交叉赋值、解压赋值,这些赋值运算符存在的意义都是为了让我们的代码看起来更加精简。我们以x=9,y=2为例先来介绍一下增量赋值

增量赋值

赋值运算符 描述 示例
= 简单赋值运算 x=10
+= 加法赋值运算 x+=1等于x=x+1
-= 减法赋值运算 x-=1等于x=x-1
*= 乘法赋值运算 x * =1等于x=x * 1
/ 除法赋值运算 x/=1等于x=x/1
//= 取整除赋值运算 同上
%= 取余赋值运算 同上
**= 幂赋值运算 同上

链式赋值

如果我们把同一个值赋值给多个变量名,可以这么做

z=10
y=z
x=y
x,y,z
(10,10,10)

#链式赋值指的是可以用一行代码搞定这件事
x=y=z=10
x,y,z
(10,10,10)

交叉赋值

我们定义两个变量m与n

m=10
n=20
輸出
m,n
(20,10)

如果想将m和n的值交换

t=m
m=n
n=t
輸出
mn
(20,10)

例2

m = 999
n = 100
# 让m绑定n绑定的数据值 让n帮忙m绑定的数据值
# m = n
# n = m
# print(m)
# print(n)
'''方式1:利用中间变量'''
# tmp = m
# m = n
# n = tmp
# print(m, n)
'''方式2:交叉赋值'''
m, n = n, m
print(m, n)

解压赋值

解压赋值,等号两边的变量名个数必须与右面包含值的个数相同,否则会报错

我们把列表中的多个值取出来依次赋值给多个变量名

nums=[11,22,33,44,55]
a=nums[0]
b=nums[1]
c=nums[2]
d=nums[3]
a,b,c,d,e
(11,22,33,44,55)
一行搞定
a,b,c,d,e=nums #nums包含多個值,就好比一個压缩包,解压赋值因此得名
a,b,c,d,e
(11,22,33,44,55)

如果只想取头尾的几个值,可以用*—匹配

a,b,*_=nums
a,b
(11,22)

例2

name_list = ['jason', 'tony', 'kevin']
# 用三个不同的名字存储三个不同的人名
# name1 = name_list[0]
# name2 = name_list[1]
# name3 = name_list[2]
'''解压赋值:赋值符号的左边至少有两个及以上的名字 才能称之为解压赋值'''
# name1, name2, name3 = name_list
# 1.上述操作需要保证左边的名字和右边的数据值 个数一致
# a, b = name_list
# a, b, c, d, e = name_list

"""特殊情况 带解压的数据非常的多"""
l1 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
# a, b, *c, d = l1  # *在解压赋值的时候会自动将多余的数据值组织成列表赋值给*号后面的变量名
# print(a)  # 11
# print(b)  # 22
# print(c)  # [33, 44, 55, 66, 77, 88]
# print(d)  # 99
*c, a, b = l1
print(a)
print(b)
print(c)

ps:字符串,字典,元祖,集合类型都支持解压赋值

逻辑运算符

逻辑运算符 描述
and 逻辑与,用于链接两个条件,两个条件同时成立才会返回true
or 逻辑或,用于链接两个条件,两个条件任何一个成立才会返回true
not 取反

连续多个and,可以用多个and链接多个条件,从左到右一次判断,一旦一个条件不成立,就会被判为false

连续多个or,可以用多个or链接多个条件,从左到右一次判断,一旦一个条件成立立,就会被判为false

#1、三者的优先级关系:not>and>or,同一优先级默认从左往右计算。
>>> 3>4 and 4>3 or 1==3 and 'x' == 'x' or 3 >3
False

#2、最好使用括号来区别优先级,其实意义与上面的一样
'''
原理为:
(1) not的优先级最高,就是把紧跟其后的那个条件结果取反,所以not与紧跟其后的条件不可分割

(2) 如果语句中全部是用and连接,或者全部用or连接,那么按照从左到右的顺序依次计算即可

(3) 如果语句中既有and也有or,那么先用括号把and的左右两个条件给括起来,然后再进行运算
'''
>>> (3>4 and 4>3) or (1==3 and 'x' == 'x') or 3 >3
False 

#3、短路运算:逻辑运算的结果一旦可以确定,那么就以当前处计算到的值作为最终结果返回
>>> 10 and 0 or '' and 0 or 'abc' or 'egon' == 'dsb' and 333 or 10 > 4
我们用括号来明确一下优先级
>>> (10 and 0) or ('' and 0) or 'abc' or ('egon' == 'dsb' and 333) or 10 > 4
短路:       0      ''            'abc'                    
            假     假              真

返回:                            'abc'

#4、短路运算面试题:
>>> 1 or 3
1
>>> 1 and 3
3
>>> 0 and 2 and 1
0
>>> 0 and 2 or 1
1
>>> 0 and 2 or 1 or 4
1
>>> 0 or False and 1
False 

成员运算符

成员运算符 描述
in 某一个对象包含于另外一个对象则返回true
not in 某一个对象没有包含另外一个对象则返回true

in

#
'hello' in 'hello world' 
true

#
'age' in {'xxx'yyy','mmx'}
true

#判断的是字典的key
18 in {'name':'lili','age':18}

false

not in

注意:虽然下述两种判断可以达到相同的效果,但我们推荐使用第二种格式,因为not in语义更加明确

#
>>> not 'lili' in ['jack','tom','robin']
True
>>> 'lili' not in ['jack','tom','robin']
True

身份運算符

身份运算符 描述
is is 比较的是id,两个对象的id相同则返回true
is not 在两个对象的id

需要强调的是 “==”双等号比较的是value是否相等,而is比较的是id是否相等

#1. id相同,内存地址必定相同,意味着type和value必定相同
#2. value相同type肯定相同,但id可能不同,如下
>>> x='Info Tony:18'
>>> y='Info Tony:18'
>>> id(x),id(y) # x与y的id不同,但是二者的值相同
(4327422640, 4327422256)

>>> x == y # 等号比较的是value
True
>>> type(x),type(y) # 值相同type肯定相同
(<class 'str'>, <class 'str'>)
>>> x is y # is比较的是id,x与y的值相等但id可以不同
False

原创文章,作者:jamestackk,如若转载,请注明出处:https://blog.ytso.com/272134.html

(0)
上一篇 2022年7月8日
下一篇 2022年7月8日

相关推荐

发表回复

登录后才能评论