第一章 起步
1.1 安装python和文本编辑器pycharm
我的环境:使用Anaconda安装Python 3.7
1.2文本编辑器pycharm
我的环境:使用jupyter notbook练习
测试:
print("Hello World!")
Hello World!
第二章 变量和简单的数据类型
2.1 在运行.py文件时python做了什么
- 编辑器看到.py结尾的文件
- 调用python解释器
- 解释器读取文件中的每个单词,确定其含义
2.2 变量
定义打印变量时python的运行过程
massage = "Hello World!"
print(massage)
运行结果:Hello World!
- 解释器读取每个单词发现文件首先定义了一个变量massage
- 对massage 进行赋值,这里赋值了字符串“Hello World!"
- 然后解释器读到print发现要执行打印操作
- 打印的内容就是刚刚定义的变量
- 完成打印
可变变量
massgae = "Hello World!"
print(massage)
massage = "Hello World again!"
print(massage)
运行结果:
Hello World!
Hello World again!
- python可以对变量进行重新赋值,他的变量是可变变量。
- 在编程中,经常需要修改变量的值,再将新值存回到原来的变量中。这就是变量的值可能随程序的运行或用户输入数据而发生变化的原因。
2.2.1 变量的命名和使用
- 变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头,例如,可将变量命名为message_1,但不能将其命名为1_message
- 变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greeting message会引发错误。
- 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print。
- 变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。
- 慎用小写字母l和大写字母O,因为它们可能被人错看成数字1和0。
要创建良好的变量名,需要经过一定的实践。
2.2.2 使用变量时避免命名错误
这里讲的是如果命名的变量和调用的变量不一致,那么python就会报错
simple_massage = "I hope I can pass the interview"
print(simple_massage)
运行结果:
I hope I can pass the interview
simple_massages = "I hope I can pass the interview"
print(simple_massages)
simple_massages = "If not, it's OK."
print(simple_massages)
I hope I can pass the interview
运行结果:
I hope I can pass the interview
If not, it’s OK.
2.3 字符串
- 可以是单引号,也可以是双引号
- 所以当句子中有’的时候比较方便
2.3.1使用方法修改字符串的大小写
name = "allen stone"
print(name.title())
运行结果:
Allen Stone
- 方法是Python可对数据执行的操作。在name.title()中,name后面的句点(.)让Python对变量name执行方法title()指定的操作。
- 每个方法后面都跟着一对括号,这是因为方法通常需要额外的信息来完成其工作。这种信息是在括号内提供的。函数title()不需要额外的信息,因此它后面的括号是空的。
- title()以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写。这很有用,因为你经常需要将名字视为信息。例如,你可能希望程序将值Ada、ADA和ada视为同一个名字,并将它们都显示为Ada。
name = "allen stone"
print(name.upper())
print(name.lower())
运行结果:
ALLEN STONE
allen stone
存储数据时,方法lower()很有用。很多时候,你无法依靠用户来提供正确的大小写,因此需要将字符串先转换为小写,再存储它们。以后需要显示这些信息时,再将其转换为最合适的大小写方式。
2.3.2 合并拼接字符串
有时候需要合并字符串,比如想让姓和名保存在不同的变量中,等到需要调用的时候再合并起来
first_name = "Lewis"
last_name = "Allan"
full_name = first_name +" "+ last_name
print(full_name)
运行结果:
Lewis Allan
2.3.3 使用制表符或换行符来添加空白
在编程中,空白泛指任何非打印字符,如空格、制表符和换行符。你可使用空白来组织输出,以使其更易读。
要在字符串中添加制表符,可使用字符组合\t
print("\tpython")
运行结果:
python
要在字符串中添加换行符,可使用字符组合\n:
print("Languages:\nPython\nC\nJavaScript")
运行结果:
Languages:
Python
C
JavaScript
2.3.4 删除空白
- 在程序中,额外的空白可能令人迷惑。'python’和’python '对程序来说,它们是两个不同的字符串。Python能够发现’python '中额外的空白,并认为它是有意义的——除非你告诉它不是这样的。
- 空白很重要,因为你经常需要比较两个字符串是否相同。例如,在用户登录网站时检查其用户名。
- Python能够找出字符串开头和末尾多余的空白。要确保字符串末尾没有空白,可使用方法rstrip()。
favourite_lanugage = " python "
#去掉后面空格
print(favourite_lanugage.rstrip())
#去掉前面空格
print(favourite_lanugage.lstrip())
#去掉所有空格
print(favourite_lanugage.strip())
print(favourite_lanugage)
2.3.5 使用字符串时避免语法错误
语法错误报错通常不具体,比较难以查找,这里的举例是在双引号句子中有’,那么这个句子可以正常编译。如果在单引号句子中,那么这个句子不可以正常编译。
练习:
#2.3
name = "Mia"
message = print("Hello "+name+", would you like to learn some Python today?")
运行结果:
Hello Mia, would you like to learn some Python today?
#2.4
name = "mia lewis"
print(name.upper())
print(name.lower())
print(name.title())
运行结果:
MIA LEWIS
mia lewis
Mia Lewis
#2.5
message = 'Albert Einstein once said, "A person who never made a mistake never tried anything new."'
print(message)
运行结果:
Albert Einstein once said, “A person who never made a mistake never tried anything new.”
#2.6
famous_person = "lewis"
message = "you don't really care about me."
print(famous_person +" once said "+'"'+ message+'"'
lewis once said “you don’t really care about me.”
#2.7
name_1 = "\tMia "
print(name_1)
name_2 = "names\nMia\nLewis"
print(name_2)
print(name_1.rstrip())
print(name_1.strip())
print(name_1.lstrip())
**在练习中发现strip,lstrip和rstrip能把\n也去掉,是不是\n也是一种空白呢?但是我认为在实际工作中replace还是更常用一些
2.4 数字
在编程中,经常使用数字来记录游戏得分、表示可视化数据、存储Web应用信息等。Python根据数字的用法以不同的方式处理它们。
2.4.1 整数
- 在命令行中可以直接计算
- 支持运算次序
2.4.2 浮点数
- 带小数点的数字就是浮点数
- 但是运算结果出现的小数位数是不确定的,后面会学习怎么处理这个问题,现在忽略小数位后面的数字吧
0.2+0.1
0.30000000000000004
2.4.3 使用函数str()避免类型错误
age = 22
message = "Happy " + age + "rd Birthday!"
print(massage)
TypeError Traceback (most recent call last)
in ()
1 age = 22
----> 2 message = "Happy " + age + “rd Birthday!”
3 print(massage)
TypeError: can only concatenate str (not “int”) to str
- 这里的错误叫类型错误也就是说python没有办法识别age的信息。
- 这个变量表示的可能是数值23,也可能是字符2和3。像上面这样在字符串中使用整数时,需要显式地指出你希望Python将这个整数用作字符串。
- 为此,可调用函数str(),它让Python将非字符串值表示为字符串:
age = 22
message = "Happy " + str(age) + "rd Birthday!"
print(message)
Happy 22rd Birthday!
练习:
print(1+7)
print(100-92)
#他们的答案不是整数int哦,除法怎么能够保证是int呢?
print(0.2*40)
print(40/5)
#是Int
print(2*4)
只会做小数除法,不知道整数除法怎么做
8
8
8.0
8.0
8
favourtie_num = 7
message = "my favourite number is "+str(favourtie_num)
print(message)
my favourite number is 7
2.5 注释
- 编写注释的主要目的是阐述代码要做什么,以及是如何做的。
- 要成为专业程序员或与其他程序员合作,就必须编写有意义的注释。
- 训练有素的程序员都希望代码中包含注释,因此你最好从现在开始就在程序中添加描述性注释。作为新手,最值得养成的习惯之一是,在代码中编写清晰、简洁的注释。
- 上你的姓名和当前日期,再用一句话阐述程序的功能。
2.6 python之禅
import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea – let’s do more of those!