数据类型

整型(int)

# 大白话:整数

# 作用
 > 记录年龄、身高、电话号码
# 如何定义
 > age = 18

浮点型(float)

# 大白话:小数

# 作用
> 记录薪资、bmi

# 如何定义
 > hight = 1.9

字符串(str)

# 作用
 > 表示描述性质信息的,如人的名字,家庭住址
# 如何定义
  > 方式1:
    	name = 'kevin'
  > 方式2:
    	name = "kevin"
  > 方式3:
    	name = '''kevin''' # (当左边有赋值符号和遍历名的时候,它就是字符串)
  > 方式4:
    	name = """kevin""" # (当左边有赋值符号和遍历名的时候,它就是字符串)

列表(list)

# 作用
 > 用来存取多个相同属性的值

# 定义
 > name_list = ['gg', 'aa', 'bb'] # 存
 >> print(name_list[索引])   # 取

 > list = [123, 'asd', ['www', 999]] # 存
 >>   print(name_list[索引][索引])   # 取
 '索引可以正取,也可以倒取,正取从0开始,倒取从-1开始'

 >>> 中括号括起来,内部可以存放多个元素,元素与元素之间使用逗号分隔,可以是任意的数据类型,也可以嵌套
   
# 练习
 > 取出下列列表中的 kevinNB
 x = [1, 1.1, 'kevin', [666, 777, 888, 'tony', [22,33, 'kevinNB']]]

 >> print(x[-1][-1][-1]) # 倒取
 >> print(x[3][4][2]) # 正取

字典(dict)

# 作用
 > 用来存取放多个值,按照key:value的方式存放的值,取的时候可以通过key而非索引去取值,key对value是有描述性功能的

# 定义
 > x = {'name':'gg', 'age':18, 'hight':1.9} # 存
 >> print(x['hight']) # 取

 >>> 在{}内用逗号分隔开多个元素,每一个元素都是key:value的格式,其中value可以是任意类型,key大多数情况都是字符串类型,也可以嵌套
    
# 练习   
 > 取出下面字典中的 music
 info = {
    'username':'tony',
    'addr':{
        '国家':'中国',
        'info':[666, 999, {'编号':466722, 'hobby':['read', 'study', 'music']}]
    }
}
 >> print(info['addr']['info'][2]['hobby'][2])

布尔值(bool)

# 作用
 > 用于判断的条件

# 定义
 '只有两种情况: True|False'
 >> print(10 > 3)
 >>> True
 >> print(type(10 > 3))
 >>> <class 'bool'>
 
 >> print(10 < 3)
 >>> False
 >> print(type(10 < 3))
 >>> <class 'bool'>

'''在Python中,所有的数据类型都可以转为布尔值'''

"""在如此多的数据类型中只需要记住:0、None、'(空)',这三类为False,其余为真 """
 > print(bool())
 >> False
 > print(bool(0))
 >> False
 > print(bool(None))
 >> False
 > print(bool([]))
 >> False
 > print(bool({}))
 >> False   

元组(tuple)

# 作用
 > 与列表一样,用来存取多个相同属性的值,但他是不可变列表

# 定义
 > t = ('aa', 'bb',111) # 存
 >> print(t[索引]) # 取

 >>> 用()括起来,可以存放多个元素,元素与元素直接用逗号隔开,元素不可变
 >> x = ['ff', 11, 22]
 >> x[1] = 33
 >> print(x[1]) 
 >> 33
 '由上可以看出列表中的元素可以发生改变'
 
 >> x = ('ff', 11, 22)
 >> x[1] = 33
 >> print(x[1])
 >> TypeError: 'tuple' object does not support item assignment
 '由此可以看出元组中的元素是不可变的'  

'''
 > x=('dsasa')
 > print(type(x))
 > <class 'str'>
 
 > x=('dsasa', )
 > print(type(x))
 > <class 'tuple'>
 
 当元组中只有一个元素时,一定要加上逗号
'''

集合(set)

# 定义:大括号括起来,内部可以存放多个元素,元素与元素之间逗号隔开,但是不是K:V键值对的形式
	s = {11,22,33,44}
'''集合中的元素不能直接取出'''

# 特点:无序 去重 集合运算
 > x = {11, 22, 33, 44, 22, 33}
 > print(x)
 > {33, 11, 44, 22} # 无序、去重

与用户交互

# 输入 (input)

'''在python3中的input会将用户输入的任何内容都存成字符串类型'''
 > pwd = input('请输入你的密码: ')
 > print(pwd, type(pwd)) 
 > 123 <class 'str'> 

'''在python2中的raw_input用法与python3的input是一摸一样的'''

# 输出(print)
 > print(123, end='') # end=''(换行)

格式化输出

# 什么是格式化输出?
 > 把一段字符串里面的某些内容替换掉之后再输出,就是格式化输出。
# 为什么要格式化输出?
 > 我们经常会输出具有某种固定格式的内容,比如:'亲爱的xxx你好!你xxx月的话费是xxx,余额是xxx‘,我们需要做的就是将xxx替换为具体的内容。

# %s称为占位符(掌握)可以为所有的数据类型占位
 > res = '亲爱的%s你好!你%s月的话费是%s,余额是%s'
 > print(res % ('kevin', 2, 1000, 888))
 > 亲爱的kevin你好!你2月的话费是1000,余额是888

# %s占位只有一个时,打印可以不带括号
 > res1 = 'my name is %s'
 > print(res1 % 'tony')
 > my name is tony

# %d占位符(了解)只能给数字类型占位
print("金额:%d" % 111)   # 金额:111

# %08d --> 8代表打印出的几位,缺少就从左向右用0补充
print("金额:%08d" % 666666) # 金额:00666666
print("金额:%08d" % 99999999999)  # 金额:99999999999

基本运算符( https://www.runoob.com/python/python-operators.html

假设 a=10 b=20
运算符 描述 案列
+ 两个对象相加或将两个字符串拼接 a + b 输出结果 30
- 得到负数或是一个数减去另一个数 a + b 输出结果 -10
* 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200
/ x除以y b / a 输出结果 2
% 取模,返回除法的余数 b % a 输出结果 0
** 返回x的y次幂 a**b为10的20次方 输出结果为 100000000000000000000
// 取整除,返回商的整数部分(向下取整 10 // 3 --> 3
-10 // 3 --> -4
# 实列
a=10
b=3

print(a + b) --> 13
print(a - b) --> 7
print(a * b) --> 30
print(a / b) --> 3.3333333333333335
print(a % b) --> 1
print(a ** b) --> 1000
print(a // b) --> 3

m = 'aaa'
n = 'bbb'
print(m + n) --> aaabbb
print(m * 2) --> aaaaaa
print(n * 4) --> bbbbbbbbbbbb

比较运算符

'假设变量a为10,变量b为20'
# ==
 > 比较对象是否相等
 >> print(a == b) --> False

# !=
 > 比较两个对象是否不相等
 >> print(a != b) --> True

# >
 > 返回x是否大于y
 >> print(a > b) --> False

# <
 > 返回x是否小于y
 >> print(a < b) --> True

# >=
 > 返回x是否大于等于y
 >> print(a >= b) --> False

# <=
 > 返回x是否小于等于y
 >> print(a <= b) --> True

赋值运算符

运算符 描述 实列
= 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
+= 加法赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c *= a 等效于 c = c * a
/= 除法赋值运算符 c /= a 等效于 c = c / a
%= 取模赋值运算符 c %= a 等效于 c = c % a
**= 幂赋值运算符 c %= a 等效于 c = c % a
//= 幂赋值运算符 c %= a 等效于 c = c % a

赋值

# 链接赋值
 > a=b=c=10

# 交叉赋值
m = 10,n = 20,实现n = 10,m=20
 > 方法一:
    m=10
    n=20
    k=m
    m=n
    n=k
    print(m,n)
    20 10
  > 方法二:
    m,n=n,m
    print(m,n)
    20 10
    
# 解压赋值 (列表)
 names_list = ['kevin', 'tony', 'tank', 'tom']
'''左右两边的个数必须一致'''
 > x, y, z, d = names_list
 > x, y, z, d = ['kevin', 'tony', 'tank', 'tom'] 
'''当一个列表有很多值时,需要取值时,左右两边个数一致,中间可以用(*x)占位'''
 > x,*a, d = names_list
 > print(x,d)
 >> kevin tom
 
# 解压赋值 (字典)
 info={'name':'GG','age':18,'sex':'male'}
 > x, y, z=info
 > print(x,y,z)
 > name age sex
 '''对于字典来收,解压出来的是key'''    

逻辑运算符(and、or、not)

and(与)   
# 可以用and连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为False,则无需再往右判断,可以立即判定最终结果就为False,只有在所有条件的结果都为True的情况下,最终结果才为True。

# 练习题:
	 2 > 3 and 1 != 1 and True and 3 > 2
or(或)
# 可以用or连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为True,则无需再往右判断,可以立即判定最终结果就为True,只有在所有条件的结果都为False的情况下,最终结果才为False
# 练习题:
	 2 > 1 or 1 != 1 or True or 3 > 2 
not  非(取反)
	not True
    
'''
优先级:not > and > or
'''    

成员运算符(in、not in)

# 判断某个个体是否在某个群体中
符号:in(在)  not in(不在)
name_list = ['kevin', 'jack', 'tony', 'tom']

 > print('kevin' in name_list)
 > True

 > print('kevin' not in name_list)
 > False   

身份运算符(is、is not)

# 判断两个值是否相等

'''
 is --> 比较的是内存地址
 == --> 比较的是值
'''

s1 = ['a', 'b', 'c']
s2 = ['a', 'b', 'c']

 > print(s1 == s2)
 > True

 > print(id(s1))
 > print(id(s2))
 > print(s1 is s2)
 > False  

'''
 值相等的内存地址不一定相等
 内存地址相等的值一定相等
'''

流程控制

# 控制事物的执行流程
 > 流程控制总共有3种情况:
 >> 顺序结构
    # 就是自上而下的执行
 >> 分支结构
    # 分支结构就是根据条件判断的真假去执行不同分支对应的子代码
 >> 循环结构
    # 循环结构就是重复执行某段代码块

流程控制之if

"""
	注意事项:
		1. 根据条件的成立与否,决定是否执行if代码块
		2. 我们通过缩进代码块,来表示代码之间的从属关系
		3. 不是所有的代码都拥有子代码块
		4. 我们推荐使用缩进4格
		5. 同属于一个代码块的子代码块缩进量一定要一样
		ps:遇到冒号就要回车换行,缩进
"""

# if语法
 > 语法1
  if 条件:
     代码1
     代码2
     代码3
     ....
    
  >  语法2
   if 条件:
     代码1
     代码2 ---> 条件成立执行
     代码3
     ...
   else:
     代码1
     代码2 ---> 条件不成立执行 
     代码3
     ...  
   > 语法3
    if 条件1:
    	条件1成立执行的子代码块
    elif 条件2:
        条件1不成立条件2成立执行的子代码块
    elif 条件3:
        条件1、2不成立条件3成立执行的子代码块
    elif 条件4:
        条件1、2、3不成立条件4成立执行的子代码块
    else:
        以上条件都不成立的时候执行的代码块
  # else语句可有可无

# 练习
根据用户名的不同打印不同的身份
kevin:管理员   jack:保安  tom:保洁  tank:销售  其余的都是普通人

dic = {
    'kevin': '管理员',
    'jack': '保安',
    'tom': '保洁',
    'tank': '销售',
}
username = input('请输入人名:')
if username not in dic:
    print('普通人')
else:
    print(dic[username])        

# if判断之嵌套

age = 18
height = 1.6
weight = 90
is_beautiful=True
is_success=True
if age < 20 and height == 1.6 and weight<100 and is_beautiful:
    print('给个微信呗!!!')
    '''要么给,要么不给'''
    if is_success:
        print('吃饭 看电影...')
    else:
        print('慢走不送!!!')
else:
    print('好吧')

流程控制之while循环

"""
	while语法格式
		while 条件:
			循环体
"""
while True:
    username=input('username:>>>')
    password=input('password:>>>')  

    if username == 'kevin' and password == '123':
        print('登录成功')
    else:
        print('登录失败')

while+break

# count = 0
while True:
    username=input('username:>>>')
    password=input('password:>>>')  #

    if username == 'kevin' and password == '123':
        print('登录成功')
        break # 结束本层循环
    else:
        print('登录失败')

break本层含义

while True:
    username=input('username:>>>')
    password=input('password:>>>')  #

    if username == 'kevin' and password == '123':
        print('欢迎光临')
        while True:
            cmd=input('请输入你的指令:>>>')
            if cmd == 'q':
                # 结束程序
                break
            print('正在执行你的指令:%s' % cmd)
        break
    else:
        print('登录失败')
print(123)

标志位的使用

flag = True
while flag:
    username=input('username:>>>')
    password=input('password:>>>')  #

    if username == 'kevin' and password == '123':
        print('欢迎光临')
        while flag:
            cmd=input('请输入你的指令:>>>')
            if cmd == 'q':
                # 结束程序
                flag = False
            print('正在执行你的指令:%s' % cmd)
    else:
        print('登录失败')

案列

# 猜年龄的游戏
"""
	1. 普通要求
		三次机会
	2. 拔高要求
		三次之后再次询问是否继续输入
"""

# 三次机会,猜对了,就直接结束
# 先写主体功能

# 1. 先定义一个年龄出来
real_age = 18

# 定义一个计数器
count = 1
while count < 4:
    # 2. 用户输入年龄
    guess_age = input('请输入你猜测的年龄:>>>')  # 数字
    # 2.1 把字符串的数字转为整型,int,可能会出现bug
    guess_age = int(guess_age)
    
    # 3. 判断输入的年龄和真实年龄是否一样
    if guess_age > real_age:
        print('猜大了')
        # count+=1
    elif guess_age < real_age:
        print('猜小了')
        # count+=1
    else:
        print('哎呀,猜对了')
        break
    # 优化
    count+=1
    
'''拔高'''

# 1. 先定义一个年龄出来
real_age = 18

# 定义一个计数器
count = 1
while count < 4:

    # 2. 用户输入年龄
    guess_age = input('请输入你猜测的年龄:>>>')  # 数字
    # 2.1 把字符串的数字转为整型,int,可能会出现bug
    guess_age = int(guess_age)

    # 3. 判断输入的年龄和真实年龄是否一样
    if guess_age > real_age:
        print('猜大了')
        # count+=1
    elif guess_age < real_age:
        print('猜小了')
        # count+=1
    else:
        print('哎呀,猜对了')
        break
    # 优化
    count+=1
    if count == 4:
        # 询问:是否再次输入
        cmd = input('三次机会使用完了,是否再次输入yes/no')
        if cmd == 'yes':
            count=1
        else:
            print('结束')
            break
            
            
 ----------------------------------------------------------------------------------------------------
age = 18
num = 0
while num < 3:
    age_info = input('请输入你要猜的年龄>>>')
    if age_info.isdigit():
        age_info = int(age_info)
        if age_info > age:
            print('猜大了')
            num += 1
            print('你已经猜了%s次' %num)
        elif age_info < age:
            print('猜小了')
            num += 1
            print('你已经猜了%s次' % num)
        else:
            print('猜对了')
            break
        if num == 3:
            z = input('继续请按a,退出请按b >>>')
            if z == 'a':
                num = 0
            else:
                break
    else:
        print('年龄是数字,请输入数字')

while+continue

# 1. 使用循环打印出0-9的数字
n = -1
while n < 10:
    n += 1
    print(n)

# 2. 打印0-10的数字不打印6
n = -1
while n < 10:
    n += 1
    if n == 6:
        continue
    print(n)
    
'''continue结束本次循环,并且回到while循环的条件处从新判断'''

while+else(了解)

# count=0
# while count < 10:
#     print(count)
#     count+=1
# else:
#     print('哈哈哈哈')

count=0
while count < 10:
    if count ==5:
        count+=1
        continue
    print(count)
    count+=1
else:
    print('哈哈哈哈')

    
'''当while循环没有被中断(break)的时候,就会执行'''

死循环

'''在程序中,可千万不能出现死循环'''
while True:
    print(100)
'''能用for循环实现的,都不要使用while循环'''

for循环

# 1. 使用while循环打印以下列表中得数据
name_list = ['kevin', 'tony', 'jack', 'tom']

# i=0
# while i<4:
#     print(name_list[i])
#     i+=1

for name in name_list:
    print(name)
    
"""
	语法格式:
        for 变量 in 可迭代对象:  字符串、列表、字典、元组
        	print(name)
"""

for i in 'helloworld':
    print(i)
PS:for后面的变量名命名的时候,如果没有特殊的含义,我们一般使用i,j,k,v,item等等


'''重点'''
d = {'username':'kevin', 'age':18, 'hobby':'music'}
for i in d:
    print(i, d[i])

range关键字

# 配合for循环使用
第一种玩法:
for i in range(10) # 一个参数, 打印数字列表,从0开始
	print(i)
    
第二种玩法:
for i in range(4, 18):  # 顾头不顾尾
    print(i)
第三种玩法:
for i in range(2, 20, 3):# 步长 # 顾头不顾尾
    print(i)
    
    
# 拓展知识:
"""
推断:https://movie.douban.com/top250?start=0&filter=    第一页
	https://movie.douban.com/top250?start=25&filter=    第二页
	https://movie.douban.com/top250?start=50&filter=    第三页
	https://movie.douban.com/top250?start=75&filter=    第四页
	https://movie.douban.com/top250?start=100&filter=   第五页
	...
	
	https://movie.douban.com/top250?start=225&filter=   第十页
"""

url = 'https://movie.douban.com/top250?start=%s&filter='
for i in range(0,250,25):
    print(url % i)
    
'''小补充:range在不同解释器版本中是有区别的。'''

for+break

for i in range(10):
    if i == 3:
        break
    print(i)

for+continue

for i in range(10):
    if i == 3:
        continue
    print(i)

for+else

for i in range(10):
    if i == 3:
        break
    print(i)
else:
    print('哈哈哈哈')

for循环嵌套

for i in range(1,10):
	for j in range(1,i+1):
		print('%s*%s=%s' %(i,j,i*j),end=' ')
	print()

数据类型内置方法

# 方法   名字()

1. 整型
# 进制转换
print(bin(10))  # 0b1010
print(oct(10))  # 0o12
print(hex(10))  # 0xa

# 记忆:0b代表二进制  0o代表八进制  0x代表十六进制

print(int('0b1010', 2))
print(int('0o12', 8))
print(int('0xa', 16))
2. 
# float同样可以用来做数据类型的转换
>>> s = '12.3'
>>> res=float(s)
>>> res,type(res)
(12.3, <class 'float'>)

字符串的内置方法(重点)

# 1. 把其他数据类型转为字符串
print(str(19))
print(str(19.1))
print(str([1, 2, 3, 4]))
print(str({'username':'kecin', 'age':18}))
print(str((1,2,3,4)))
print(str(True))
print(str({11,22,33}))

# 记忆
# s = '  hello  '
# print(s)
# print(s.strip())  # 默认什么都不写,去除的是空格
# print(s.lstrip()) # left
# print(s.rstrip()) # right

# s1 = '@@kevin@##'
# print(s1.strip('@'))
# print(s1.strip('#'))


username = input('username:>>>').strip()
password = input('password:>>>').strip()
if username == 'kevin' and password == '123':
    print('登录成功')
else:
    print('登录失败')

    >>> str1 = 'hello python!'


# 1.按索引取值(正向取,反向取):
# 1.1 正向取(从左往右)
>>> str1[6]
p
# 1.2 反向取(负号表示从右往左)
>>> str1[-4]
h
# 1.3 对于str来说,只能按照索引取值,不能改
>>> str1[0]='H' # 报错TypeError


# 2.切片(顾头不顾尾,步长)
# 2.1 顾头不顾尾:取出索引为0到8的所有字符
>>> str1[0:9]  
hello pyt
# 2.2 步长:0:9:2,第三个参数2代表步长,会从0开始,每次累加一个2即可,所以会取出索引0、2、4、6、8的字符
>>> str1[0:9:2]  
hlopt 
# 2.3 反向切片
>>> str1[::-1]  # -1表示从右往左依次取值
!nohtyp olleh

# 3.长度len
# 3.1 获取字符串的长度,即字符的个数,但凡存在于引号内的都算作字符)
>>> len(str1) # 空格也算字符
13

# 4.成员运算 in 和 not in	
# 4.1 int:判断hello 是否在 str1里面
>>> 'hello' in str1  
True
# 4.2 not in:判断tony 是否不在 str1里面
>>> 'tony' not in str1 
True

# 5.strip移除字符串首尾指定的字符(默认移除空格)
# 5.1 括号内不指定字符,默认移除首尾空白字符(空格、\n、\t)
>>> str1 = '  life is short!  '
>>> str1.strip()  
life is short!

# 5.2 括号内指定字符,移除首尾指定的字符
>>> str2 = '**tony**'  
>>> str2.strip('*')  
tony

# 6.切分split
# 6.1 括号内不指定字符,默认以空格作为切分符号
>>> str3='hello world'
>>> str3.split()
['hello', 'world']
# 6.2 括号内指定分隔字符,则按照括号内指定的字符切割字符串
>>> str4 = '127.0.0.1'
>>> str4.split('.')  
['127', '0', '0', '1']  # 注意:split切割得到的结果是列表数据类型


# 7.循环
>>> str5 = '今天你好吗?'
>>> for line in str5:  # 依次取出字符串中每一个字符
...     print(line)
...
今
天
你
好
吗
?
posted @ 2023-05-16 19:01  秋洛尘  阅读(34)  评论(0)    收藏  举报