zoukankan      html  css  js  c++  java
  • 编程、数据类型、流程控制

    编程

    参考网站

    语言:
    	事物与事物之间沟通交流的媒介
    	
    计算机:
    	解放人力,代替人力去工作
    		古代,雇工代替自己工作
    		现代,使用计算机代替自己工作
    		
    编程:
    	1.什么是编程
    		编程就是编写程序,人将自己的思维逻辑通过计算机能够识别的语言写下来,让计算机按照人的思维逻辑去干活的编辑代码
    		电脑,人工智能是开发的一个方向
    		编程的代码存放在文件中
    		计算机是死的,不会主动去干活
    		
    编程语言:
    	shell
    	python
    	go	
    		
    一套完整的计算机系统有以下三部分组成:(系统层面)
    	1.应用程序		---- 程序员
    	2.操作系统		---- 中间人,调用
    	3.计算机硬件
    	
    	PS:
    		1.程序员开发的程序都叫应用程序
    		2.操作系统也叫应用程序,但是它针对的是计算机硬件
    		
    计算机硬件:
    	CPU
    	内存
    	硬盘
    	
    操作系统:
    	帮助人去操作硬件,操作系统本身已经封装好了一系列操作硬件的方法,程序员只需要按照操作系统提供的方法间接的操作硬件
    	Windows
    	linux
    

    计算机五大组成部分:(硬件层面)

    	1.控制器		计算机的控制系统
    					
    	2.运算器		计算机的运算系统
    					逻辑运算
    						判断事物对错
    					数学运算
    						数字运算
    		控制器+运算器=计算器中央处理器(CPU)
    	3.存储器		计算机的存储系统
    					内存(10ns)
    						优点:基于电工作,读取速度快
    						缺点:断电数据丢失
    					外存,硬盘(10s),靠磁针旋转读取数据(机械硬盘),SSD固态硬盘,磁带(便宜)
    						优点:永久保存数据
    						缺点:读取数据较内存慢
    					高速缓存(2ns),<4MB
    					寄存器(1ns),速度最快,容量最小<1KB
    		PS:
    		输入设备也称input,输出设备也叫output
    		存储器也可以叫做IO设备
    	4.输入设备
    		键盘、鼠标、触摸板
    	5.输出设备
    		显示器、音响、打印机
    		
    BIOS:
    	计算机主板出厂的时候自带的一个系统
    	
    python解释器运行一个py文件的步骤:
    	1.将py解释器的代码由硬盘读取到内存
    	2.将py文件以普通文件的形式读到内存,展示给用户
    	3.python解释器读取文件内容,识别python语法,执行相应的操作
    	ps:普通的文本编辑器与python解释器的前两步都是一样的
    	
    #双击一个图标	(告诉操作系统帮你去操作硬件)
    	1.该软件对应的数据有硬盘读到内存
    	2.CPU去内存中读取该软件对应的数据
    	3.给用户的感觉,这个软件起来了
    	
    #文件的概念
    	文件就是计算机暴露给用户的操作硬件的接口
    

    CPU

    计算机是基于电工作的,而电信号只有高低电平两种状态
    	0100010001001010010	所以计算机里面存储的都是0101这样的二进制数据
    	
    CPU的工作流程:
    	使用内存,读取命令,将命令解析成操作步骤,控制硬件执行
    	
    CPU分类:	
    	精简指令集CPU
    		这种CPU的微指令集较为精简,执行效果较好
    	复杂指令集CPU
    		
    X86架构是CPU以80开头的代号的一个统称
    	32位,CPU到内存中读取数据,一次最少读32位
    	64位
    		64位向下兼容32位的软件,而32为不能兼容64位的软件
    

    操作系统

    操作系统:
    	操作系统也是一个应用软件,但是它是针对计算机硬件的
    作用:
    	将复杂的操作封装起来,暴露给用户简单快捷的操作接口,便于操作计算机硬件
    	帮助用户协调、管理、调度计算机各个硬件
    
    文件:
    	操作文件就是在操作硬盘
    

    注释

    什么是注释
    	注释就是对代码的解释或评论,通常在代码前面说明,注释是给人看的,计算机不会解析
    分类:
    	1.单行注释
    		# 内容
    	2.多行注释
    		'''内容'''
            """内容"""
    

    输入

    1.python3中的输入
    	关键字input()
        python3中的input()获取的用户输入,统一全部存成字符串类型
        
    2.python2中的输入
    	input()
        	需要人为的告诉python程序,输入的是什么数据类型 'str' 10 [1,2,3] {4,5,6}
        raw_input()
        	python2中的raw_input()和python3中的input()一样,无论用户输入的是什么数据类型,统一转变成字符串类型
    

    输出

    name = input('your name >>>:')
    age = input('your age >>>:')
    
    1.单行打印
    	print(name,age)
    2.多行打印
    	print(name)
        print(age)
    3.占位符,指定格式打印
    	print('my name is',name,'my age is',age)
        print('my name is %s,my age is %s' %(name,age))
        	%s 既能给字符串占位,又能给整形占位(可以给任意数据类型占位),变量的个数不能多也不能少
        
        %d 只能给数字占位
        print('%08d' %123)
        	%08d 整数是8位,传入的数不够8位得到话默认用0补全,超出8位的话,是多少就是多少
            
    #print() ,打印空行、换行
    

    数据类型

    什么是数据:
    	衡量/记录事物的状态/特征
        
    什么是类型:
    	不同的数据应该用不同的数据类型存储,比如:文本,视频,音频...
    

    整型、浮点型

    int		整形,整数
    
    age = 18			#本质上是 age = int(18)
    #age = int('18')	#字符类型转换
    print(type(age))	
    
    float	浮点型,带小数位
    
    salary = 1.11		#本质上是 salary = float(1.11)
    #salary1 = float(3.11)
    print(type(salary))
    
    复数
    a = 1-2j
    type(a)
    a.real		#查看实部
    a.imag		#查看虚部
    
    #只有python2中有长整型,python3中只有整形
    #print(1+2)
    #整型、浮点型可以统称为数字类型
    
    #有返回值的时候,可以直接print()
    #没有返回值的时候,只能print()作用对象
    
    x = [1,2,3]
    x.clear()
    print(x)			#[]
    print(x.clear())	#None,函数没有返回值
    

    字符串类型

    作用:
    	保存描述信息,比如:个人简介、对他人的评价...
    表示方法:
    	1.单引号
        	s1 = '我是一个字符串' 		#本质上是 s1 = str('我是一个字符串')
            print(type(s1))
        2.双引号
        	s1 = "我是一个字符串"
        3.三引号
        	s1 = '''我是一个字符串'''
        	s1 = """我是一个字符串"""
            
    #字符串之所以有三种定义方式,这是考虑到用户在输入的文本中也需要用到引号
    
    print(hello+world)
    print(hello*5)
    #python中字符串可以加减乘除,原理是在内存中申请了名称空间
    

    列表类型

    作用:
    	能够存储多个数据,并且可以方便的取出一个或多个
        
    定义:
    	[]内部通过逗号分隔多个元素,并且这多个元素可以是任意的数据类型
        
    l = [123,3.1,'syy',[11,22]]     
        
    #取值
    	索引取值
        	print(l[0])
        	print(l[3][0])		#本质是 print([11,22][0]) 
            
    #列表也可以直接相加减
    print([1,2,3]+[4,5,6])
    

    字典类型

    作用:
    	能够存储多组数据,存取的数据都有对应的描述
        
    定义:
    	大括号内存多个元素,元素的格式key:value形式存储,键值对与键值对之间使用逗号隔开,字符串加引号,整形、浮点型不用加引号
        key通常是描述value的描述性信息,所以key通常存的就是字符串(不可变类型、可hash)
        value通常就是描述性信息对应的真实的数据
        字典中的元素是没有顺序的
        字典暴露给用户的部分只有key,所以字典取值必须要知道key 
    
    #字典的定义方式1
    info = {
        'name': 'syy',
        'age':18,
        'hobby':['妹子',‘钱’]
    }
    
    #本质是
    info = dict{
        ...
    }
    
    #字典的定义方式2
    info = dict(name='syy',age=18)
    print(info,type(info))		#{'name': 'syy', 'age': 18} <class 'dict'>
    
    #字典的定义方式3
    info = [
        ['name','syy'],
        ['age',18],
        ['hobby','qiu']
    ]
    d = {}
    for i in info:
        d[i[0]] = i[1]		#字典中不存在,就直接添加
    print(d)
    
    info = [
        ['name','syy'],
        ['age',18],
        ['hobby','qiu']
    ]
    d = {}
    for k,v in info:		#使用解压赋值,定义字典
        d[k] = v
    print(d)
    
    info = [
        ['name','syy'],
        ['age',18],
        ['hobby','qiu']
    ]
    d = dict(info)			#该方法本质上使用的仍是for循环
    print(d)
    
    #字典取值,类似于列表取值
    #但是必须指定key(字典的取值使用for循环比较方便),for循环可以不使用索引取值,可以更方便的取出字典中的value
    emp_info = dict{
        'name':'syy',
        'age':18'
        'sex':'male',
        'company_info':{
            'cname':'OB',
            'emp_count':200,
            'addr':'SH'
        }
    }
    print(emp_info['company_info']['addr'])
    
    d = {'name':'syy','age':18}
    print(d.keys())				#keys()本质上是一个迭代器
    for i in d.keys():
        print(i,d[i])
        
    d = {'name':'syy','age':18}
    print(d.values())
    for i in d.values():		#使用value()函数,直接取值
        print(i)
        
    d = {'name':'syy','age':18}
    print(d.items())
    for i in d.items():			#结果是一个列表(迭代器)
        print(i)				#dict_items([('name', 'syy'), ('age', 18)])
        
    #字典中重复定义键,字典中的key唯一表示value,不能重复
    d = {'name':'syy','name':'zhangsan','name':'lisi','age':18}
    print(d)		#{'name': 'lisi', 'age': 18}
    
    #使用len()函数,统计字典中键值对的个数
    d = {'name':'syy','name':'zhangsan','name':'lisi','age':18}
    print(len(d))
    
    #字典和字符串、列表、元组一样,都是可变的数据类型
    d = {'name':'syy','name':'zhangsan','name':'lisi','age':18}
    print(id(d))
    d[0] = 'wang'
    print(id(d))
    
    #在字典中添加键值对
    d = {'name':'syy','age':18}
    d['habby'] = 'qiu'
    print(d)
    
    #成员运算,注意字典暴露给用户的只有key,取值也要通过key
    d = {'name':'syy','age':18}
    print('name' in d)		#True
    
    #删除字典,或者删除字典内的元素
    d = {'name':'syy','age':18}
    del d['name']
    print(d)	#{'age': 18}
    
    d = {'name':'syy','age':18}
    d.pop('name')
    print(d)
    
    d = {'name':'syy','age':18}
    print(d.pop('name'))	#syy,pop()的返回值是key对应的value
    
    d = {'name':'syy','age':18}
    print(d.pop('namesyy'))	#KeyError: 当键不存在的时候直接报错
    -------------------------------------------------------------------------------
    #get()函数,根据key获取value
    d = {'name':'syy','age':18}
    print(d.get('name'))	#syy
    print(d.get('pas'))		#None,不报错
    
    d = {'name':'syy','age':18}
    print(d.get('name'))	#syy
    print(d.get('pas','这个键不在字典中'))	#这个键不在字典中
    
    #fromkeys()函数,快速生成字典
    print(dict.fromkeys('wer',123))	#{'w': 123, 'e': 123, 'r': 123}
    print({}.fromkeys('wer',123))	#{'w': 123, 'e': 123, 'r': 123}
    
    d = ['name','syy','age',18]	#使用列表生成字典
    print(dict.fromkeys(d,123))	#{'name': 123, 'syy': 123, 'age': 123, 18: 123}
    
    #面试题
    	#使用append()可以修改字典的value
        #注意使用forkeys()函数快速生成函数中,名值对的指向关系
    x = {}.fromkeys(['name','pas'] ,[])
    print(x)							#{'name': [], 'pas': []}
    print(x['name'].append('zhangsan'))	#None
    print(x)							#{'name': ['zhangsan'], 'pas': ['zhangsan']}
    
    x = {}.fromkeys(['name','pas'] ,[])
    print(x)
    x['name'] = 'zhangsan'	
    print(x)				#{'name': 'zhangsan', 'pas': []}
    
    #popitem()函数,从字典尾部弹出键值对
    d = {'name':'syy','age':18}
    print(d.popitem())
    print(d.popitem())
    
    #setdefault()函数,返回值是键对应的key
    d = {'name':'syy','age':18}
    print(d.setdefault('name','zhangsan'))		#键存在就算了
    print(d)
    print(d.setdefault('hobby','qiu'))			#键不存在就添加键值对
    print(d)
    
    syy
    {'name': 'syy', 'age': 18}
    qiu
    {'name': 'syy', 'age': 18, 'hobby': 'qiu'}
    
    #update()函数,修改字典中的键值对
    d = {'name':'syy','age':18}
    d['age'] = 20		#存在就替换,不存在就添加
    print(d)
    
    d = {'name':'syy','age':18}
    d.update(age=20)
    print(d)
    
    x = {}.fromkeys(['name','pas'] ,[])
    y = {'name':'zhangsan'}
    print(x)
    x.update(y)
    print(x)
    

    布尔值

    作用:
    	表示事物的对错,通过true和false,判断事物的对错、是否可行
        
    定义:
    	tag1 = True			#本质是 tag1 = bool(True)
        tag2 = False
        
    #计算机所有的逻辑运算,都要转化为布尔值
    #True、False 首字母要大写
    
    x = 10
    y = 10
    print(x == y)
    #python中,一个等号'=' 是赋值,两个等号'=='是比较,注意比较的是value
    
    print(x is y)
    #is 比较的是两个变量对应的id(内存中的名称空间的名字)是否相等(注意相同的值的名的指向问题)
    	id相等的情况下,值一定相等
        id不相等的情况下,值有可能相等
        
        a = 1
        b = 1
        print(id(a))
        print(id(b))
        print(a is b)		#True
        
    #'变量名'和布尔值可以直接用于if判断
    	'变量名'指向的值对应的就是True和False(a = True)
        整型、浮点型、字符串等都可以直接作为条件,用于if判断、while循环
    

    元组

    作用:
    	能够存储多个元素,元素与元素之间使用逗号隔开
        元组一旦被定义,那么就不会再被修改,使用场景跟列表不同
        #元组内可以存放任意数据类型
        #如果元组内只有一个元素,定义的时候一定要加一个逗号
        #存储相同的资源,内存的使用列表较高
        
    格式:
    	x = ()		#空元组
    	x = (int,float,str,list,dict...)
        
    x = tuple([1])
    print(x)		#(1,),该方式定义元组,后面只能跟容器类型
    
    x = (1)
    print(type(x))	#<class 'int'>,实际上是定义了整型
    
    x = (1,)
    print(type(x))	#<class 'tuple'>,定义元组
    
    #元组中的元素是不能修改的
    x = (['1'],)
    x[0] = 1
    print(x)		#TypeError: 元组是不能修改的
    
    x = (['1'],)
    x[0][0] = '哈哈'
    print(x)		#(['哈哈'],),元组内的'容器类型内的数据'是可以修改的
    
    x = (['1'],)
    del x
    print(x)		#NameError: 元组可以被删除
    
    #元组的索引取值
    x = (1,2,3)
    print(x[0])			#返回的数据类型,即为元组内元素的数据类型
    
    #元组的切片
    x = (1,2,3)
    print(x[0:1:])		#(1,),返回一个元组
    
    #成员运算in/not in
    x = (1,2,3)
    print(1 in x)		#True
    
    #元组的内置方法
    x = (1,2,3)
    print(x.count(1))
    
    x = (1,2,3)
    print(x.index(2))
    
    #元组跟列表一样,都是可变的数据类型
    x = (1,2,[3])
    print(id(x))
    x[-1].append(233)
    print(x)
    print(id(x))
    
    #只要定义的是容器类型(列表、字典、元组),如果内部只有一个元素,那么,最好在后面加上一个逗号
    #元组和列表对比:
    	存储相同数据量的情况下,元组更加节省空间
    

    集合

    作用:
    	群体之间作比较,不涉及单个元素 --- 关系运算(共同好友、共同关注)
        一个集合可以包含多个元素,元素之间使用逗号分隔
        集合中的每个元素必须是不可变类型(整型、浮点型、字符串、元组)
        集合中'没有'重复的元素 --- 去重
        集合中的元素是无序的
        
    格式:
    	{}					#空字典
        set{}				#空集合
        a = {1,2,'syy',()}
        print(type(a))		#set
    
    #交集
    python = ['jason','nick','syy','tank','egon','kevin','owen','alex']
    linux = ['frank','jerry','tank','egon','alex']
    for i in python:
        if i in linux:
            print(i)   
            
    #差集,一个集合的非交集元素
    python = ['jason','nick','syy','tank','egon','kevin','owen','alex']
    linux = ['frank','jerry','tank','egon','alex']
    for i in python:
        if i not in linux:
            print(i)
    
    #把字符串转换成集合
    print(set('111'))		#{'1'}
    
    #把列表转化成集合
    a = [1,2,3,3,2,1]
    print(set(a))		#{1, 2, 3}
    
    #把元组转换成集合
    print(set((1,)))	#{1}
    
    #交集
    python = {'jason','nick','syy','tank','egon','kevin','owen','alex'}
    linux = {'frank','jerry','tank','egon','alex'}
    print(python & linux)	#{'egon', 'alex', 'tank'}
    
    #差集,只报名python
    python = {'jason','nick','syy','tank','egon','kevin','owen','alex'}
    linux = {'frank','jerry','tank','egon','alex'}
    print(python - linux)	#{'jason', 'owen', 'nick', 'syy', 'kevin'}
    
    #差集,只报名linux
    python = {'jason','nick','syy','tank','egon','kevin','owen','alex'}
    linux = {'frank','jerry','tank','egon','alex'}
    print(linux - python)	#{'frank', 'jerry'}
    
    #对称差集,交集的补集
    python = {'jason','nick','syy','tank','egon','kevin','owen','alex'}
    linux = {'frank','jerry','tank','egon','alex'}
    print(python ^ linux)	#{'jason', 'owen', 'nick', 'jerry', 'frank', 'kevin', 'syy'}
    
    #两个集合相加,再去重
    python = {'jason','nick','syy','tank','egon','kevin','owen','alex'}
    linux = {'frank','jerry','tank','egon','alex'}
    print(python | linux)	#{'jason', 'syy', 'owen', 'kevin', 'frank', 'egon', 'jerry', 'nick', 'tank', 'alex'}
    
    python = {'jason','nick','syy','tank','egon','kevin','owen','alex'}
    linux = {'frank','jerry','tank','egon','alex'}
    print(python + linux)	#TypeError: 不能使用符号+
    
    #集合中元素是没有顺序的
    a = {1,2,3}
    b = {3,2,1}
    print(a == b)	#True
    
    #父集
    a = {1,2,3}
    b = {1}
    print(a >= b)	#True,集合a,包含集合b
    
    a = {1,2,3}
    b = {1}
    print(a <= b)	#False
    
    #向集合内添加元素
    a = {1,2,3}
    a.add(666)		#add()函数没有返回值
    print(a)
    
    a = {1,2,3}
    a.add((666,))	#添加元组
    print(a)
    
    #在集合中删除元素
    a = {1,2,3}
    a.remove(1)		#元素不存在的话会报错
    print(a)
    
    a = {1,2,3}
    a.discard(1)	#元素不存在的话不会报错
    print(a)
    

    数据类型的转换

    其他数据类型转int类型

    python中常见的数据类型有整型int、浮点型float、字符串str、列表list、字典dict
    
    #字符串转int类型
    res = int('str')	
    print(res)
    
    res = int('str111')
    print(res)
    
    res = int('1.11')
    print(res)
    
    res = int('111')	#字符串含有字母、特殊符号的类型不能转int类型,字符串纯数字字符串类型可以转int类型
    print(res)
    	
    
    #浮点型转int类型
    res = int('1.11')	#浮点型、列表、字典不能转int类型
    print(res)
    

    其他数据类型转浮点型

    #字符串转float浮点型
    res = float('111')
    print(type(res))
    print(res)	#111.0
    
    res = float('1.11')
    print(type(res))
    print(res)	#1.11,整型、字符串(整型字符串、浮点型字符串)可以转浮点型,列表、字典不能转浮点型
    

    其他数据类型转字符串

    #整型转字符串类型
    s1 = 111
    print(type(str(s1)))
    #浮点型转字符串类型
    s2 = 11.1
    print(type(str(s2)))
    #列表转字符串类型
    s3 = [1,2,3]
    print(type(str(s3)))
    #字典转字符串类型
    s4 = {'name':'syy','age':18}
    print(type(str(s4)))
    
    #别的数据类型都可以转字符串类型
    

    其他数据类型转列表

    #整型、浮点型不能转列表类型
    res = list(111)
    print(type(res))
    print(res)	#TypeError: 
    
    #字符串转列表类型
    res = list('111a')
    print(type(res))
    print(res)	#['1', '1', '1', 'a']
    
    #字典类型转列表类型
    res = list({'name':'syy','age':18})
    print(type(res))
    print(res)	#['name', 'age']
    

    其他数据类型转元组

    #整型、浮点型转元组
    x = tuple(1)
    print(x)	#TypeError: 
    
    #字符串类型转元组
    x = tuple('1')
    print(x)	#('1',)
    
    #列表转元组
    x = tuple([1,])
    print(x)	#(1,)
    
    #字典转元组
    x = tuple({'name':'syy' })
    print(x)	#('name',)
    

    进制转换

    #二进制转十进制
    规律:
    	10	# 1*(2**1) + 0*(2**0) = 2 ,所以二进制数10用十进制数表示就是2
        
    #八进制转十进制
    规律:
    	10	# 1*(8**1) + 0*(8**0) = 8,所以八进制数10用十进制数表示就是8
        
    #十六进制转十进制,十六进制数由 0-9 a-f组成
    规律:
    	10	# 1*(16**1) + 0*(16**0) = 16 ,所以十六进制数10用十进制数表示就是16
    
    -------------------------------------------------------------------------
    
    #十进制转二进制,使用函数bin(),0b表示后面的数是二进制
    print(bin(10))	#0b1010
    
    #十进制转八进制,使用函数oct(),0o表示后面的数是八进制
    print(oct(10))	#0o12
    
    #十进制转十六进制,使用函数hex(),0x表示后面的数是十六进制
    print(hex(10))	#0xa
    
    -------------------------------------------------------------------------
    
    #使用函数,其他进制转十进制
    print(int('1010',2))
    print(int('12',8))
    print(int('a',16))
    

    数据的可变类型与不可变类型

    可变类型:
    	值改变的情况下,id不变,说明改的是原值
    不可变类型:
    	值改变的情况下,id一定变,说明改的是名对值的指向
        
        
    #整型是不可变类型
    x = 10
    print(id(x))
    x = 11
    print(id(x))
    
    #浮点型是不可变类型
    x = 10.1
    print(id(x))
    x = 11.1
    print(id(x))
    
    #字符串是可变数据类型
    x = 'syy'
    print(id(x))
    x.replace('s','z')
    print(id(x))
    
    #列表是可变类型
    x = [10.1]
    print(id(x))
    x[0] = 11.1
    print(id(x))
    
    #元组是可变数据类型
    x = (1,2,[3,4])
    print(id(x))
    x[2][0] = 33
    print(id(x))
    
    #字典是可变类型
    x = {'name':'syy','age':18}
    print(id(x))
    x[1] = 19
    print(id(x))
    

    索引取值

    #整型的索引取值
    s = 123
    print(s[0])		#不支持
    
    #浮点型的索引取值
    s = 123.1
    print(s[0])		#不支持
    
    #字符串的索引取值
    s = 'hello world'
    print(s[0])	#h
    
    #列表的索引取值
    s = [1,2,3]
    print(s[0])
    
    s =[1,2,3]
    print(s[0::])	#相当于print(s[0:3:1])
    
    s =[1,2,3]
    print(s[2::-1])		#[3, 2, 1],注意末尾索引可以不写
    
    s =[1,2,3]
    print(s[-1::-1])	#[3, 2, 1],注意,右索引从-1开始
    
    #字典的取值,因为在字典中键值对是没有顺序的(没有索引),所以字典不能通过索引取值,只能通过key取值
    s = {'name':'syy','age':18}
    print(s['name'])
    
    #列表、元组、字典等容器类型可以使用解压赋值
    k,v = [1,2]
    print(k,v)	#1 2
    
    k,v = {'name':'syy','age':18}
    print(k,v)	#name age
    
    k,v = (1,2)
    print(k,v)	#1 2
    

    切片

    #整型的切片
    s = 1101111
    print(s[0:3])	#不支持
    
    #浮点型的切片
    s = 110.11111
    print(s[0:3])	#不支持
    
    #字符串的切片
    s = 'hello world'
    print(s[0:3])		#hel,顾头不顾尾
    
    s = 'hello world'
    print(s[0:3:1])		#默认切片的步长为1,每个都取
    
    s = 'hello world'
    print(s[0:3:2])		#步长为2,那么隔一个取一个
    
    #列表的切片
    s = [1,2,3,4,5,6]
    print(s[0:3:2])		#[1, 3]
    
    #字典的切片
    s = {'name':'syy','age':18,'habby':'qiu'}
    print(s[0:2])		#不支持
    
    #切片中的负数问题(索引、步长都支持负数)
    s = 'hello world'
    print(s[0:5:-1])	#代码没有返回值,原因是索引0左边没有索引
    
    s = 'hello world'
    print(s[5:0:-1])	# olle,从索引5开始,向左边数,顾头不顾尾(左头右尾)
    
    s = 'hello world'
    print(s[-1:-5:-1])	#dlro,从右边数的话,第一个索引为-1不是0
    
    #数据类型支持索引,才能使用切片,所以,只有字符串、列表、元组支持切片
    

    len()函数的使用对象

    #整型
    s = 111
    print(len(s))	#不支持
    
    #浮点型
    s = 11.1
    print(len(s))	#不支持
    
    #字符串
    s = 'hello world'
    print(len(s))	#统计字符串中字符的个数(空格算一个字符)
    
    #列表
    s = [1,2,3]		#统计列表中元素的个数
    print(len(s))
    
    #字典
    s = {'name':'syy','age':18}		#统计字典中键值对的个数
    print(len(s))
    

    成员运算 in和 not in

    #整型
    print('18' in 'syy is 18 year')		#True
    
    #浮点型
    print('18.1' in 'syy is 18.1 year')		#True
    
    #字符串
    print('sy' in 'syy is 18 year')
    print('syy' in 'syy is 18 year')	#True
    print('jason'  not in 'syy is 18 year')
    
    #列表
    print('[18]' in 'syy is [18] year')		#True
    
    #字典
    print('age' in {'age':18})		#True
    print('18' in {'age':18})		#False
    
    #在列表中,每个元素都是最小的单元
    a = ['name','syy']
    print('name' in a)		#True
    print('n' in a)			#False
    print('n' in a[0])		#True
    
    #只有字符串才能使用in/not in 
    

    字符串中的空格

    #strip()作用:
    	去除空格
    
    #strip(),默认去除字符串首尾的空格,不能去除中间的空格
    x = 'syy'
    y = '   syy   '
    print(x)
    print(y.strip())
    
    #使用strip()函数去除字符串首尾的指定字符,可以一次去除多个字符
    x = 'syy'
    y = '000syy000'
    print(x)
    print(y.strip('0s'))
    
    #strip()函数的操作对象只能是字符串
    #strip()函数可以接受多个字符,但是必须放到一个''内(想去除什么,就在里面加什么)
    #strip()函数去除多个字符的时候,只能在首/尾去掉的前提下去除多个字符
    #strip()函数通常与input()函数连用,input().strip(),防止用户输入的时候输入空格,导致程序匹配异常
    #lstrip()函数,只作用于字符串的左边,直到遇到不是指定的去除字符
    #rstrip()函数,只作用于字符串的右边
    

    replace()函数

    作用:
    	替换
    
    格式
    	str.replace(old, new[, max])
    
    参数
    old -- 将被替换的子字符串。
    new -- 新字符串,用于替换old子字符串。
    max -- 可选字符串, 替换不超过 max 次,默认替换所有
    
    #使用replace()函数,去除用户输入的空格
    x = 111
    y = '   syy   '
    print(x)
    print(y.replace(' ','',3))
    
    #替换字符串中的字符
    str = 'my name is syy,syy age is 18'
    print(str.replace('syy','wang',1))
    
    #整型、浮点型、列表、字典不能使用replace()函数,只有字符串可以使用replace()函数
    

    split() 函数

    作用:
    	对指定字符串,指定字符切片
        
    格式一:
    	str = 'syy is age 18'
        print(str.split())	#['syy', 'is', 'age', '18']	,默认以空格为分隔符
    
    格式二:
        data = 'syy|123|student'
        print(data.split('|'))		#['syy', '123', 'student']
        usernmae,password,info = data.split('|')	#解压赋值
        
    格式三:
        data = 'syy|123|student'
        print(data.split('|',1)) 	#['syy', '123|student']
    
    #整型、浮点型、列表、字典都不能使用split()函数
    #split()函数对字符串切分,结果是一个列表 
    #切割的顺序是从左向右
    #默认num=-1,指定字符串切割所有
    #lsplit()函数,从左边切字符串,默认
    #rsplit()函数,从右边切字符串
    

    join()函数

    #把字符串中的字符拼接成字符串
    data = 'syy'
    print('$'.join(data))	#s$y$y
    
    #把字符串切片,变成列表
    data = 'syy|123|student'
    print(data.split('|'))
    
    #对字符串切片变成列表,在把列表拼接成字符串
    s = data.split('|')
    print('$'.join(s))		#字符串syy$123$student
    
    #整型、浮点型不能使用join()函数拼接
    #列表可以使用join()函数,但是里面的元素要注意不能是整型、浮点型
    #字典也可以通过join()函数,拼接key
    
    l = ['1','a','b']	#小心1
    print('|'.join(l))
    

    lower()、upper()函数

    #字符串所有字母转小写
    s = 'Syy'
    print(s.lower())
    
    #字符串所有字母组转大写
    s = 'Syy'
    print(s.upper())
    
    #这两个函数只能针对字符串,包括含有数字的字符串、含有特殊字符的字符串
    #这两个函数可以解决用户登录的时候输入的大小写的问题
    #这两个函数没有改变字符串本身,改变的只是返回结果,该函数使用的是返回值
    

    startswith()、endswith()函数

    #判断字符串是不是以...开头
    s = 'my name is syy'
    print(s.startswith('my'))	#True
    
    #判断字符串是不是以...结尾
    s = 'my name is syy'
    print(s.endswith('syy'))	#True
    
    #这两个函数只能针对字符串,包括含有数字的字符串、含有特殊字符的字符串
    #这两个函数没有改变字符串本身,改变的只是返回结果
    #应用场景是,VIP用户、黑名单用户
    

    format()函数的三种玩法

    #按位置占位,跟%s原理一样
    s = 'my name is {},my age is {}'.format('syy',18)
    print(s)
    
    #按索引占位
    s = 'my name is {0},my age is {1}'.format('syy',18)
    print(s) 
    
    #指名道姓的占位,关键字传参
    s = 'my name is {name},my age is {age}'.format(name='syy',age=18)
    print(s)
    

    find()函数

    #判断字符串是否含有某个字符,
    	如果返回值 n>=0,代表该字符串含有指定的字符,并且指定字符的索引为n
        如果返回值是 -1.代表该字符串没有指定的字符
        
    #格式:(限制查找范围,顾头不顾尾)
    	str.find('s',n,m)
        
    str = 'my name is syy,syy age si 18'
    print(str.find('syy'))	#11
    
    #使用 in,可以判断一个字符串是否含有某个字符
    str = 'my name is syy,syy age si 18'
    if 'syy' in str:
        print('在')
    else:
        print('不在')
        
    #只有字符串才能使用find()函数,返回索引值
    #该函数不报错
    

    index()函数

    #该函数类似于find()
    #只能作用于字符串,返回索引值
    
    str = 'my name is syy,o age is 18'
    print(str.index('age',0,3))
    
    #该函数会报错
    

    count()函数

    作用:
    	计算字符串中某个字符出现的次数
        #只能作用于字符串、列表、元组,不能作用整型、浮点型、字典
      
    格式:(限制查找范围,顾头不顾尾)
    	str.count('s')
    
    #统计字符串中某个字符的个数
    str = 'my name is syy,o age is 18'
    print(str.count('syy'))
    
    #统计列表中某个元素的个数
    x = [1,2,3,3,2,1]
    print(x.count(1))
    

    center()、ljust()、rjust()函数

    作用:
    	 center(),把字符串居中,然后填充指定字符
         ljust(),把字符串居左,然后填充指定字符,相当于左对齐
         rjust(),把字符串居右,然后填充指定字符
         zfill(),把字符串居右,然后填充0
         
    格式:
    	str.center(N.'*')
        
    str = 'syy'
    print(str.center(10,'*'))
    
    str = 'syy'
    print(str.zfill(10))	#0000000syy
    
    #N的值随意,不报错,代表所有字符的总数
    #当填充奇数位个字符的时候,左少右多
    

    expandtabs()函数

    作用:
    	打印出指定个数的TAB键
        只能针对字符串中的	
        
    格式:
    	str.expandtabs(N)
    
    str = 'syy	18'
    print(str.expandtabs(2))
    

    captalize()、swapcase()、title()函数

    作用:
    	captalize(),把字符串整合成首字母大写,其他位小写的格式
        swapcase(),把字符串大小写互换
        title(),每个字母首字母大写,其他位小写
        只能针对字符串
        
    格式:
    	str.capitalize()
        str.swapcase()
        str.title()
    
    str = 'hELlo WoRld'
    print(str.capitalize())		#Hello world
    
    str = 'hELlo WoRld'
    print(str.swapcase())		#HelLO wOrLD
    
    str = 'hELlo WoRld'
    print(str.title())			#Hello World
    

    is数字系列

    作用:
    	判断字符串是否为数字,并且是纯数字,返回True/False
        isnumeric(),识别阿拉伯数字、中文数字
        is数字系列的作用与isdigit()函数类似,通常情况下使用isdigit()函数就可以满足需求
        
        
    格式:
    	num.isnumeric()
        num.isdecimal()
        num.isdigit()	#既支持普通的阿拉伯数字,也支持二进制数字
    
    #isnumeric()函数
    num1 = b'4'		#bytes,二进制数
    num2 = u'4'		#Unicode,python3中无需加u就是Unicode
    num3 = '肆'	   #中文数字
    num4 = 'IV'		#罗马数字
    
    print(num1.isnumeric())		#不识别
    print(num2.isnumeric())     #True,识别
    print(num3.isnumeric())     #True,识别
    print(num4.isnumeric())     #False,不识别
    

    isdigit() 函数

    作用:
    	判断用户的输入是否为纯数字字符串类型,可以直接作为条件,在if判断、循环
    
    while True:
        age = input('请输入你的年龄>>>: ')
        if age.isdigit():
            age = int(age)
            if age > 30:
                print('阿姨好')
            else:
                print('小姐姐好')
        else:
            print('请你他妈的好好输!!!')
    

    list()函数

    作用:
        #作用对象只能是字符串、字典,不能是整型、浮点型
        #内部的原理就是for循环取值,再把值添加到列表中
    
    l = 'syy'
    print(list(l))	#['s', 'y', 'y']
    
    l = [1,2,3]
    print(list(l))	#[1, 2, 3]
    
    l = {'name':'syy','age':18}
    print(list(l))	#['name', 'age']
    

    向列表中添加元素 --- 3中方法

    #整型、浮点型、字符串、字典不能使用append(),列表可以
    #append()一次只能向列表中添加一个元素,可以是整型、浮点型、列表、字符串、字典
    #使用append()函数,向列表的'末尾'添加元素,列表本身改变
    x = [8,9,10]
    x.append(11)
    print(x)	#[8, 9, 10, 11]
    
    #整型、浮点型、字符串、字典不能使用insert(),列表可以
    #insert()一次只能向列表中添加一个元素,可以是整型、浮点型、列表、字符串、字典
    #使用insert()函数,使用索引向列表的任意位置'前'添加元素,列表本身改变
    x = [8,9,10]
    x.insert(1,110)
    print(x)	#[8, 110, 9, 10]
    
    x = [8,9,10]
    x.insert(-1,110)
    print(x)	#[8, 9, 110, 10]
    
    #整型、浮点型、字符串不能使用extend(),列表、字典可以
    #extend()一次可以向列表中添加多个元素,可以是整型、浮点型、列表、字符串、字典
    #使用extend()函数,向列表的'末尾'添加元素,列表本身改变
    #extend()函数本质上使用的是for循环+append()函数
    x = [8,9,10]
    x.extend([1,2,3])
    print(x)		#[8, 9, 10, 1, 2, 3]
    
    x = [8,9,10]
    x.extend({'name':'syy'})
    print(x)	#[8, 9, 10, 'name']
    	
    print([1,2,3]+[2,3,4])		#[1, 2, 3, 2, 3, 4]
    

    在列表中删除元素 --- 3中方法

    #整型、浮点型、字符串、列表、字典都可以使用关键字del删除字符、元素
    
    #删除整型、浮点型本身
    x = 111
    del x
    print(x)
    
    #删除字符串本身
    x = 'syy'
    del x
    print(x)
    
    #删除列表中的元素
    x = [8,9,10]
    del x[1]
    print(x)
    
    #删除字典中的键值对
    x = {'name':'syy'}
    del x['name']
    print(x)
    
    #整型、浮点型不能使用pop()函数,列表、字典可以使用pop()函数
    #作用是,默认从列表或字典的末尾弹出元素、键值对,删除的时候有返回值
    #当pop(N)指定索引时,则弹出指定索引对应的元素
    #可以使用在用户退出登录的界面
    x = [1,2,3]
    print(x.pop())	#3
    print(x)		#[1, 2]
    print(x.pop())	#2
    
    #整型、浮点型、字符串、字典不能使用remove(),列表可以
    #作用是删除列表中指定的元素,删除的时候没有返回值
    x = [1,2,3]
    x.remove(2)
    print(x)	#[1, 3]
    

    reverse()函数

    作用:
    	将列表中的元素、键值对反向排列
        #reverse()函数只能作用于列表,不能作用于整型、浮点型、字符串、字典
        #reverse()函数没有返回值
        
    格式:
    	str.reverse()
    
    x = [1,2,3]
    x.reverse()
    print(x)			#[3, 2, 1]
    print(x.reverse())	#None
    
    #列表是可变数据类型
    x = [1,2,3]
    print(id(x))
    x.reverse()
    print(id(x))
    

    sort()函数

    作用:
    	将列表中的数据排列
        #只能针对列表,默认升序排列
    
    格式:
    	str.sort()
        str.sort(reverse=True)
        
    x = [1,2,3,3,2,1]
    x.sort()
    print(x)			#[1, 1, 2, 2, 3, 3]
    print(x.sort())		#None
    

    clear()函数

    #作用:
    	清空列表内的元素
        只能作用于列表,字典,不能用于清空整型、浮点型、字符串、元组
        
    #格式:
    	list.clear()
    
    #清空列表
    a = ['123']
    a.clear()
    print(a)
    
    #清空字典
    a = {'name':'syy'}
    a.clear()
    print(a)
    

    运算

    运算符

    数学运算:
    print(10 + 3)		
    print(10 - 3)
    print(10 * 3)
    print(10 / 3)		#结果保留小数部分
    print(10 // 3)		#只保留整数部分
    print(10 % 3)		#取余数
    print(10 ** 3)		#次方
    
    #python对数字运算的敏感度不高
    
    比较运算:
    	==
        !=
        >
        <
        >=
        <=
    
    print(10 != 9)
    
    字符串的运算,(阿斯克码)
    a = 'hello'
    b = 'z'
    print(b>a) 	#True,原理是asicII码,A-Z a-z
    
    增量运算
    	xxx +=1		#等于 xxx = xxx +1
        xxx -=1
        xxx *=1
        xxx /=1
        xxx %=1
        
    链式赋值,原理是变量名对id的指向  
        m =1
        n =m
        print(m)	#1
        print(n)	#1
        m =111
        print(n)	#1
        
    交叉赋值
    	m,n = n,m
        
    解压赋值
    	l = [1,2,3,4]
        a = l[0]
        b = l[1]
        c = l[2]
        d = l[3]
        
        a,b,c,d = l
        #解压赋值中,前面变量的个数与后面的元素的个数必须相同
        
        a,_,_,d = l
        #解压部分值,然后赋值,此时 print(_) = 3
        
        a,*_,d = l
        #可以使用*_ 代表多个列表中的元素
        
    逻辑运算,and or not		#对应与、或、非
    print(1 > 0 and 3 > 4)		#False
    print(1 > 0 or 3 > 4)		#True
    print(not 1 > 0)			#False
    

    流程控制

    if判断

    if判断:
    	让计算机像人一样去工作,那么计算机也应该有对事物的对错、真假、是否可行的判断能力,从而做出不同的响应
        
    语法一:
    	if 条件:
        	代码1
        代码2
    
    #python用缩进来表示代码的归属,同一缩进的代码,称之为代码块
    #布尔值为False的数据有哪些,0、None、''、[]、{}
    
    gender = 'female'
    age = 24
    is_beautiful = True
    
    if gender == 'female' and age > 18 and age < 30 and is_beautiful:
        print('小姐姐好漂亮')
    print('正常执行结束')
    
    语法二:
    	if 条件:
        	代码1
        else:
        	代码2
            
    if gender == 'female' and age > 18 and age < 30 and is_beautiful:
        print('小姐姐好漂亮')     
    else:
        print('什么玩意儿')
            
    语法三:
    	if 条件:
        	代码1
        elif:
        	代码2    
        elif:
        	代码3   
        else:
        	代码4    
    
    #if ... else ... 和 if ... elif ... else ... 中,只会同时满足一个条件,同时只会执行一个代码块
    
    语法三:
    if 条件1:
        if 条件2:
            ...
        ...
    ...
    
    #成绩查询
    #代码一:
    score2 = input('please input your score >>>:')
    score = int(score)
    if score >= 90:
        	print('优秀')
    elif score >= 80 and score <90:
        	print('良好')
    elif score >= 70 and score <80:
        	print('普通')    
    else:
        print('其他')
        
    #代码二:
    score = input('please input your score >>>:')
    score2 = int(score)
    if score2 >= 90:
        	print('优秀')
    elif score >= 80:
        	print('良好')
    elif score >= 70:
        	print('普通')    
    else:
        print('其他') 
        
    #模拟登陆
    db_username = 'syy'
    db_password = '123'
    username = input('please input your username >>>:')
    password = input('please input your password >>>:')
    if username == db_username and password == db_password:
        print('登陆成功')
    else:
        print('登陆失败')
        
    #每个星期的计划
    如果今天是Monder,上班
    如果今天是Tuesday,上班
    如果今天是wednesday,上班
    如果今天是Thursday,上班
    如果今天是Friday,上班
    如果今天是Saturday,出去浪
    如果今天是Sunday,出去浪
    
    代码一:
    today = input('>>>: ')
    if today == 'Monder':
        print('上班')
    elif today == 'Tuesday':
        print('上班')
    elif today == 'wednesday':
        print('上班')
    elif today == 'Thursday':
        print('上班')
    elif today == 'Friday':
        print('上班')
    elif today == 'Saturday':
        print('出去浪')
    elif today == 'Sunday':
        print('出去浪')
    else:
        print('必须输入以下其中一个:
              Monder、Tuesday、wednesday、Thursday、Friday、Saturday、Sunday
              ')
    代码二:
    today = input('>>>: ')
    if today in ['Monder','Tuesday','wednesday','Thursday','Friday','Saturday','Sunday']:
        print('出去浪')
    elif today in ['Saturday','Sunday']:
        print('出去浪')
    else:
        print('必须输入以下其中一个:
              Monder、Tuesday、wednesday、Thursday、Friday、Saturday、Sunday
              ')
    

    while循环

    定义:
    	只要条件成立,就执行循环体代码,直到条件不成立
    
    作用:
    	重复的执行一个或多个代码块
    	
    语法一:
    	while 条件:
            代码
            
    语法二:
    	while 条件:
            代码
            break
            
    语法三:
    	while 条件:
            代码
            continue
            
    语法四:
    	while 条件:
            代码1
        else:
        	print('while循环正常结束')
            
    语法五:
    	#break执行,else后面的代码将不会执行
    	while 条件:
            代码1
            break
        else:
        	print('while循环正常结束')
            
    语法六:
    	while 条件:
            代码1
            continue
        else:
        	print('while循环正常结束')
            
        #只有当while循环根据条件正常结束才会走else后面的代码块,如果是主动结束(比如:break),那么,将不会走else后面的代码块
            
    死循环:
        while True:
        	print('hello world')
            
    结束循环-- break,结束整个while循环,不会执行后续的代码:
    db_username = 'syy'
    db_password = '123'
        while True:
            username = input('please input your username >>>:')
            password = input('please input your password >>>:')
            if username == db_username and password == db_password:
                print('登陆成功')
                break
            else:
                print('登陆失败')  
                
    结束循环-- continel,结束本次while循环,不会执行本次后续的代码:
    n = 1
    while n < 11:
        if n == 4:
            n+=1
            continue
        print(n)
        n+=1
            
    结束循环的第三种方式-- 改变条件,这种方式会执行后续的代码
    m = True
    n = 1
    while m:
        if n == 99:
            m = False
        print(n)
        n+=1
    

    while循环嵌套

    代码一:
    db_username = 'syy'
    db_password = '123'
    while True:
        username = input('please input your username >>>: ')
        password = input('please input your password >>>: ')
        if username == db_username and password == db_password:
            print('登录成功')
            while True:
                cmd = input('please input your cmd >>>: ')
                if cmd == 'q' or cmd == 'Q':
                    break
                print('%s is runing' %cmd)
            break
        else:
            print('登陆失败')
            
    代码二:
    db_username = 'syy'
    db_password = '123'
    flag = True
    while flag:
        username = input('please input your username >>>: ')
        password = input('please input your password >>>: ')
        if username == db_username and password == db_password:
            print('登录成功')
            while flag:
                cmd = input('please input your cmd >>>: ')
                if cmd == 'q' or cmd == 'Q':
                    flag = False
                print('%s is runing' %cmd)
            flag = False
        else:
            print('登陆失败')
    
    限制用户登录错误的尝试次数,
    	1.用户尝试三次还不对的情况下直接结束程序。
        2.用户尝试三次错误之后,提示用户是否继续尝试,如果用户输入y,那么再给用户三次机会,如果用户输入q,直接结束程序
    
    代码一:
    db_username = 'syy'
    db_password = '123'
    count = 1
    while count < 4:
        username = input('please input your username >>>: ')
        password = input('please input your password >>>: ')
        if username == db_username and password == db_password:
            print('登录成功')
        else:
            print('登陆失败')
            count+=1
    else:
        print('登录次数已用尽,程序结束')
        
    代码二:
    db_username = 'syy'
    db_password = '123'
    count = 1
    while count < 4:
        username = input('please input your username >>>: ')
        password = input('please input your password >>>: ')
        if username == db_username and password == db_password:
            print('登录成功')
        else:
            print('登陆失败')
        	count+=1
    else:
        res = input('是否继续尝试>>>: ')
        count2 = 1
        while count2 < 4:
            if res == 'y':
                while count2 < 4:
                    username = input('please input your username >>>: ')
                    password = input('please input your password >>>: ')
                    if username == db_username and password == db_password:
                        print('登录成功')
                    else:
                        print('登陆失败')
                    	count2 += 1
                    print('6次登录次数已用尽,程序结束')
            elif res == 'q':
                print('3次登录次数已用尽,程序结束')
            else:
                print('请输入y/q')
                res = input('是否继续尝试>>>: ')
                
    代码三:
    db_username = 'syy'
    db_password = '123'
    n=1
    while True:
        if n == 4:
            while True:
                res = input('3次访问次数已用尽,是否要继续输入?(y/n)')
                if res == 'y':
                    n = 1
                	break           
                elif res == 'n':
                    break
                else:
                    print('请输入y/n')
        username = input('please input your username >>>: ')
        password = input('please input your password >>>: ')
        if username == db_username and password ==password:
            print('登录成功')
        else:
            print('登录失败')
            n+=1
    

    for循环

    优点:
    	不依赖索引取值
        在容器中取完值自动结束
        整型、浮点型不能使用for循环直接取值,字符串、列表、字典可以使用for循环直接取值/key
        
    语法一:
    	for 变量名 in 容器类型:
            代码
            
    语法二:    
        #break,结束整个循环
        for 变量名 in 容器类型:
            if 条件:
            	break
            代码
    语法三:
        #continue,结束本次循环
        for 变量名 in 容器类型:
            if 条件:
            	continue
            代码  
            
    语法四:    
        #break,结束整个循环,不会运行else中的代码块
        for 变量名 in 容器类型:
            if 条件:
            	break
            代码 
        else:
            代码
            
    语法五:
        #continue,结束本次循环,会运行else中的代码块
        for 变量名 in 容器类型:
            if 条件:
            	continue
            代码 
        else:
            代码
            
    循环打印:
    	for i in range(1,10):		#range()函数顾头不顾尾
        	print(i)
            
    range()在python2与python3中的区别:
    	python2中range()就是一个列表
        python2中的xrange()就是python3中的range()
        python3中的range()本质上是一个迭代器,不会占用多余的内存
    

    for循环的嵌套

    打印99乘法表:
    1*1=1
    2*1=2 2*2=4
    3*1=3 3*2=6 3*3=9
    ...
    9*1=9 ... 9*9=81
    
    代码:
        for i in range(1,10):
            for j in range(1,i+1):
                print('%s*%s=%s'%(i,j,i*j),end=' ')
            print()
            
        1*1=1 
        2*1=2 2*2=4 
        3*1=3 3*2=6 3*3=9 
        4*1=4 4*2=8 4*3=12 4*4=16 
        5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 
        6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 
        7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 
        8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 
        9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
        
    #print(),打印出空行,相当于回车键
    for i in range(1,10):
        print()
    
    #print(end=' '),打印特殊符号,不换行
    for i in range(1,10):
        print(i,end='|')
        
    #打印金字塔
    	#当前层级current_level	空格数		星号数
        	1					9		1
            2					8		3
            3					7		5
            
    max_level = 10
    for current_level in range(1,max_level+1):
        for i in range(max_level-current_level):
            print(' ',end='')
        for j in range(current_level*2-1):
            print('*',end='')
        print()
        
             *
            ***
           *****
          *******
         *********
        ***********
       *************
      ***************
     *****************
    *******************
    

    循环索引取值

    #while + 字符串
    l = 'hello world'
    n =0
    while n < len(l):
        print(l[n])
        n+=1
    
    #while + 列表
    l = [1,4,7,2,5,8,3,6,9]
    n =0
    while n < len(l):
        print(l[n])
        n+=1
    
    #while + 字典
    	#字典取值的2种方法,字典取值必须要知道键才能取值
        a = {'name':'syy','age':18,'habby':'run'}
        print(a['name'])
        print(type(['name']))
        print(a.get('name'))
        print(type(['name']))
    
        错误实例:
        L = {'name':'syy','age':18,'habby':'run'}
        # n = 0
        # while n < len(L):
        #     print(L[n])	#字典中没有索引,所以不能使用索引取值,字典必须通过键取值
        #     n+=1
        print(L[*])
    
    #for + 字符串
    l = 'hello world'
    for i in l:
        print(i)
    
    #for + 列表
        l = [1,4,7,2,5,8,3,6,9]
        for i in l:
            print(i)
        
    #for + 字典
        L = {'name':'syy','age':18,'habby':'run'}
        for i in L:
            print(i)
    
        L = {'name': 'syy', 'age': 18, 'habby': 'run'}
        for i in L:
            print(i,L[i])
    

    队列和堆栈

    #队列,先进先出
    x = []
    x.append('first')
    x.append('second')
    x.append('third')
    
    print(x.pop(0))
    print(x.pop(0))
    print(x.pop(0))
    
    #堆栈,先进后出
    x = []
    x.append('first')
    x.append('second')
    x.append('third')
    
    print(x.pop())
    print(x.pop())
    print(x.pop())
    
  • 相关阅读:
    Shell脚本实现用户数据导入
    Sping Cloud 微服务框架学习
    Redis学习笔记
    HTML+CSS实现简单三级菜单
    CSS Float浮动所带来的奇怪现象
    CSS如何清除浮动流的多种方案
    ECMAScript/JS 基础知识讲解
    Python的生成器
    Python包的导入说明
    Paramiko模块简单使用
  • 原文地址:https://www.cnblogs.com/syy1757528181/p/14059455.html
Copyright © 2011-2022 走看看