python可以说非常热门+好用了,可是学校一般只教c/c++啊?

不过,在通过学习c/c++等语言get了编程基础之后,自学python也就非常简单啦。你只需要:

step 1:学习python的基础语法

step 2:根据用python的目的,学习经典的库

step 3:实战

这篇博文是我在完成step 1时所做的笔记,以《Python编程从入门到实践》(人民邮电出版社)这本书为大纲。因为有c的基础,所以没有繁杂的解释,直接上语法和经典的例子。所以本文比较适合初学或者很久不用python,但有一定编程基础的人作为python语法索引来使用。

零、目录

一、输入输出(含文件处理)

1.print语句

2.用户输入

3.文件处理

二、变量及其运算

1.变量名

2.字符串

3.数字运算

三、容器

1.列表

2.元组

3.字典

四、程序块

1.if...elif...else

2.while循环

3.for循环

五、函数

1.位置实参和关键字实参(用一个实例说明)

2.形参的默认值

3.列表作为实参

4.传递任意数量的实参:

5.传递任意数量的关键字实参:

6.函数编写规范:

六、类

1.一个实例:

2.属性的默认值:

3.修改属性

4.继承:

5.类编码风格:

七、模块

1.模块介绍

2.导入模块

3. 编码风格

八、异常处理

九、其他

1.注释

2.使用注意

十、常用函数


一、输入输出(含文件处理)

1.print语句

(1)print语句的基本语法

Python2:print "Hello world!"

Python3:print("Hello world!")

(2)print实现字符串和变量的拼接

print("bbbbbbbbbbbbb" +某变量名+ "blablabla")

2.用户输入

(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()即可

3.文件处理

(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.变量名

只能包含数字、下划线、字母,不能以数字开头

尽量用小写

2.字符串

(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')

3.数字运算

(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.列表

(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 :”等形式使用

2.元组

(1)定义元组

把列表的方括号改为圆括号即可

(2)元组是不可变的列表

不能修改元组中的元素:

dimensions[0]=40 #这句不合法

但可以重新定义一个元组:

Dimensions=(50,30)

Dimensions=(40,20) #这句合法

3.字典

(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.if...elif...else

(1)基本结构

#A、B均为布尔表达式

if A :

    ...

elif B :   

    ...

else :

    ...

(2)布尔表达式

用and or == != > < 等连接

2.while循环

(1)基本结构

#A是布尔表达式

while A :

      ...

(2)break、continue

用法和c一样

3.for循环

(1)基本结构

#magicians是一个列表的名字

for magician in magicians: #从magicians中取一个元素存储到变量magician中

       print(magician)

(2)break、continue

用法和c一样

五、函数

1.位置实参和关键字实参(用一个实例说明)

def greet_user(username, userage):

      """函数体"""

使用位置实参:result, age = greet_user(“Tom”, 21)

使用关键字实参:result, age = greet_user(username=“Tom”, userage=21) #函数调用中的关键字实参,等号两边不要有空格

2.形参的默认值

可以给形参指定默认值:

        def greet_user(username, userage=21): #给形参指定默认值时,等号两边不要有空格

如果调用函数时给形参提供了实参,则使用指定的实参值,否则使用默认值

形参列表中必须先列出没有默认值的形参

3.列表作为实参

#greet是函数名,list是列表名

把列表的名字作为实参传给函数,则函数可以修改列表:greet(list)

若想禁止函数修改列表,则这样传参:greet(list[ : ])

4.传递任意数量的实参:

#一个实例:

def make_pizza(*toppings) : #*号创建了一个名为toppings的空元组,并将收到的所有值都存到这个元组中

        print(toppings)

 

make_pizza('mushrooms', 'green peppers', 'extra cheese') #调用make_pizza函数,可以传任意数量的参数

5.传递任意数量的关键字实参:

def build_profile(**user_info) : #**号创建了一个名为user_info的空字典,并将收到的所有键值对都存到这个字典中

        print(user_info)

 

build_profile(location='princeton', field='physics') #调用build_profile函数,可以传任意数量的关键字参数

6.函数编写规范:

(1)函数名应该为描述性名称,且只使用小写字母和下划线

(2)每个函数都应包含阐述功能的注释,紧跟在函数定义后面,采用文档字符串形式

(3)给形参指定默认值时,等号两边不要有空格

(4)使用关键字实参时,等号两边不要有空格

六、类

1.一个实例:

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.")

2.属性的默认值

在定义类的时候直接指定某属性=某值即可

3.修改属性

直接修改:my_car.age = 8

通过函数修改,在类中定义修改的函数,实例:

        def update_age(self, newage) :

                self.age = newage

4.继承:

(待补充)

5.类编码风格:

(1)类名应采用驼峰命名法,即每个单词的首字母大写,不使用下划线

(2)实例名和模块名都采用小写格式,且单词之间加下划线

(3)在类中,使用一个空行来分隔方法;在模块中,使用两个空行来分隔类

七、模块

1.模块介绍

模块是.py文件,其中写有函数或类的定义

2.导入模块

(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()函数

3. 编码风格

先编写导入标准库模块的import语句,再添加一个空行,然后编写导入你自己编写的模块的import语句

八、异常处理

(待补充)

九、其他

1.注释

(1)单行注释:用'#'('#'相当于c里的'//')

(2)函数的注释

def greet_user(username, userage):

       """函数的注释应该是这样的"""

      函数体

(3)程序开头的注释

(待补充)

2.使用注意

(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]

(待补充)

更多推荐

python入门之基础语法(适合有编程基础者)