资讯专栏INFORMATION COLUMN

Python试水

zhjx922 / 2937人阅读

摘要:你好,特别注意定义编码格式的这一行代码必须放在第一行或者第二行,一般如果第一行是提示位置的代码,那么定义编码格式的这一行就必须放在第二行,否则依然会提示错误。基本功能是进行成员关系测试和删除重复元素。

一、Hello,Python!

试水 test.py

print "你好,Python!" #python 2.x
python ("你好,Python!") #python 3.x

很不幸,第一个test.py就遇到了字符错误!

nodedeMacBook-Pro:pytest node$ python ./test.py
File "./test.py", line 1
SyntaxError: Non-ASCII character "xef" in file ./test.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

解决方案:在以后的每一个需要显示汉字的python文件中, 可以采用如下方法在 #!/usr/bin/python的下一行加上一句话来定义编码格式,以utf-8编码为例。

#!/usr/bin/python
#coding:utf-8 1️⃣| #-*-coding:utf-8 -*- 2️⃣| #vim: set fileencoding:utf-8 3️⃣
print "你好,Python!"

***特别注意:定义编码格式的这一行代码必须放在第一行或者第二行, 一般如果第一行是提示python位置的代码, 那么定义编码格式的这一行就必须放在第二行,否则依然会提示错误。
转自:https://www.cnblogs.com/Karry...

二、基础语法 行和缩进

js代码块一般使用{}包裹,Python则是使用缩进,但是所有代码块语句必须包含相同的缩进空白数量

多行语句
# 使用斜杠( )将一行的语句分为多行显示
total = item_one + 
        item_two + 
        item_three
# 语句中包含 [], {} 或 () 括号就不需要使用多行连接符
days = ["Monday", "Tuesday", "Wednesday",
        "Thursday", "Friday"]
引号

Python 可以使用引号( " )、双引号( " )、三引号( """ 或 """ ) 来表示字符串,其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串(类似js的模板字符串"``"),在文件的特定地点,被当做注释。

word = "word"
sentence = "这是一个句子。"
paragraph = """这是一个段落。
包含了多个语句"""
注释

python中单行注释采用 # 开头。多行注释使用三个单引号(""")或三个双引号(""")。

同一行显示多条语句

Python可以在同一行中使用多条语句,语句之间使用分号(;)分割

import sys; x = "runoob"; sys.stdout.write(x + "
")
输出

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号 ,

#!/usr/bin/python
# -*- coding: UTF-8 -*-

x="a"
y="b"
# 换行输出
print x
print y

print "---------"
# 不换行输出
print x,
print y,

# 不换行输出
print x,y

结果

a
b
---------
a b a b
多个语句构成代码组

缩进相同的一组语句构成一个代码块,我们称之代码组。

import 与 from...import

类似 js 的import

# python
import sys #导入 sys 模块
from sys import argv,path  #导入 sys 模块的 argv,path 成员
from sys import #导入 sys 模块的所有成员

# js
import sys from sys
import sys as _sys from sys
import { argv,path } from sys
三、变量类型 变量声明和赋值

Python 中的变量赋值不需要类型声明,但是必须先赋值
每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。
每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
等号(=)用来给变量赋值。
等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。

counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = "John" # 字符串

多个变量赋值

# Python允许你同时为多个变量赋值
a = b = c = 1
# 也可以为多个对象指定多个变量
a, b, c = 1, 2, "john"
标准数据类型

Python2.x有五个标准的数据类型,Python3.x新增一个数据类型:

Numbers(数字)数字数据类型用于存储数值。Python支持四种不同的数字类型:int(有符号整型)、long(长整型[也可以代表八进制和十六进制],long 类型只存在于 Python2.X 版本中,在 2.2 以后的版本中,int 类型数据溢出后会自动转为long类型。在 Python3.X 版本中 long 类型被移除,使用 int 替代)、float(浮点型)、complex(复数)

创建Number对象var1 = 1;var2 = 10

通过使用del语句删除单个或多个对象的引用del var; del var_a, var_b

数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数 10 // 3结果为 3

在混合计算时,Python会把整型转换成为浮点数 18 / 6 +2结果为 5.0

String(字符串),字符串或串(String)是由数字、字母、下划线组成的一串字符

从字符串中获取一段子字符串的话,可以使用 [头下标:尾下标] 来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。

 str = "Hello World!"   
 print str           # 输出完整字符串
 print str[0]        # 输出字符串中的第一个字符
 print str[2:5]      # 输出字符串中第三个至第六个之间的字符串
 print str[2:]       # 输出从第三个字符开始的字符串
 print str * 2       # 输出字符串两次
 print str + "TEST"  # 输出连接的字符串

result:

 Hello World!
 H
 llo
 llo World!
 Hello World!Hello World!
 Hello World!TEST

Python 列表截取可以接收第三个参数,参数作用是截取的步长

   >>> str = "abcdefg"
   >>> str[1:4:2]
   "bd"
   >>> str[1:4:3]
   "b"
   >>> str[1:4:1]
   "bcd"
   >>> str[1:6:2]
   "bdf"
   >>> str[1:6:1]
   "bcdef"

综上述实验,我认为这样理解比较合适,第二参数默认为字符串的长度-1,作用为规定字符串截取的截止位置;第三个参数默认为1,作用为跳过n-1个字符,n-1为0即参数为1时步长为0

List(列表) ,列表用 [ ] 标识,是 python 最通用的复合数据类型(其实就类似于其他语言的数组)

列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。

 list = [ "runoob", 786 , 2.23, "john", 70.2 ]
 tinylist = [123, "john"]    
 print list               # 输出完整列表
 print list[0]            # 输出列表的第一个元素
 print list[1:3]          # 输出第二个至第三个元素 
 print list[2:]           # 输出从第三个开始至列表末尾的所有元素
 print tinylist * 2       # 输出列表两次
 print list + tinylist    # 打印组合的列表

result:

 ["runoob", 786, 2.23, "john", 70.2]
 runoob
 [786, 2.23]
 [2.23, "john", 70.2]
 [123, "john", 123, "john"]
 ["runoob", 786, 2.23, "john", 70.2, 123, "john"]

Tuple(元组),元组是另一个数据类型,类似于 List(列表)。元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

 tuple = ( "runoob", 786 , 2.23, "john", 70.2 )
 tinytuple = (123, "john")
 print tuple               # 输出完整元组
 print tuple[0]            # 输出元组的第一个元素
 print tuple[1:3]          # 输出第二个至第四个(不包含)的元素 
 print tuple[2:]           # 输出从第三个开始至列表末尾的所有元素
 print tinytuple * 2       # 输出元组两次
 print tuple + tinytuple   # 打印组合的元组

result:

 ("runoob", 786, 2.23, "john", 70.2)
 runoob
 (786, 2.23)
 (2.23, "john", 70.2)
 (123, "john", 123, "john")
 ("runoob", 786, 2.23, "john", 70.2, 123, "john")    
 
# 注意元祖不可以修改
 tuple = ( "runoob", 786 , 2.23, "john", 70.2 )
 list = [ "runoob", 786 , 2.23, "john", 70.2 ]
 tuple[2] = 1000    # 元组中是非法应用
 list[2] = 1000     # 列表中是合法应用

Dictionary(字典),字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。字典用"{ }"标识。字典由索引(key)和它对应的值value组成。(说白了列表是数组,字典是对象)

 dict = {}
 dict["one"] = "This is one"
 dict[2] = "This is two"

 tinydict = {"name": "john","code":6734, "dept": "sales"}
  

 print dict["one"]          # 输出键为"one" 的值
 print dict[2]              # 输出键为 2 的值
 print tinydict             # 输出完整的字典
 print tinydict.keys()      # 输出所有键
 print tinydict.values()    # 输出所有值

result:

 This is one
 This is two
 {"dept": "sales", "code": 6734, "name": "john"}
 ["dept", "code", "name"]
 ["sales", 6734, "john"]

Set(集合,Python3.x新增)集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。基本功能是进行成员关系测试和删除重复元素。可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

创建格式

 # 第一种方式
 parame = {value01,value02,...}
 parame = {} # 这种方式创建一个空字典而不是空集合
 # 第二种方式
 parame = set(value)
 parame = set() # 使用这种方式创建一个空集合

实例

>>basket = {"apple", "orange", "apple", "pear", "orange", "banana"}
>> print(basket)                      # 这里演示的是去重功能
 {"orange", "banana", "pear", "apple"}
>> "orange" in basket                 # 快速判断元素是否在集合内
 True
>> "crabgrass" in basket
 False
>> # 下面展示集合的基本操作
  ···
>> student = {"Jackey", "Rose", "Jerrey", "Hans", "Tom"}
>> student.add("Jack")                # 添加(单个)元素,add
>> student
 {"Jackey", "Rose", "Jerrey", "Hans", "Jack", "Tom"}
>> student.update({"Lily","Jams"})    # 添加(多个)元素,update
>> student
 {"Jams", "Jackey", "Rose", "Jerrey", "Hans", "Lily", "Jack", "Tom"}
>> student.remove("Lily")             # 移除(单个)元素,如果元素不存在,则会发生错误
 {"Jams", "Jackey", "Rose", "Jerrey", "Hans", "Jack", "Tom"}
>> student.discard("Tiffny")          # 移除(单个)元素,如果元素不存在,不会发生错误
>> student
 {"Jams", "Jackey", "Rose", "Jerrey", "Hans", "Jack", "Tom"}
 
>> # 计算集合的个数
>> len(student)
 7
 
>> # 判断元素是否在集合中存在
>> "Jackey" in student
 True
>> "Nancy" in student
 False
 
>> # 下面展示两个集合间的运算.
 ...
>> a = set("abracadabra")
>> b = set("alacazam")
>> a                                  
 {"a", "r", "b", "c", "d"}
>> a - b                              # 集合a中包含而集合b中不包含的元素
 {"r", "d", "b"}
>> a | b                              # 集合a或b中包含的所有元素
 {"a", "c", "r", "d", "b", "m", "z", "l"}
>> a & b                              # 集合a和b中都包含了的元素
 {"a", "c"}
>> a ^ b                              # 不同时包含于a和b的元素
 {"r", "d", "b", "m", "z", "l"}

数据类型转换

int(x [,base]),将x转换为一个整数
long(x [,base] ),将x转换为一个长整数
float(x),将x转换到一个浮点数
complex(real [,imag]),创建一个复数
str(x),将对象 x 转换为字符串
repr(x),将对象 x 转换为表达式字符串
eval(str),用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s),将序列 s 转换为一个元组
list(s),将序列 s 转换为一个列表
set(s),转换为可变集合
dict(d),创建一个字典。d 必须是一个序列 (key,value)元组。
frozenset(s),转换为不可变集合
chr(x),将一个整数转换为一个字符
unichr(x),将一个整数转换为Unicode字符
ord(x),将一个字符转换为它的整数值
hex(x),将一个整数转换为一个十六进制字符串
oct(x),将一个整数转换为一个八进制字符串

四、条件控制
if condition_1:
    statement_block_1
elif condition_2:
    statement_block_2
else:
    statement_block_3
五、循环语句 while 循环

可以使用 else 语句,在 while … else 在条件语句为 false 时执行 else 的语句块

while 判断条件:
    语句
else:
    语句
    
# 例子
count = 0
while count < 5:
   print (count, " 小于 5")
   count = count + 1
else:
   print (count, " 大于或等于 5")
for 语句

for循环可以遍历任何序列的项目,如一个列表或者一个字符串

for  in :
    
else:
    
    
# 例子
sites = ["Baidu", "Google","Runoob","Taobao"]
for site in sites:
    if site == "Runoob":
        print("菜鸟教程!")
        break
    print("循环数据 " + site)
else:
    print("没有循环数据!")
print("完成循环!")
range(x,y,z)函数

如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列。x为初始值,y为结束值(可以不填),z为步长(可以不填),x,y,z均可以为负数

>>>for i in range(5,9) :
    print(i)
 
# return    
5
6
7
8
>>>
>>>for i in range(0, 10, 3) :
    print(i)
 
    
0
3
6
9
>>>
break和continue语句及循环中的else子句

break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行;continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环;循环语句可以有 else 子句,它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行,但循环被break终止时不执行。

pass 语句

Python pass是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句,如下实例

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43903.html

相关文章

  • [笔记]1.Karma前端TDD试水

    摘要:起博主是电信行业的码农,在工作单位也搞搞单元测试和了什么。目前对技术很感兴趣,尝试新的领域里面也试试看这次要用的方式要实现一个简单画图板功能,支持和。配置文件里面主要就是一个对象,根据注释提示调整下即可。 起 博主是电信行业的码农,在工作单位也搞搞单元测试和TDD了什么。目前对Web技术很感兴趣,尝试新的领域里面也试试看TDD. 这次要用TDD的方式要实现一个简单画图板功能,支持C...

    894974231 评论0 收藏0
  • 联想凌拓“开业大吉” 是试水还是全面变革的前兆?

    摘要:相比较财报这个振奋人心的消息,笔者更关注联想凌拓的成立。目前联想凌拓主要面对的也还只是中国市场,未来联想在全球范围内与的合作空间会有多大尚未可知。开年以来,联想可谓好事不断,一扫去年被各路媒体口诛笔伐的阴霾。在联想集团刚刚发布的2018/19财年第三季度财报中,集团营业额增至971亿人民币,税前利润也达到24.2亿。其中,DCG业务(数据中心集团)营业额继续保持双位数增长,同比增速达到31%...

    XiNGRZ 评论0 收藏0
  • AWS VS Kubernetes

    摘要:亚马逊最近成为云原生计算基金会的新成员与它对谷歌启动的这个容器项目实际贡献的代码不相称。尽管早早进入了市场,俨然成了容器的代名词,但谷歌的积聚的势头还是最猛,所有企业中将近表示,自己的容器编排战略包括。 作者简介:Matt Asay是IT外媒《InfoWorld》的长篇撰稿人,以前是名知识产权律师,目前是Adobe公司的移动副总裁。本文表达的观点仅代表其本人,而不代表其雇主。亚马逊最近成为云...

    khlbat 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<