• PYTHON学习---第一部分


    第一个程序

    1 #!/usr/bin/env python
    2 # -*- coding: utf-8 -*-
    3 # Author:xll
    4 print("Hello World!")

    在linux上需要用#!/usr/bin/env python告诉系统用什么解释器来执行此段代码

    # -*- coding: utf-8 -*-则是指示此段代码的编码格式,一般作为固定格式

    变量

    复制代码
     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 # Author:xll
     4 name = "Xll"
     5 name1 =  name
     6 print("My name is ",name,name1) 
    7
    8 name = "WangPin" 9 10 print("My name is ",name,name1)
    复制代码

    变量定义的规则:

    • 变量名只能是 字母、数字或下划线的任意组合
    • 变量名的第一个字符不能是数字
    • 以下关键字不能声明为变量名
    • ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

    PS:变量是用来存东西的;变量名要有含义;变量名大写代表常量,不应该去修改它

    编码

    • ASCII        一个字符占一个字节,即8位
    • UNICODE   一个字符占两个字节,即16位
    • UTF-8        存英文字符占一个字节,存中文占三个字节

    注释

    #         注释单行,PS:pycharm中可以用ctrl+/进行批量注释,或者批量反注释

    ''' '''或者""" """      多行注释,前面加变量可以进行多行输入输出

    用户输入

    复制代码
    1 #!/usr/bin/env python
    2 # -*- coding: utf-8 -*-
    3 # Author:xll
    4 
    5 name = input("Please input your name:")
    6 print(name)
    复制代码

    输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法, 如下:

    复制代码
    1 #!/usr/bin/env python3
    2 # -*- coding: utf-8 -*-
    3 # Author:xll
    4 import  getpass
    5 
    6 username = input("Username:")
    7 passwd = getpass.getpass("Passwd:")
    8 
    9 print(username,passwd)
    复制代码

    PS:getpass在pycharm中不好使,试着在命令行窗口运行。

    循环

    while循环

    复制代码
     1 #!/usr/bin/env python3
     2 # -*- coding: utf-8 -*-
     3 # Author:xll
     4 
     5 age_of_breakering = 25
     6 
     7 count = 0
     8 
     9 while count < 3:
    10     guessage = int(input("Guessage:"))
    11     if age_of_breakering == guessage:
    12         print("Yeah you got it !")
    13         break
    14     elif age_of_breakering > guessage:
    15         print("Think bigger!")
    16     else:
    17         print("Think smaller!")
    18     count += 1
    19 else:
    20     print("You have tried too much times!")
    复制代码

    for循环

    复制代码
     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 # Author:xll
     4 age = 25
     5 
     6 for i in range(3):
     7     guessage = int(input("Guessage:"))
     8     if age == guessage:
     9         print("Yeah you got it !")
    10         break
    11     elif age > guessage:
    12         print("Think bigger!")
    13     else:
    14         print("Think smaller!")
    15 else:
    16     print("You have tried too much times!")

    模块

    Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单的。

    sys

    1 import sys
    2 print(sys.path) #打印环境变量
    3 print(sys.argv)
    4 print(sys.argv[2]) #接受执行脚本时输入的第二个参数

    os

    1 import  os
    2 cmd_res = os.system("dir")  #执行命令,不保存结果
    3 cmd_res = os.popen("dir").read()
    4 print("---->",cmd_res)
    5 os.mkdir("new_dir")        #在当前路径下创建一个新的目录

    完全结合一下

    1 import os,sys
    2  
    3 os.system(''.join(sys.argv[1:])) #把用户的输入的参数当作一条命令交给os.system来执行

     

    pyc是个什么鬼?

    参考大王博客:http://www.cnblogs.com/alex3714/articles/5465198.html

    PS:pyc 是预编译的字节码

    数据类型

    1、数字

    2 是一个整数的例子。
    长整数 不过是大一些的整数。
    3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。
    (-5+4j)和(2.3-4.6j)是复数的例子,其中-5,4为实数,j为虚数,数学中表示复数是什么?。

    int(整型)             PS:python3没有长整型

      在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
      在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
    float(浮点型)
          先扫盲 http://www.cnblogs.com/alex3714/articles/5895848.html 
      浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
    complex(复数)
      复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
    注:Python中存在小数字池:-5 ~ 257
     
    2、布尔值
      真或假
      1 或 0
    3、字符串
    1 name = 'Xll'
    4、列表
    1 l = ["Xll","WangHua"]
    5、元组(不可变列表)
    1 t = ("Xll","WangHua")
    6、字典(无序)
    1 person_dict = {
    2                      "Xll":26,
    3                      "WangHua":27
    4 }

     

    数据运算

    算数运算:

    比较运算:

    赋值运算:

    逻辑运算:

    成员运算:

    身份运算:

    位运算:

    复制代码
     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 # Author:xll
     4 a = 80             #80  = 0101 0000
     5 b = 60             #60  = 0011 1100
     6 
     7 c = a & b          #16  = 0001 0000
     8 
     9 d = a | b          #124 = 0111 1100
    10 
    11 e = a ^ b          #108 = 0110 1100    #相同为0,不同为1
    12 
    13 f = ~a             #-81 = 1010 1111  175-256=-81
    14 
    15 g = a << 2         #320 = 1 0100 0000
    16 
    17 h = a >> 2         #20  = 0001 0100
    复制代码

    *按位取反运算规则(按位取反再加1)   详解http://blog.csdn.net/wenxinwukui234/article/details/42119265

    运算符优先级:

    更多内容:http://www.runoob.com/python/python-operators.html

    判断if....else

    复制代码
     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 # Author:xll
     4 age_of_oldboy = 56
     5 
     6 count = 0
     7 
     8 while count < 3:
     9     guessage = int(input("Guessage:"))
    10     if age_of_oldboy == guessage:
    11         print("Yeah you got it !")
    12         break
    13     elif age_of_oldboy > guessage:
    14         print("Think bigger!")
    15     else:
    16         print("Think smaller!")
    17     count += 1
    18     if count == 3:
    19         continue_confirm = input("Do you want to continue:[Y/N]")
    20         if continue_confirm != "N":
    21             count = 0
    复制代码

     

    bytes类型

    python3的bytes&str之别

    复制代码
     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 # Author:xll
     4 
     5 info = "我是最棒的"
     6 
     7 print(info)
     8 #我是最棒的
     9 print(info.encode(encoding="utf-8"))
    10 #b'xe6x88x91xe6x98xafxe6x9cx80xe6xa3x92xe7x9ax84'
    11 print(info.encode(encoding="utf-8").decode(encoding="utf-8"))
    12 #我是最棒的
    复制代码

    三元运算

    1 result = 值1 if 条件 else 值2

    如果条件为真:result = 值1
    如果条件为假:result = 值2

    进制

    • 二进制,01
    • 八进制,01234567
    • 十进制,0123456789
    • 十六进制,0123456789ABCDEF  二进制到16进制转换http://jingyan.baidu.com/album/47a29f24292608c0142399cb.html?picindex=1

    计算机内存地址和为什么用16进制?

    为什么用16进制
    1、计算机硬件是0101二进制的,16进制刚好是2的倍数,更容易表达一个命令或者数据。十六进制更简短,因为换算的时候一位16进制数可以顶4位2进制数,也就是一个字节(8位进制可以用两个16进制表示)
    2、最早规定ASCII字符集采用的就是8bit(后期扩展了,但是基础单位还是8bit),8bit用2个16进制直接就能表达出来,不管阅读还是存储都比其他进制要方便
    3、计算机中CPU运算也是遵照ASCII字符集,以16、32、64的这样的方式在发展,因此数据交换的时候16进制也显得更好
    4、为了统一规范,CPU、内存、硬盘我们看到都是采用的16进制计算


    16进制用在哪里
    1、网络编程,数据交换的时候需要对字节进行解析都是一个byte一个byte的处理,1个byte可以用0xFF两个16进制来表达。通过网络抓包,可以看到数据是通过16进制传输的。
    2、数据存储,存储到硬件中是0101的方式,存储到系统中的表达方式都是byte方式

    3、一些常用值的定义,比如:我们经常用到的html中color表达,就是用的16进制方式,4个16进制位可以表达好几百万的颜色信息。

    列表

    列表是我们以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作

     1 names=['ZhangSan','LiSi','WangWu','MaZi','ZhaoYun','QiSan']
     2 names.append('LeiHaidong')
     3 names.insert(2,'WangErxiao')
     4 names[2]='XieDi'
     5 print(names)
     6 #names.remove('LiSi')  #删除
     7 #del names[2] #删除
     8 #names.pop(2) #删除
     9 #print(names[names.index("QiSan")])  #index("值")找到位置
    10 print(names.count('QiSan')) #查找某个值的个数
    11 #names.clear()  #清空
    12 #names.reverse() #反转
    13 #names.sort() 排序
    14 names2=[1,2,3,45,6,7,78,89,0]
    15 names.extend(names2)
    16 del names2
    17 print(names)
    18 #print(names[0],names[2])
    19 #print(names[-3:])
    20 #print(names[:2])

    字典

    字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。

    复制代码
    1 #!/usr/bin/env python
    2 # -*- coding: utf-8 -*-
    3 # Author:xll
    4 name_dict = {
    5         "Xll":29,
    6         "WangHua":24,
    7         "ZhangXiao":25,
    8         "YinZhiqia":26
    9          }
    复制代码

    字典的特性:

    • dict是无序的                          PS:dict无序是因为dict没有下标
    • key必须是唯一的,so 天生去重
    循环dict
    复制代码
    1 #循环字典
    2 #方法1
    3 for key in name_dict:
    4     print(key,name_dict[key])
    5 
    6 #方法2
    7 for k,v in name_dict.items(): #会先把dict转成list,数据量大时莫用
    8     print(k,v)
    复制代码

    文件操作

    对文件操作流程

    1. 打开文件,得到文件句柄并赋值给一个变量
    2. 通过句柄对文件进行操作
    3. 关闭文件
     1 #! /usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 # Auther:Xll
     4 
     5 f1 = open("aaaa1",'w',encoding="utf-8") #文件句柄
     6 #data = f1.readline()
     7 f1.write("
    I love BeiJing TianAnmen!
    ")
     8 f1.write("The Sun rise on TianAnmen !")
     9 f1.write("
    hello
    "
    10 ''' low loop
    11 for index,line in enumerate(f1.readlines()):
    12     if index == 9:
    13         print("-------end--------")
    14         break
    15     print(line.strip())
    16 
    17 ###high big 迭代器
    18 count=0
    19 for line in f1:
    20     if count == 9:
    21         print("This is the ten line----")
    22         break
    23     print(line.strip())
    24     count += 1
    25 print(f1.tell())
    26 print(f1.readline())
    27 print(f1.tell())
    28 f1.seek(100)
    29 print(f1.tell())
    30 print(f1.readline())
    31 print(f1.encoding)
    32 '''
    33 print(f1.flush()) #刷新缓存中的写入内容到文件中
    34 #print(dir(f1.buffer) )
    35 
    36 f1.close()
    37 #for i in data:
    38 #print(data)
     1 #! /usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 # Auther:Xll
     4 import sys,time
     5 '''
     6 for i in range(10):
     7     sys.stdout.write("#")
     8     sys.stdout.flush()
     9     time.sleep(0.2)
    10 '''
    11 #f = open("aaaa",'r+',encoding="utf-8")#读写模式,3.0只支持追加邪
    12 #f = open("aaaa",'w+',encoding="utf-8")~~一般没用
    13 #f = open("aaaa",'wb') #网络传输,视频格式、二进制文件 使用
    14 #f.write("hello binary
    ".encode())
    15 #print(f.readline())
    16 #print(f.readline())
    17 #print(f.readline())
    18 #print(f.tell())
    19 #print(f.read())
    20 f = open("1a",'r',encoding="utf-8")
    21 f1 = open("2a",'w',encoding="utf-8")
    22 for line in f:
    23     if '肆意的快乐' in line:
    24         line = line.replace("肆意的快乐","肆意的快乐等我来享受")
    25     f1.write(line)
    26 
    27 f.close()
    28 f1.close() 

    函数是什么?

    函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法。在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method。

    定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可

    特性:

    1. 减少重复代码
    2. 保持一致性
    3. 代码可扩展

    函数的参数:

    • 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量
    • 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值

    函数的简单用法:

    #! /usr/bin/env python
    # -*- coding:utf-8 -*-
    # Auther:Xll
    '''
    形式参数
    关键字参数
    位置参数
    关键字参数必须在形式参数之前。
    默认参数
    #不定参数函数
    def conn(x,y=18,*args):
    print(x)
    print(y)
    print(args)

    conn("alex",22,1,2,3,4,55,6,7,8,8,9,00,0)

    # **kwargs 把N个关键字参数,转换成字典的形式
    def test2(**kwargs):
    print(kwargs)
    test2(name='alex',age=24,sex="F",work="teacher")

    #函数中变量的作用域,仅能在函数内作用
    def change_name(name):
    print("before change",name)
    name = "alex"

    print("after change" ,name)

    name='Alex'
    change_name(name)
    print(name)
    '''

    #函数的递归调用
    def calc(x):
    print(x)
    if int(x/2)>0:
    return calc(int(x/2))
    print("--->",x)
    calc(100)
     
  • 相关阅读:
    Max Sum of Max-K-sub-sequence(单调队列)
    Matrix Swapping II(求矩阵最大面积,dp)
    重温世界杯(贪心)
    Pie(求最小身高差,dp)
    Matrix(多线程dp)
    Python 实现自动导入缺失的库
    分布式系统session一致性解决方案
    数据结构 【链表】
    【数字图像处理】gamma变换
    【数字图像处理】顶帽变换和底帽变换
  • 原文地址:https://www.cnblogs.com/yunzaixiao/p/6942346.html
Copyright © 2020-2023  润新知