• Python基础


    输入输出 I/O

    输入

    >>> name = input("input your name:")
    input your name:focksor
    >>> name
    'focksor'
    

    输出

    >>> variables_int = 1
    >>> variables_str = "str"
    >>> print("output:", variables_str, "v=%s" % variables_int)
    output: str v=1
    

    print中可以以,分隔,传入多个参数,这些参数要可以强制转换为str类型,这些参数在输出时会自动在中间插入一个空格。

    不管是什么类型,%s就完事了

    内建数据类型

    整数

    进制表示

    整数在不同进制下的表示:

    二进制0b100,八进制0o100,十进制100,十六进制0x100

    >>> 0b100
    4
    >>> 0o100
    64
    >>> 100
    100
    >>> 0x100
    256
    

    进制转换

    转二进制:

    >>> bin(100)
    '0b1100100'
    >>> bin(0o100)
    '0b1000000'
    >>> bin(0x100)
    '0b100000000'
    
    

    转八进制:

    >>> oct(0b100)
    '0o4'
    >>> oct(100)
    '0o144'
    >>> oct(0x100)
    '0o400'
    

    转十进制:

    >>> int("100", 2)
    4
    >>> int("100", 8)
    64
    >>> int("100", 16)
    256
    >>> int("100", 66)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: int() base must be >= 2 and <= 36, or 0
        
    >>> int(0b100)
    4
    >>> int(0o100)
    64
    >>> int(0x100)
    256
    

    转十六进制:

    >>> hex(0b100)
    '0x4'
    >>> hex(0o100)
    '0x40'
    >>> hex(100)
    '0x64'
    

    浮点数

    >>> 123.456789
    123.456789
    >>> 123.456789e6 # 科学计数法
    123456789.0
    

    布尔型

    >>> True and False # 与
    False
    >>> True or False # 或
    True
    >>> not False # 否
    True
    >>> not True or True and False # 优先级
    False
    
    

    andornot的优先级:or < and < not,同一优先级从左往右计算。

    not True or True and False运算过程:

    -> False or True and False

    -> False or False

    -> False

    字符串

    >>> "hello world!"
    'hello world!'
    

    字符串拼接

    >>> "hello %s!"%"god_fish"
    'hello god_fish!'
    >>> "{0} and {1} are {2}.".format("XiaoMing", "XiaoHong", "friends")
    'XiaoMing and XiaoHong are friends.'
    
    

    编码转换

    单字符转换:

    >>> ord("中")
    20013
    >>> ord("A")
    65
    >>> chr(20013)
    '中'
    >>> chr(65)
    'A'
    

    字符串转换:

    >>> "中文".encode("utf8")
    b'xe4xb8xadxe6x96x87'
    >>> b'xe4xb8xadxe6x96x87'.decode("utf8")
    '中文'
    >>> "ABC".encode("utf8")
    b'ABC'
    >>> b'ABC'.decode("utf8")
    'ABC'
    >>> b'ABC'.decode("ascii")
    'ABC'
    

    列表/list

    下标索引:

    >>> l = ['a', 'b', 'c', 1, 2, False]
    >>> l
    ['a', 'b', 'c', 1, 2, False]
    >>> l[0]
    'a'
    >>> l[1]
    'b'
    >>> l[-1]
    False
    

    追加元素:

    >>> l
    ['a', 'b', 'c', 1, 2, False]
    >>> l.append(True)
    >>> l
    ['a', 'b', 'c', 1, 2, False, True]
    

    插入元素:

    >>> l
    ['a', 'b', 'c', 1, 2, False, True]
    >>> l.insert(3, 'd')
    >>> l
    ['a', 'b', 'c', 'd', 1, 2, False, True]
    

    推出元素:

    >>> l
    ['a', 'b', 'c', 'd', 1, 2, False, True]
    >>> l.pop(3)
    'd'
    >>> l
    ['a', 'b', 'c', 1, 2, False, True]
    

    列表中的各个元素类型可以不一样。

    列表切片

    l = list(range(10))
    
    print("原始列表:")
    print(l)
    
    print("取列表的[start, 3)部分, 即l[0],l[1],l[2],不包括l[3]")
    print(l[:3])
    
    print("取列表的[5, end]部分")
    print(l[5:])
    
    print("取列表的[3,5)部分")
    print(l[3:5])
    
    print("取列表的[-3, end]部分,这里的索引-3是指倒数第三个")
    print(l[-3:])
    
    print("取列表的[start, -3)部分")
    print(l[:-3])
    
    print("取列表的[3,8)部分,每两位取一次")
    print(l[3:8:2])
    
    print("取整个列表,每两位取一次")
    print(l[::2])
    

    原始列表:
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    取列表的[start, 3)部分, 即l[0],l[1],l[2],不包括l[3]
    [0, 1, 2]
    取列表的[5, end]部分
    [5, 6, 7, 8, 9]
    取列表的[3,5)部分
    [3, 4]
    取列表的[-3, end]部分,这里的索引-3是指倒数第三个
    [7, 8, 9]
    取列表的[start, -3)部分
    [0, 1, 2, 3, 4, 5, 6]
    取列表的[3,8)部分,每两位取一次
    [3, 5, 7]
    取整个列表,每两位取一次
    [0, 2, 4, 6, 8]

    列表迭代

    l = list(range(10))
    
    print("迭代列表中的所有元素")
    for i in l:
        print(i)
    
    print("以【索引+元素】方式迭代列表")
    for i,v in enumerate(l):
        print("索引为%s的元素是%s" % (i, v))
    

    迭代列表中的所有元素
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    以【索引+元素】方式迭代列表
    索引为0的元素是0
    索引为1的元素是1
    索引为2的元素是2
    索引为3的元素是3
    索引为4的元素是4
    索引为5的元素是5
    索引为6的元素是6
    索引为7的元素是7
    索引为8的元素是8
    索引为9的元素是9

    元组/tuple

    元组可以看作是不可变的列表,相比列表,tuple一经初始化便不能修改,相比list来说,更节省运行资源。

    >>> t = (1, 2, 3, "a", "b", "c")
    >>> t[0]
    1
    >>> t[1]
    2
    >>> t[-1]
    'c'
    >>> t[-2]
    'b'
    

    字典/dict

    字典是通过哈希计算获得值的,存取速度与字典大小无关。

    >>> d={"a":70, "b":80, "c":90}
    >>> d["a"]
    70
    >>> d["a"]=71
    >>> d
    {'a': 71, 'b': 80, 'c': 90}
    

    以安全方式获取值:

    >>> d
    {'a': 71, 'b': 80, 'c': 90}
    >>> d.get("a", 100)
    71
    >>> d.get("d", 100)
    100
    

    弹出键值对:

    >>> d.pop("a")
    71
    >>> d
    {'b': 80, 'c': 90}
    

    字典迭代

    print("迭代字典中的所有元素")
    for i in d.keys():
        print(i, "->", d[i])
    
    for k,v in d.items():
        print(k, "->", v)
    

    集合/set

    集合可看作没有的字典,其内部的元素是不可重复的。

    创建集合:

    >>> s = set([1,2,3,3,4])
    >>> s
    {1, 2, 3, 4}
    

    添加元素:

    >>> s
    {1, 2, 3, 4}
    >>> s.add(5)
    >>> s
    {1, 2, 3, 4, 5}
    

    删除元素:

    >>> s
    {1, 2, 3, 4, 5}
    >>> s.remove(5)
    >>> s
    {1, 2, 3, 4}
    

    判断

    >>> if a<b:
    ...     printf(a, "<", b)
    ... elif a==b:
    ...     print(a, "=", b)
    ... else:
    ...     print(a, ">", b)
    ...
    

    循环

    >>> sum=0
    >>> for i in range(100+1):
    ...     sum += i
    ...
    >>> sum
    5050
    
  • 相关阅读:
    Tribonacci UVA 12470 (简单的斐波拉契数列)(矩阵快速幂)
    P1091 合唱队形
    P1481 魔族密码 (LIS)
    xiaowuga poj3735—Training little cats(特殊操作转化为矩阵操作)
    P2665 [USACO08FEB]连线游戏Game of Lines
    1875 丢手绢 (模拟+打表)
    Recurrences UVA 10870 (斐波拉契的一般形式推广)
    Choosing number ZOJ 3690 (矩阵快速幂)
    根据屏幕文件生成RPG代码的思路
    基于配置文件的查询,xml文件sample
  • 原文地址:https://www.cnblogs.com/focksor/p/python-basis.html
Copyright © 2020-2023  润新知