一、初步学习
#python中'#'表示注释
#变量命名的规则:只能字母,数字和下划线,且不能以字母开头,不能包含空格,区分大小写,不能用关键字,与C/C++类似
#python中n=int(python可以处理很大的整数范围),f=float(与C相同4byte),s=str,b=bool
#用type(有时也被称为类)来限定输出数据类型
#python会自动把整数除整数转化为浮点数
#下列两行代码打印出python所有的关键字
#import keyword
#print(keyword.kwlist)
#python的bool类型依旧保留了非0即真的规则
#字符串在python中单引号和双引号的效果是一样的(如下面1,2),但是如果想要处理第三条语句,便会报错
print('I told you, "python is good".')
print("I told you, 'python is good'.")
#print("I told you, "python is good".") #这句话是错误的
print("I told you, \"python is good\".") #\用来告诉编译器后面的"是作为字符串本身输出的
str类型变量+'.'+function
str="1 Hello, boy! 1"
print(str.title()) #首字母大写输出
print(str.upper()) #全部大写输出
print(str.lower()) #全部小写输出
print(str.rstrip()) #去除右端空格输出
print(str.lstrip()) #去除左端空格输出
print(str.strip()) #去除两边空格输出
#python在.后面提供了很多函数以供使用
类型转换函数(注意与c/c++不同)
y=int(x)
y=float(x)
y=str(x)
#python中是变量类型(变量)来强制转换数据的
二、语法初步
Python与c/c++不同,代码之间遵从严格的缩进规则,用来表示代码与代码之间的层级和包含关系,这一点在书写代码的时候应该注意
a= 103
if a > 100 :
print("yes")
print("yes")
else :
pass #pass叫做"占位语句",是由于else后必须要有下层代码,pass类似于continue
print("no") #与if else 同级
#输出
yes
yes
no
python中同样也有+=、-=、*=、/=、取模%
“ // ”,整除运算,这是由于Python的除法会把数据转化成float类型;
“ ** ”,求幂运算,2**2表示求2 的平方,优先级高于乘除;
print("12345\
789")
# 第一行末尾的" \ "表示连接上下两行代码,是为了美观,编译者用于分行的,等价于
print("123456789")
函数以及函数的定义
python中提供了很多函数
x=pow(2,8) #2的8次方 注意:pow函数和**运算是否有区别
x=abs(-10) #取绝对值
x=round(7/2) #返回四舍五入的结果
#自定义函数语法
def <函数名>(<形参>):
<函数体>
return <返回值列表>
#例如以下函数
def PLUS (a,b):
c=a+b
return c
同时我们可以在python中import(引入)许多module(模块)
import math #引入math模块
from math import sqrt #求平方根
from math import floor #下取整
from math import ceil #上取整
#单独导入math模块中的sqrt函数,通过math.sqrt或者直接用sqrt都可以使用该函数
同时还有用于画图的模块---turtle
import turtle
t=turtle.Pen() #创建一支画笔,注意P是大写
x=30
for x in range(x): #循环x次
t.circle(100) #画一个直径为100的圆
t.left(360/x) #向左旋转360/x=12度
同样的可以从键盘上接受数据
name = input ("What's your name:") #用户输入姓名+回车后程序才会继续
age = input ("How old are you ?") #用户输入年龄
age = int ( age )
print("Hi,",name,"I am",age,"too.")
占位符(与C的scanf函数类似)
name="AyanamiRei"
age=16
stature=158.50
text=("%s is my love,and she is %d years old.Her stature is %.2f.")%(name,age,stature)
print(text)
#输出:AyanamiRei is my love,and she is 16 years old.Her stature is 158.50.
#占位符的使用与scanf函数类似
#.2f保留两位小数输出
python中的进制
a=0xff #16进制开头0x
b=0b0111 #2进制开头0b
print(a,"=",hex(255)," ",b,"=",bin(7))
#hex()用于将数字转化成16进制的字符串 bin()用于将数字转换成二进制的字符串
列表(list),Python中的列表是十分强大容器,与C/C++中的数组类似,但是要更强大一些。这是由于:
第一,Python中的list允许存在不同类型的数据同时存放,int,float,str都可以存入其中;
第二,Python为列表使用下标包括正向和反向;
P = ["str1", "12", "55.24", "h", "o", "n"]
print(P[0],P[-6],len(P))
#输出 str1 str1 6
#可以看到 列表既可以存放不同类型的数据也提供了正反向的序号访问
#len(list)用于计算列表的长度,同时也可以输出字符串返回字符串的长度
python中提供了很多利于操作list的函数
#len()函数,见上文;
#append()函数,用于向列表尾部添加元素
#insert()函数,用于在指定的列表内索引位置插入元素
list=["a","b","c","d"]
list.append(123) #表示向列表list中尾部添加数字'123' [a,b,c,d,123]
list.insert(2,'a') #表示向列表list中的序号为2的位置插入字符'abc',其余依次后移[a,b,a,c,d,123]
#依据三种删除方式进行的函数
#del语句 删除任一索引的列表元素
#pop() 弹出列表(stack栈)尾部的元素并且作为返回值,但是同样可以用于删除指定序号的元素
#remove() 删除遇到的第一个指定值的元素
del list[5] #删除了第六个元素'123'
list.pop() #删除尾部的元素'd'
x=list.pop(1) #删除第二元素,并使得x==b
list.remove('a') #删除第一个遇到的'a'
#此时list的元素为[a,c]
当然列表也是可以嵌套列表的,Python中的列表更类似于一个普通的变量;
列表的名字绑定(按C/C++来思考就像是允许了两个数组之间的赋值,只是赋的是地址)
a=["1","2","3"]
b=["4","5","6"]
a=b #在python中这是合法语句,之后a的元素有["4","5","6"]
对列表整体元素的处理
Python中的排序可以用函数sort()和sorted()来实现
list1 = ["b", "a", "d", "c"]
list2 = ["4", "2", "3", "1"]
list2.sort() #排序函数,按升序自动排序,字符转化为ASCII码
list1.sort()
list1.sort(reverse=True) #加上reverse=True变为降序
list1ed=list1.sorted() #sorted不会改变原列表的元素顺序,但是会返回一个有序序列
#对于字符串的大小比较按照字符的Unicode码逐一比较
#如果在排序函数()中输入key=len,就可以按字符串长度来排序
#key十分关键,可以指向一个自定义的函数,也就是按用户的想法来排序
list1.reverse() #reverse()函数将列表的元素倒序一下
for循环遍历
Python通过for实现遍历循环
#使用方法
# for<循环变量> in <遍历数据集> :
# <语句块>
list = ['jack', 5, 4, 3.14, "mary", ["A", "B"]]
for x in list:
print(x)
#注意,列表中的嵌套列表是作为一个变量来看待,print的时候也应该看成一个变量
整数列表range(x,y,z)
# python 中的 range()函数可以用于创建一个“整数列表”
# 比较简单的range()函数形式有range(x,y),生成一个[x,y)区间内的整数列表
# 注意:range(x)是range(0,x)的简略写法
num = range(5)
for x in num:
print(x)
# 在解释器内部range(x,y)并不是一个严格意义上的列表,而是一共被称为range的不常用数据类型
print(num) # 输出的是range(0,5)而不是01234
# 如果需要的话可以强制转换成列表
num = list(num)
print(num)
# 此时print(num)输出[0, 1, 2, 3, 4]
# range()函数的完整参数应该有3个(x,y,z) z表示相邻元素间的差
num = range(0, 5, 2)
num = list(num)
print(num)
# 此时print(num)输出的则是[0, 2, 4],可以看见每个元素差为2
# 需要注意的是,range(x,y,z),输出的数字都会小于y大于等于x(或者说小于等于x大于y)
range(0, 17, 4) # 包含了[0,4,8,12,16]
range(9, 2, -2) # 包含了[9,7,5,3]
列表统计函数
score=[60,75,81,77,92,85]
print(sum(score)) #sum()返回list中元素之和
print(max(score)) #max()返回list中最大值
print(min(score)) #min()返回list中最小值
#需要注意在使用sum()的时候,不能同时出现浮点数和字符串,也就是二者不能相加
列表快速生成
cubes = [x**3+100 for x in range(1, 11)] # 获得1-10每个数的三次方+100的值
print(cubes)
# 输出[101, 108, 127, 164, 225, 316, 443, 612, 829, 1100]
num1 = [x*x for x in range(10) if x % 3 == 0] # 搭配if语句来使用
print(num1)
# 输出[0, 9, 36, 81]
num2 = [x+y for x in "123" for y in "456"]
print(num2)
# 输出['14', '15', '16', '24', '25', '26', '34', '35', '36']
列表运算
#列表+列表等于两个列表拼接
#列表*n表示生成一个新列表,其中原列表的元素重复了n次
#字符串*n,与列表*n同理
切片
#切片的完整形式是 number[x:y:z],与range类似的理解xyz
#切片的实施步骤有以下两个
# 1、将给定的xy转换为正数下标,若xy为负数,则转化为len(number)-x(y)
# 2、为缺省的参数赋默认值(特别注意),z缺省为1
#
#
# z>0时,x缺省为0,y缺省为len(number),即会自动补完所有的列表元素
# z<0时,表示切片的方向是从右往左,x缺省为len(number)-1,y则默认为-1(数组从0开始)
#
#
#
#切片的一些用法:
#number[:]相当于number.copy(),返回一个新的列表
#number[::-1]从后往前,相当于不改变原列表且返回新列表的number.reverse()
#number[3:5]=[77,88] 等价于赋值number[3] = 77和number[4] = 88
#number[3:5]=[] 相当于把number[3]和number[4]这两个元素给删除
#number[3:5]=[77,88,99]在赋值的基础上再往列表中新添加了一个元素在77,88后面
集合
#集合必须满足以下三个条件
# 1、集合内不允许有重复的元素
# 2、集合内的元素是无序的,不分前后循序。
# 3、集合内的元素必须是可哈希类型(不变的数据类型,不能是列表字典或者集合),这些对象一般只
# 可读
#
#
#
#
#
#
#
#
#
#
#