听说你也要自学python,看着就够了(一)

作为一个python自学狗,想在这里记录我的学习历程!

第一章(基础知识)

  1. IDE安装
  2. 数和表达式
  3. 变量
  4. 语句
  5. 获取用户输入
  6. 函数
  7. 模块
  8. 注释
  9. 字符串

1.1 IDE的安装:

pycharm安装配置请直接点我

1.2 数和表达式

这里简单代码的运行我们选择python自带的IDLE.

>>> 2 + 2
4

结果为4并不难,这是常见运算
那么再来看看除法

>>>1/2
0.5
>>>1/1
1.0

你能看到结果为小数,即浮点数。但是这里和C语言有点不一样。
听说你也要自学python,看着就够了(一)_第1张图片
c语言的除法计算如果不声明结果类型,会丢失小数部分。而在python里如何丢失小数部分呢?
like this:

>>>1//2
0
>>>1//1
1
>>>5.0//2.4
2.0

我们发现用双斜杠//可以像c语言一样实现丢失小数部分,即进行整除运算(python2并不支持双斜杠,需要_future_)

至此了解了最基本的运算后,再来介绍一种与整除相关计算:求余

>>>1%2
1
>>>10%3
1

x%y的结果就是x除以y的余数。我用数学表达式:x%y=x-((x//y)y)
最后我们介绍一个运算符叫做
乘方(求幂)运算符*

>>>2**3
8
>>>-3**2
-9
>>>(-3)**2
9

这里乘方运算优先级比单目减法高,因此-32等价于-(32)

十六进制、八进制和二进制

十六进制数、八进制数、二进制数需要像这样指出:

>>>0XAF
175
>>>0O10
8
>>>0b1011010010
722

1.3 变量

变量(variable) 是表示特定值的名称

x = 3#这叫做赋值,将值3赋给变量x
print(x * 2#这里结果是 6

python中,名称(标识符)只能由字母、数字和下划线构成,且不能用数字打头。所以plan9合法,9plan 不合法。

1.4 语句

语句和表达式有什么不同呢?

>>>2*2
4
>>>print(2*2)
4

这里可以看到结果相同,但是这里意义不同。前者是一个表达式,后者是一个语句。但是在程序中前者没有任何意义,后者会向屏幕打印一个4。

1.5 获取用户输入

这里给大家介绍从键盘输入(input函数):

>>>input("how old are you :")
how old are you :18
'18'

这里使用input打印了字符串“how old are you:”用于提示用户输入相关信息。结果“18”以字符串形式返回。但我们可以用int将他转换为整数:

>>>x = input("x:")
x:18
>>>y = input("y:")
y:15
>>>print(int(x)*int(y))
270

1.6 函数

1.3中我们使用了乘方运算来执行幂运算,但是不使用这个运算符也可以使用函数pow

>>>2**3
8
>>>pow(2,3)
8

这只是python众多函数中一个,来执行特定操作。后面还会介绍到自己编写函数。这里的pow等标准函数叫做内置函数Built-in-function(BIF)
有很多函数可以编写数值表达式。例如abs计算绝对值,round将浮点数圆整等等

>>>abs(-10)
10
>>>round(3.4)
3

1.7 模块

1.7.1 模块导入

模块就是python灵魂所在,就像插件对于google chrome的作用。模块是python的扩展,导入模块时,可用特殊指令import
like this:

import math#数学有关模块
t = math.floor(32.9)
m = int(32.9)
这里两行代码的结果都是一样的,都会是32

这里floor就是math模块中一个函数,用于返回小于等于目标数的最大整数。与之相反,还有函数ceil:返回大于或等于目标数的最小整数。

>>>math.ceil(32.3)
33
>>>math.ceil(32)
32
1.7.2 模块函数使用
函数调用方法:module.function()
1.7.3 指定模块名

如果确定不会从不同模块中导入多个同名变量,你可能不想每次使用函数都使用模块名,在这种情况下可以使用import的如下变种:
(sqrt函数在math模块和cmath模块中都存在)

>>>from math import sqrt
>>>sqrt(9)
3.0

Tips:使用该方法时 from module import function可在调用函数时不指定模块前缀。

1.7.4 cmath和复数

函数sqrt用于计算平方根。下面我们看看向他提供一个负数会发生什么?

>>>from math import sqrt
>>>sqrt(-1)
Traceback(most recent call last):
...
valueError:math domain error

会发生如上的报错信息!
甚至在有些平台上:

>>>from math import sqrt
>>>sqrt(-1)
nan#(not a number)指的是非数值

如果我们坚持将值域限定为实数,这样就无法计算负数平方根。因为负数平方根是一个虚数。python标准库提供了一个专门用于计算复数的模块:cmath

>>>from cmath import sqrt
>>>sqrt(-1)
1j

1j是一个虚数,虚数都以j或J结尾。复数运算都基于:-1平方根是1j

>>>(1+3j)*(9+4j)
(-3+31j)
由此可见python提供了对复数运算的支持。

该实例证明python可以计算复数。

1.8 注释

在python中“#”比较特殊:在代码中“#”后面到行尾内容都会被注释、忽略。

#打印圆周长
print(2 * pi * radius)

善用注释让代码清晰易懂,程序员戒律之“汝应注释”

1.9 字符串

1.9.1单引号字符串以及引号转义

与数值一样,字符串也是值:

>>>"hello Sunshine!"
"hello Sunshine!"
>>>'hello Sunshine!'
'hello Sunshine!'

在这里我们看到单引号和双引号在打印字符串时居然没有区别。大家有想过为什么python同时支持单双引号吗?因为在有些情况下,可能会用到。

>>>"let's go!"
"let's go!"
>>>'she said "where you wanna go?"'
'she said "where you wanna go?"'

上述两行代码中打印的字符串都出现了引号,第一个出现了一撇号,后者出现了一对双引号。打印时需要相对应的引号打印。否则:

>>>'Let's go!'
SyntaxError:invalid syntax#出现了报错信息

但是此情况并非绝对,我们也可以将字符串中带有的引号进行转义:

>>>'let\'s go!'
"let's go!"
>>>"she said \"where you wanna go?\""
'she said "where you wanna go?"'

用斜杠\将中间引号转义。

1.9.2 拼接字符串
>>>"let's go"'hello Sunshine'
'let\'s go hello Sunshine'

我依次输入了两个字符串,python将他们自动拼接。然而这仅在你输入两个字符串时起作用。

>>>x = "Hello"
>>>y = "Sunshine!"
>>>x y
syntaxerror:invalid syntax#出现报错,换个方式
>>>x + y
'Hello Sunshine!'
1.9.3 字符串表示str和repr
>>>"Hello \nSunshine!"
'Hello Sunshine!'
>>>print("Hello \nSunshine!")
Hello,
Sunshine!

这里使用两种机制将值转换成字符串。但我们也可以使用函数str和repr。见码:

>>>print(repr("Hello ,\nSunshine!"))
'Hello,\nSunshine!'
>>>print(str("Hello ,\nSunshine!"))
Hello,
Sunshine!

大家可以与上一种方法比较。

1.9.4 长字符串和原始字符串

1.长字符串
要表示很长的字符串时(跨越多行的字符串),可以使用三引号(而不是普通引号)。

print('''she said"where'd you wanna go?
how much you wanna risk?
I'm not looking for somebody with some superhuman gifts."''')
这里也可以使用三个双引号,"""like this"""
这样使用字符串中引号无需转义

2.原始字符串
原始字符串不宜特殊方式处理反斜杠,因此在某些情况很有用。
表示路径时:

>>>path = 'C:\nowhere'
>>>path
'C:\nowhere'

这样看起来没啥问题,但是打印会发生什么呢?

>>>print(path)
C:
owhere
#发现并不是我们想要的数据。
#这个例子我们可以用反斜杠转义\:
>>>print('C:\\nowhere')
'C:\nowhere'
#但是当路径很长时就需要大量反斜杠\
>>>print('C:\\Users\\hitbang佳爷\\.android')
C:\Users\hitbang佳爷\.android

这时原始字符串就可以派上用场!

>>>print(r'C:\nowhere')
C:\nowhere
>>>print(r'C:\Users\hitbang佳爷\.android')
C:\Users\hitbang佳爷\.android
>>>print(r'let\'s go!')
let\'s go!

如你所见,原始字符串以前缀r表示。看起来它可以输出任何格式,但有一个例外就是字符串里引号反而需要转义,如上面第三个代码。
另外,原始字符串不能以单个反斜杠结尾:

>>>print(r'how old are you\')
SyntaxError:EOL while scanning string literal
#这里出现报错就是因为字符串结尾是‘\’
#改进
>>>print(r'how old are you''\\')
how old are you\
#这样便实现了输出结尾反斜杠

1.10 小结

至此第一单元基础部分分享结束,下面一次会分享列表与元组相关知识!或许有人1好奇代码中>>>这个符号,这只是交互式解释器(IDLE)的固定提示符,并没有什么实际意义。今天代码比较基础就没有使用pycharm!

你可能感兴趣的:(笔记)