赞
踩
python可以说非常热门+好用了,可是学校一般只教c/c++啊?
不过,在通过学习c/c++等语言get了编程基础之后,自学python也就非常简单啦。你只需要:
step 1:学习python的基础语法
step 2:根据用python的目的,学习经典的库
step 3:实战
这篇博文是我在完成step 1时所做的笔记,以《Python编程从入门到实践》(人民邮电出版社)这本书为大纲。因为有c的基础,所以没有繁杂的解释,直接上语法和经典的例子。所以本文比较适合初学或者很久不用python,但有一定编程基础的人作为python语法索引来使用。
(1)print语句的基本语法
Python2:print "Hello world!"
Python3:print("Hello world!")
(2)print实现字符串和变量的拼接
print("bbbbbbbbbbbbb" +某变量名+ "blablabla")
(1)python3输入字符串
message = input("Tell me sth. And I'll repeat it back to you: ") #用户输入的字符串将储存在变量message中
print(message)
则输出为:
Tell me sth. And I'll repeat it back to you: Hello everyone!
Hello everyone!
(2)python2输入字符串:把input()改为raw_input()即可
(1)读取文本文件
#读取文本文件.txt时,python将其中的所有文本都解读为字符串
#可使用int()函数把字符串转为整数
①读整个文件:
with open("文件名") as file_object : #有with,所以在不再使用该文件后自动将其关闭
contents = file_object.read() #把文件的全部内容作为一个字符串存储在contents变量中
②逐行读文件:
with open("文件名") as file_object :
for line in file_object : #每次循环,把文件的一行作为一个字符串存储在line变量中(包括换行符)
print(line)
(2)写入文件
#python只能将字符串写入文本文件.txt
#可使用str()函数把非字符串转为字符串
with open("文件名", '打开方式') as file_object :
file.write("要写入的内容")
打开方式包括:w-写入模式;r-读取模式;a-文件末附加模式;r+-读写模式
只能包含数字、下划线、字母,不能以数字开头
尽量用小写
(1)赋值
message="Hello" 或者 message='Hello'
(2)双引号与单引号
#二者等价,如果需要引用的字符串中含有单引号,则用双引号引用,反之亦然
"his dog's name is pig"
'I told her, "hey".'
(3)大小写
#name是某个字符串变量的名字
每个单词首字母大写:name.title()
所有字母变大/小写:name.upper() / name.lower()
(4)拼接
#直接用加号
Full_name = firstname+ ‘ ’ + lastname
(5)换行符与tab符
#和c一样
print("\tHello world!")
print("\nHello world!")
(6)去除空格
#message是某个字符串变量的名字
去除字符串末尾的空格/换行符等:message.rstrip()
去除字符串前端的空格/换行符等:message.lstrip()
去除字符串两端的空格/换行符等:message.strip()
(7)将非字符串转化为字符串
#str(某个非字符串的变量)
Age=23
Message="Happy " + str(age) + "rd Birthday!"
(8)判断一个字符串中是否含有某个子字符串:
#if 子字符串 in 字符串
if birthday in pi: #birthday是子字符串,pi是圆周率的前一百万位
print("Your birthday appears in the first million digits of pi.")
(9)用一个字符串替换另一个字符串中的某个子字符串:
#字符串.replace(被替换的字符串, 替换的字符串)
message = "I like dogs."
message.replace('dog', 'cat')
则message变成了"I like cats."
(10)根据分隔字符分词:
#字符串.split('分隔字符')
#结果产生一个列表
message.split('\t')
(11)数子字符串在一个字符串中出现了多少次:
#字符串.count(子字符串)
message.count('dog')
(1)整数除法运算
Python3 3 / 2 输出1.5
Python2 3 / 2 输出1
(2)乘方
#底数 ** 指数
3 ** 2表示9,3 ** 3表示27
(3)将字符串转化为整数
#int(字符串)
int(age) #age是一个字符串’20’
(4)求模运算符:
#和c一样,用%
(5)随机数:
from random import randint #这句写在开头
x = randint(1, 6) #随机返回一个位于[1,6]闭区间内的整数
(1)初始化
普通列表:bicycles = [元素0, 元素1, 元素2]
空列表:bicycles=[ ]
(2)打印
#bicycles是列表名
print(bicycles) #会把方括号和逗号都打出来
print(bicycles[i]) #会打出第(i+1)个元素
print(bicycles[-i]) #会打出倒数第i个元素
(3)添加新元素
#bicycles是列表名
在末尾添加:bicycles.append(新元素)
在中间插入:bicycles.insert(i, 新元素) #则会插到元素i的前面
(4)删除元素
#bicycles是列表名
删除元素i:del bicycles[i]
删除最后一个元素并把它存在变量a中:a=bicycles.pop()
删除元素i:bicycles.pop(i)
删除第一个值为‘ducai’的元素:bicycles.remove(‘ducai’) #只删除第一个值为’ducai’的元素
删除所有值为’ducai’的元素:
while ‘ducai’ in bicycles:
bicycles.remove(‘ducai’)
(5)排序
#car是列表名
按升序排列:car.sort()
按降序排列:car.sort(reverse=True)
不改变car列表,只是按升序打印:print(sorted(cars)) #加reverse=True可降序打印
倒着排列:cars.reverse()
(6)获得长度
#car是列表名
len(cars)
(7)把range转化为列表
numbers=list(range(1,6)) #则numbers成为了一个列表,元素为1 2 3 4 5
(8)简单的统计公式
#numbers是一个列表
min(numbers) max(numbers) sum(numbers)
(9)列表解析
squares=[value**2 for value in range(1,11)] #则生成了列表square,元素为1 4 9 ... 100
(10)访问列表切片
#players是一个列表
players[i : j] #元素i到元素(j-1)
players[ : i] #元素0到元素(i-1)
players[i : ] #元素i到列表最后一个元素
players[-i:] #列表最后i个元素
(11)复制列表
把list2的所有元素复制给list1:list1=list2[ : ]
把指针list2赋给list1(使两个列表事实上是一个列表):list1=list2
(12)检查特定值是否在列表中
#以下两行均为布尔表达式
value not in list #若list中含有值为value的元素,则为false,否则为true
value in list #若list中含有值为value的元素,则为true,否则为false
(13)检查列表是否为空
#list是列表名
list #布尔表达式,可以“if list :”或“while list :”等形式使用
(1)定义元组
把列表的方括号改为圆括号即可
(2)元组是不可变的列表
不能修改元组中的元素:
dimensions[0]=40 #这句不合法
但可以重新定义一个元组:
Dimensions=(50,30)
Dimensions=(40,20) #这句合法
(1)定义字典
alien = {
key_0 : value_0,
key_1 : value_1,
...
}
(2)添加删除与修改键值对(键值对在字典中的排列顺序与添加顺序不一定相同)
#alien是字典名
添加与修改:alien[key_i] = value_i
删除:del alien[key_i]
(3)定义空字典
alien={ }
(4)遍历字典
①遍历键值对:
#一个实例(user是一个字典):
for key, value in user.items() : #每次循环,把字典中一个键值对的键存入key变量,值存入value变量;键值对的顺序和存储顺序不一定相同
print(key)
print(value)
②遍历键:
#一个实例(alien是一个字典):
for key in alien.keys() : #alien.keys()返回了一个列表,包含字典中所有的键;每次循环,把字典中一个键值对的键存入key变量
print(key)
③按顺序遍历键:
for name in sorted(alien.keys()):
print(name.title())
④遍历值:
#一个实例(alien是一个字典):
for v in alien.values() : #alien.values()返回了一个列表,包含字典中所有的值;每次循环,把字典中一个键值对的值存入value变量
print(key)
(1)基本结构
#A、B均为布尔表达式
if A :
...
elif B :
...
else :
...
(2)布尔表达式
用and or == != > < 等连接
(1)基本结构
#A是布尔表达式
while A :
...
(2)break、continue
用法和c一样
(1)基本结构
#magicians是一个列表的名字
for magician in magicians: #从magicians中取一个元素存储到变量magician中
print(magician)
(2)break、continue
用法和c一样
def greet_user(username, userage):
"""函数体"""
使用位置实参:result, age = greet_user(“Tom”, 21)
使用关键字实参:result, age = greet_user(username=“Tom”, userage=21) #函数调用中的关键字实参,等号两边不要有空格
可以给形参指定默认值:
def greet_user(username, userage=21): #给形参指定默认值时,等号两边不要有空格
如果调用函数时给形参提供了实参,则使用指定的实参值,否则使用默认值
形参列表中必须先列出没有默认值的形参
#greet是函数名,list是列表名
把列表的名字作为实参传给函数,则函数可以修改列表:greet(list)
若想禁止函数修改列表,则这样传参:greet(list[ : ])
#一个实例:
def make_pizza(*toppings) : #*号创建了一个名为toppings的空元组,并将收到的所有值都存到这个元组中
print(toppings)
make_pizza('mushrooms', 'green peppers', 'extra cheese') #调用make_pizza函数,可以传任意数量的参数
def build_profile(**user_info) : #**号创建了一个名为user_info的空字典,并将收到的所有键值对都存到这个字典中
print(user_info)
build_profile(location='princeton', field='physics') #调用build_profile函数,可以传任意数量的关键字参数
(1)函数名应该为描述性名称,且只使用小写字母和下划线
(2)每个函数都应包含阐述功能的注释,紧跟在函数定义后面,采用文档字符串形式
(3)给形参指定默认值时,等号两边不要有空格
(4)使用关键字实参时,等号两边不要有空格
class Dog() :
def _init_(self, name, age) : #类似于c++中的初始构造函数
self.name = name
self.age = age
def sit(self) : #self类似于c++中的this
print(self.name.title() + " is now sitting.")
在定义类的时候直接指定某属性=某值即可
直接修改:my_car.age = 8
通过函数修改,在类中定义修改的函数,实例:
def update_age(self, newage) :
self.age = newage
(待补充)
(1)类名应采用驼峰命名法,即每个单词的首字母大写,不使用下划线
(2)实例名和模块名都采用小写格式,且单词之间加下划线
(3)在类中,使用一个空行来分隔方法;在模块中,使用两个空行来分隔类
模块是.py文件,其中写有函数或类的定义
(1)导入整个模块
此时调用模块中的函数/类需要在前面加上模块名,实例:
import pizza #导入pizza.py,即打开pizza.py并把其中所有函数/类复制到当前程序中
pizza.make_pizza() #调用pizza模块中的make_pizza()函数
(2)给导入的模块指定别名
import 模块名 as 别名,实例:
import pizza as p #导入pizza模块并用p指代它
p.make_pizza() #调用pizza模块中的make_pizza()函数
(3)导入模块中的特定函数/特定类
此时调用模块中的函数/类不需要在前面加上模块名,实例:
from pizza import make_pizza #导入pizza模块的make_pizza函数
make_pizza() #调用pizza模块中的make_pizza()函数
(4)给导入的函数/类指定别名
from 模块名 import 函数名/类名 as 别名,实例:
from pizza import make_pizza as mp #导入pizza模块的make_pizza函数并用mp指代它
mp() #调用pizza模块中的make_pizza()函数
(5)导入模块中的所有函数/类(使用这个要慎重,因为如果遇到同名函数/类会被覆盖)
此时调用模块中的函数/类不需要在前面加上模块名,实例:
from pizza import *
make_pizza() #调用pizza模块中的make_pizza()函数
先编写导入标准库模块的import语句,再添加一个空行,然后编写导入你自己编写的模块的import语句
(待补充)
(1)单行注释:用'#'('#'相当于c里的'//')
(2)函数的注释
def greet_user(username, userage):
"""函数的注释应该是这样的"""
函数体
(3)程序开头的注释
(待补充)
(1)命令行中按ctrl+d或者输入exit()退出python
(2)命令行中输入import this可看到python之禅
(3)若输出时间过长,可按ctrl+c停止输出或关闭输出窗口
(4)PEP 8:代码编写格式指南
(5)如果混用了tab和空格,可以让编辑器把所有制表符转化为空格
(6)代码每行不要超过80个字符,注释每行不要超过72个字符
(7)sublime text不能运行提示用户输入的程序
(8)Python标准库是一组模块,安装的python都包含它
(1)range函数:前闭后开
实例1:for value in range(1,5): #打印数字1-4且会自动换行
print(value)
实例2:even_numbers=list(range(4,11,2)) #从4到10,元素之间差2
print(even_numbers) #输出结果为[4,6,8,10]
(待补充)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。