zoukankan      html  css  js  c++  java
  • 快速上手python的坑

    快速上手python的坑

    这篇文章是乱写的

    零 使用的软件及其版本

    python 3.6

    PyCharm Community Edition 2016.2.3

    一 输入输出

    输出

    (在python 3.* 中?)print后要加括号

    1 print(123)
    2 print("123")

     上述代码还有两处重点

    1. print会自动换行
    2. 数字和字符串不同但可以转换(直接暴力强转int("123") !)

    还可以在print中用逗号分隔,左右两个元素输出之间会自动多一个空格

    1 a=123
    2 print("a的值是",a)

    输出:

    1 a的值是 123

    输入

    一般用input(),该函数返回值是字符串,参数是想要预先告诉输入者的话(可选)

    故,当你想要输入一个数字时……

    1 a=input("这里是想要预先说的话,比如你可以说'请输入一个数字并按回车'")
    2 print(a)
    3 print(a+1)

    第一行,语法上没问题

    第二行,语法上没问题

    第三行,语法上没问题,但是在运行中会报错,因为a是个字符串而不能和数字相加

     数字只能和数字相加,字符串只能和字符串相加

    故,需要把a转化成int类型。

    可以在input()前面加上int,即int(input()),也可以在加法运算的a前加上int,即print(int(a)+1)

    当然,用途不同,你也可以把两个字符串相加,就是将后面的那个放到前面的末尾。

    另外,input()是遇到换行符才返回,所以当两个数据中间不是用换行符分割而是用空格、制表符时,请用一个input()再加上分割函数split()来将几个数据分开 input().split() 

    例如:

      input:123 456  789

      那么input().split()就是一个有三个元素的列表(list),["123","456","789"],并且其元素都是字符串而不是数字!

    循环与分支

    • python的不同层的结构全靠Tab键(也就是制表符,或者说是4个空格?)
    • 其实一条语句后面可以加分号的,但是有了第一条就完全没必要了
    • while,for,if记得打冒号!!!

    列表,元组与字典

    列表

    未知元素个数的列表该怎么访问?

    f1=open("test.txt",'r')
    list=f1.readlines()
    #这样你就不能知道list有多少元素了
    方法一

    使用len()

    1 for i in range(len(list)):
    2     print(list[i])
    方法二(推荐)

    直接for

    1 for i in list:
    2     print(i)

    建议第二种。因为短小精悍……

    注意,第一种中,i是数字,作为下表访问。第二种中,i是list的元素的类型,直接print。

    range()的起始大于末尾

    range()一般最多有三个参数,分别是start,stop,step

    其实start是可以比stop大的(尽管这不合常理)

    如果step为正(或指定step)
    1 a=list(range(10,4))
    2 print(a)

    输出

    1 []

    什么都不输出

    如果step为负数
    1 a=list(range(10,4,-1))
    2 print(a)

    输出

    1 [10, 9, 8, 7, 6, 5]

    输出是倒序的,仍然是左闭右开(这里是包括大的10,不包括小的4)的列表

    列表的函数和方法

    .append(a)

    在后面追加一个元素a

    .insert(a,b)

    将b插入到下表为a的元素之前,也就是使b插入成为a号元素,后面的元素顺移

    .extend(a)

    合并两个列表,将a放到原列表之后

    .index(a)

    返回为a的元素的下标。如果有多个,返回第一次出现的(下标最小的)

    .remove(a)

    从列表中删除第一次出现的a

    .pop(index=-1)

    删除列表中下表为index的值(默认为-1也就是最后一个值),并返回这个值

    另外最常用的当然有切片和下标访问,切片[起点=0:终点=len(list):步长=1],下标[可正可负]

    cmp(list1,list2)

    python3没有

    len(list)

    返回元素个数

    max(list)

    返回元素中的最大值

    min(list)

    返回元素中的最小值

    list()

    将元组转化为列表

    del(list[a])

    删除list的下标为a的元素,无返回值

    注意三种删除(pop,remove,del)

    pop是指定下标,remove是指定元素的值,del是指定某个列表的某个下标

    别名

    当你在定义一个变量b时将其的值赋为另一个变量a时

    1 a=123
    2 b=a
    3 print(id(a))
    4 print(id(b))

    这两个变量的id(地址)是相同的

    1 1448260512
    2 1448260512

    然后,当你又把早已定义过的变量b赋或变量c时

     1 a=123
     2 c=456
     3 b=a
     4 print(id(a))
     5 print(id(b))
     6 b=c
     7 print(a)
     8 print(b)
     9 print(id(a))
    10 print(id(b))
    11 print(id(c))

    b的id会变化为与c的id相同,a的值不会改变

    1448260512
    1448260512
    123
    456
    1448260512
    2861234749232
    2861234749232

    【也就是说,把一个变量赋给另一个变量时先不会申请行动空间,只有在之后的操作中才会变id】

    若把a,b赋值为一个常量

    本来a,b的id是不会相同的

    但是如果a,b的相同(不一定要初值!),

    那么a,b会自动分配为一个内存

    1 a=123
    2 b=123
    3 print(a)
    4 print(b)
    5 print(id(a))
    6 print(id(b))

    输出

    1 123
    2 123
    3 1448260512
    4 1448260512

    为什么不一定要初值?

    如:我在开始时,两个数据本不一样,但后来将其相等了

     1 a=123
     2 b=1234
     3 print(a)
     4 print(b)
     5 print(id(a))
     6 print(id(b))
     7 b=123
     8 print(a)
     9 print(b)
    10 print(id(a))
    11 print(id(b))

    输出

    1 123
    2 1234
    3 1448260512
    4 1634576400176
    5 123
    6 123
    7 1448260512
    8 1448260512

    我承认python的智能……

  • 相关阅读:
    大话设计模式-原型模式
    Unity3D实习生面试题总结-图形学相关
    UnityShader入门精要-渲染流水线
    大话设计模式-工厂方法模式
    大话设计模式-代理模式
    C#中的值类型和引用类型
    【树结构】树链剖分简单分析
    HEOI2016排序-解题报告
    普通筛法时间界的证明
    可持久化线段树
  • 原文地址:https://www.cnblogs.com/send-off-a-friend/p/13384732.html
Copyright © 2011-2022 走看看