交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码。
Window 上在安装 Python 时已经安装了交互式编程客户端,提示窗口如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fqEPe52k-1603101461476)(attachment:1%20%282%29.PNG)]
通过脚本参数调用解释器开始执行脚本,直到脚本执行完毕。当脚本执行完成后,解释器不再有效。
在 Python 里,标识符由字母、数字、下划线组成。
在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。
Python 中的标识符是区分大小写的。
Python 可以同一行显示多条语句,方法是用分号 ; 分开,如:
print("hello");print('runoob');
hello
runoob
下面的列表显示了在Python中的保留字。这些保留字不能用作常数或变数,或任何其他标识符名称。
所有 Python 的关键字只包含小写字母。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PR2zRW5x-1603101461482)(attachment:3.PNG)]
Python语句中一般以新行作为语句的结束符。
但是我们可以使用斜杠( \)将一行的语句分为多行显示,如下所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ifTUDWTX-1603101461483)(attachment:4.PNG)]
语句中包含 [], {} 或 () 括号就不需要使用多行连接符。如下实例:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SQL3anUN-1603101461485)(attachment:10.PNG)]
Python 可以使用引号( ’ )、双引号( " )、三引号( ‘’’ 或 “”" ) 来表示字符串,引号的开始与结束必须是相同类型的。
其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。
word = 'word'
sentence = "这是一个句子。"
paragraph = """这是一个段落。
包含了多个语句"""
print(word)
print(sentence)
print(paragraph)
word
这是一个句子。
这是一个段落。
包含了多个语句
ps:三引号与#注释的区别是,三引号中的多行文本可以进行代码的实现
python中单行注释采用 # 开头。
# 第一个注释
print ("Hello, Python!") # 第二个注释
Hello, Python!
python 中多行注释使用三个单引号(’’’)或三个双引号(""")。
'''
这是多行注释,使用单引号。
这是多行注释,使用单引号。
这是多行注释,使用单引号。
'''
"""
这是多行注释,使用双引号。
这是多行注释,使用双引号。
这是多行注释,使用双引号。
"""
'\n这是多行注释,使用双引号。\n这是多行注释,使用双引号。\n这是多行注释,使用双引号。\n'
换行输出&不换行输出
x="a"
y="b"
# 换行输出
print(x)
print(y)
print('---------')
# 不换行输出
print(x,y)
a
b
---------
a b
缩进相同的一组语句构成一个代码块,我们称之代码组。
像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。
我们将首行及后面的代码组称为一个子句(clause)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hqd1kJJI-1603101461487)(attachment:9.PNG)]
每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
等号 = 用来给变量赋值。
等号 = 运算符左边是一个变量名,等号 = 运算符右边是存储在变量中的值。例如:
counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = "John" # 字符串
print(counter)
print(miles)
print(name)
100
1000.0
John
Python允许你同时为多个变量赋值。例如:
a = b = c = 1
以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。
您也可以为多个对象指定多个变量。例如:
a, b, c = 1, 2, "john"
以上实例,两个整型对象 1 和 2 分别分配给变量 a 和 b,字符串对象 “john” 分配给变量 c。
在内存中存储的数据可以有多种类型。
例如,一个人的年龄可以用数字来存储,他的名字可以用字符来存储。
Python 定义了一些标准类型,用于存储各种类型的数据。
Python有五个标准的数据类型:
字符串或串(String)是由数字、字母、下划线组成的一串字符。
从字符串中获取一段子字符串的话,使用 [头下标:尾下标] 来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。[头下标:尾下标] 获取的子字符串包含头下标的字符,但不包含尾下标的字符。
str = 'Hello World!'
print(str) # 输出完整字符串
print(str[0]) # 输出字符串中的第一个字符
print(str[2:5]) # 输出字符串中第三个至第六个之间的字符串
print(str[2:]) # 输出从第三个字符开始的字符串
print(str * 2) # 输出字符串两次
print(str + "TEST") # 输出连接的字符串
Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST
Python 列表截取可以接收第三个参数,参数作用是截取的步长,以下实例在索引 1 到索引 4 的位置并设置为步长为 2(间隔一个位置)来截取字符串:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8lXZ63wn-1603101461489)(attachment:11.PNG)]
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
列表用 [ ] 标识,是 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) # 打印组合的列表
['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']
元组是另一个数据类型,类似于 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) # 打印组合的元组
('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 # 列表中是合法应用
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
in
1 tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
2 list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
----> 3 tuple[2] = 1000 # 元组中是非法应用
4 list[2] = 1000 # 列表中是合法应用
TypeError: 'tuple' object does not support item assignment
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用"{ }"标识。字典由索引(key)和它对应的值value组成。
dict = {
}
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {
'name': 'runoob','code':6734, 'dept': 'sales'}
print(dict['one']) # 输出键为'one' 的值
print(dict[2]) # 输出键为 2 的值
print(tinydict) # 输出完整的字典
print(tinydict.keys()) # 输出所有键
print(tinydict.values())# 输出所有值
print(dict.keys()) # 输出所有键
print(dict.values())# 输出所有值
int() 函数用于将一个字符串或数字转换为整型。
float() 函数用于将整数和字符串转换成浮点数。
complex() 函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。
str() 函数将对象转化为适于人阅读的形式。(就是转化为字符串)
tuple() 函数将列表转换为元组。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WUL9t6jQ-1603101461490)(attachment:13.PNG)]
list() 方法用于将元组转换为列表。
注:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中。
int(3.6)
float(112)
complex(1, 2)
complex(1) # or complex("1")
complex("1+2j")
# 注意:这个地方在"+"号两边不能有空格,也就是不能写成"1 + 2j",应该是"1+2j",否则会报错
tuple((1,2,3,4))
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xx740qjP-1603101461490)(attachment:14.PNG)]
按位运算符是把数字看作二进制
来进行计算的。
ps:这个不太会,等以后有需要的时候再学吧
身份运算符用于比较两个对象的存储单元(is)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p7YWYL2E-1603101461491)(attachment:15.PNG)]
其中"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。
else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句。
a = 1
while a < 7 :
if(a % 2 == 0):
print(a,"is even")
else:
print(a,'is odd')
a += 1
当判断条件为多个值时,可以使用以下形式:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3I9IFDHH-1603101461492)(attachment:16.PNG)]
num = 9
if num >= 0 and num <= 10: # 判断值是否在0~10之间
print( 'hello')
# 输出结果: hello
num = 10
if num < 0 or num > 10: # 判断值是否在小于0或大于10
print ('hello')
else:
print ('undefine')
# 输出结果: undefine
num = 8
# 判断值是否在0~5或者10~15之间
if (num >= 0 and num <= 5) or (num >= 10 and num <= 15):
print( 'hello')
else:
print ('undefine')
# 输出结果: undefine
while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。
while 语句时还有另外两个重要的命令。continue
条件成立,不执行后面操作,重头开始循环;break
则是用于退出循环。
如果条件判断语句永远为 true,循环将会无限的执行下去,此时可以使用 Ctrl+C
来中断循环。
#range(10) means 从1挨个取值到10
for i in range(10):
if i%2 != 0:
print(i)
continue
i += 2
print(i)
#如i是奇数,则输出i;如i是偶数,则输出i+2
while循环也可以使用else
count = 0
while count < 5:
print (count, " is less than 5")
count = count + 1
else:
print (count, " is not less than 5")
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
for letter in 'Python': # 第一个实例
print ('当前字母 :', letter)
fruits = ['banana', 'apple', 'mango']
for fruit in fruits: # 第二个实例
print ('当前水果 :', fruit)
#有点神奇,第一次知道for循环还可以循环字符串
另外一种执行循环的遍历方式是通过索引,如下实例:
fruits = ['banana', 'apple', 'mango']
for index in range(len(fruits)):
print ('当前水果 :', fruits[index])
#len(fruits)=3,所以从0开始检索,到2结束(因为最后一个数字所代表的值是不检索的)
for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样。
for num in range(10,20): # 迭代 10 到 20 之间的数字
for i in range(2,num): # 根据因子迭代
if num%i == 0: # 确定第一个因子
j=num/i # 计算第二个因子
print ('%d 等于 %d * %d' % (num,i,j))
break # 跳出当前循环
else: # 循环的 else 部分
print( num, '是一个质数')
pass 是占据一个位置,因为如果定义一个空函数程序会报错,当你没有想好函数的内容是可以用 pass 填充,使程序可以正常运行。
def function():
# 在Python3.x的时候pass可以写或不写
pass
cmp(x,y) 如果x
fabs(x) 返回绝对值
pow(x,y) x**y运算后的值
sqrt(x) 平方根
choice(seq) 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
random() 随机生成下一个实数,它在[0,1)范围内。
uniform(x, y) 随机生成下一个实数,它在[x,y]范围内。
原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。
print('hello')
print(r'\n')
print('world')
print('hello')
print ('\n')
print('world')
元组中只包含一个元素时,需要在元素后面添加逗号 tup1 = (50,)
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
# 以下修改元组元素操作是非法的。
# tup1[0] = 100
# 创建一个新的元组
tup3 = tup1 + tup2
print(tup3)
(12, 34.56, 'abc', 'xyz')
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:
print(tup2)
del(tup1)
# print(tup1)
('abc', 'xyz')
%who
a b c counter function list miles name paragraph
sentence str tinylist tinytuple tup1 tup2 tup3 tuple word
x y
L = ('spam', 'Spam', 'SPAM!')
L[2] #读取第三个元素
L[-2] #反向读取,读取倒数第二个元素
L[1:] #截取元素
('Spam', 'SPAM!')
任意无符号的对象,以逗号隔开,默认为元组。
Python元组包含了以下内置函数:
cmp(tuple1, tuple2) 比较两个元组元素。
len(tuple) 计算元组元素个数。
max(tuple) 返回元组中元素最大值。
min(tuple) 返回元组中元素最小值。
tuple(seq) 将列表转换为元组。
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value
对用冒号 :
分割,每个键值对之间用逗号 ,
分割,整个字典包括在花括号{}
中 ,格式如下所示:
d = {
key1 : value1, key2 : value2 }
键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
dict = {
'a': 1, 'b': 2, 'b': '3'}
print(dict['b'])
print(dict)
3
{'a': 1, 'b': '3'}
dict = {
'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print( "dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])
dict['Name']: Zara
dict['Age']: 7
dict = {
'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8 # 更新
dict['School'] = "RUNOOB" # 添加
print("dict['Age']: ", dict['Age'])
print("dict['School']: ", dict['School'])
dict['Age']: 8
dict['School']: RUNOOB
能删单一的元素也能清空字典,清空只需一项操作。
显示删除一个字典用del命令,如下实例:
dict = {
'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del (dict['Name']) # 删除键是'Name'的条目
dict.clear() # 清空字典所有条目
del(dict) # 删除字典
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
in
5 del(dict) # 删除字典
6
----> 7 print ("dict['Age']: ", dict['Age'])
8 print ("dict['School']: ", dict['School'])
TypeError: 'type' object is not subscriptable
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
2)键必须不可变,所以可以用数字,字符串或元组充当,用列表就不行
dict = {
'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print("Equivalent String : %s" % str (dict))
Equivalent String : {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能。
Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间。
时间间隔是以秒为单位的浮点小数。
每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示。
Python 的 time 模块下有很多函数可以转换常见日期格式。如函数time.time()用于获取当前时间戳, 如下实例:
import time # 引入time模块
ticks = time.time()
print ("当前时间戳为:", ticks)
当前时间戳为: 1602213121.0236251
时间戳单位最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到20-38年。
序号 | 属性 | 值 |
---|---|---|
0 | tm_year | 2008 |
1 | tm_mon | 1 到 12 |
2 | tm_mday | 1 到 31 |
3 | tm_hour | 0 到 23 |
4 | tm_min | 0 到 59 |
5 | tm_sec | 0 到 61 (60或61 是闰秒) |
6 | tm_wday | 0到6 (0是周一) |
7 | tm_yday | 1 到 366(儒略历) |
8 | tm_isdst | -1, 0, 1, -1是决定是否为夏令时的旗帜 |
从返回浮点数的时间戳方式向时间元组转换,只要将浮点数传递给如localtime之类的函数。
localtime = time.localtime(time.time())
print ("本地时间为 :", localtime)
本地时间为 : time.struct_time(tm_year=2020, tm_mon=10, tm_mday=9, tm_hour=11, tm_min=23, tm_sec=50, tm_wday=4, tm_yday=283, tm_isdst=0)
你可以根据需求选取各种格式,但是最简单的获取可读的时间模式的函数是asctime():
import time
localtime = time.asctime( time.localtime(time.time()) )
print ("本地时间为 :", localtime)
本地时间为 : Fri Oct 9 20:46:53 2020
import calendar
cal = calendar.month(2016, 1)
print ("以下输出2016年1月份的日历:")
print(cal)
以下输出2016年1月份的日历:
January 2016
Mo Tu We Th Fr Sa Su
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
你可以定义一个由自己想要功能的函数,以下是简单的规则:
# 定义函数
def printme( str ):
"打印任何传入的字符串"
print(str)
return
# 调用函数
printme("我要调用用户自定义函数!")
printme("再次调用同一函数")
我要调用用户自定义函数!
再次调用同一函数
调用函数时,默认参数的值如果没有传入,则被认为是默认值。下例会打印默认的age,如果age没有被传入:
#可写函数说明
def printinfo( name, age = 35 ):
"打印任何传入的字符串"
print ("Name: ", name)
print ("Age ", age)
return
#调用printinfo函数
printinfo( age=50, name="miki" )
printinfo( name="miki" )
Name: miki
Age 50
Name: miki
Age 35
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。基本语法如下:
# 可写函数说明
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print("输出: ")
print(arg1)
for var in vartuple:
print(var)
return
# 调用printinfo 函数
printinfo( 10 )
printinfo( 70, 60, 50 )
输出:
10
输出:
70
60
50
python 使用 lambda 来创建匿名函数。
# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2
# 调用sum函数
print ("相加后的值为 : ", sum( 10, 20 ))
print ("相加后的值为 : ", sum( 20, 20 ))
相加后的值为 : 30
相加后的值为 : 40
return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。之前的例子都没有示范如何返回数值,下例便告诉你怎么做:
# 可写函数说明
def sum( arg1, arg2 ):
# 返回2个参数的和."
total = arg1 + arg2
print ("函数内 : ", total)
return total
# 调用sum函数
total = sum( 10, 20 )
函数内 : 30
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例:
total = 0 # 这是一个全局变量
# 可写函数说明
def sum( arg1, arg2 ):
#返回2个参数的和."
total = arg1 + arg2 # total在这里是局部变量.
print("函数内是局部变量 : ", total)
return total
#调用sum函数
sum( 10, 20 )
print("函数外是全局变量 : ", total)
函数内是局部变量 : 30
函数外是全局变量 : 0
str = input("请输入:")
print("你输入的内容是: ", str)
请输入:Hello Python!
你输入的内容是: Hello Python!