0
点赞
收藏
分享

微信扫一扫

廖雪峰python从零入门(一)

小贴贴纸happy 2022-03-22 阅读 64
python

2022.3.21
一 、在Python交互式模式下,可以直接输入代码,然后执行,并立刻得到结果。

在命令行模式下,可以直接运行.py文件。
注:①Python交互模式,它的提示符是 >>>
      命令行模式,        它的提示符类似C:\>
    ②可用 cd+空格+文件根目录 选择.py文件
    [python中cd 的使用](https://www.py.cn/jishu/jichu/15329.html)
                       (https://blog.csdn.net/qq_41592652/article/details/84874794)
    ③Python的交互模式和直接运行.py文件有什么区别呢?
        直接输入python进入交互模式,相当于启动了Python解释器,但是等待你一行一行地输入源代码,
    每输入一行就执行一行。 直接运行.py文件相当于启动了Python解释器,然后一次性把.py文件的
    源代码给执行了,你是没有机会以交互的方式输入源代码的

二、python中的输入与输出
python的输出
① 用***print()在括号中加上***字符串,就可以向屏幕上输出指定的文字
②print()函数也可以***接受多个字符串***,用***逗号“,”***隔开,
print()会依次打印每个字符串,遇到逗号“,”会输出一个空格
③print()也可以打印整数,或者计算结果

   `>>> print(300)
     300   #可以直接输出整数
     
    >>> print(100 + 200)
    300` #也可以直接计算结果 注意到 这里没有加单引号或者双引号,解释器会直接计算结果
    
    >>> print('100 + 200 =', 100 + 200)
    100 + 200 = 300 # 括号里第一个加了单引号,代表是一个字符串,所以原封不动的输出出来,
    但后面没有加  单双引号,解释器会直接计算出结果 
    另:参考②的解释 理解为何会那么输出

python输入
Python提供了一个input(),可以让用户输入字符串,并存放到一个变量里

>>> name = input()
Michael
>>> print(name)
Michael`

name = input()
print('hello,', name)``#运行这个程序 会让用户先输入一个名字 然后再把这个名字打印出来
Michael
hello, Michael

name = input('please enter your name: ')
print('hello,', name)#input函数可以这么使用,利用单双引号暂时不将输入限定,依旧由用户自己选择
please enter your name: Michael
hello, Michael

三、 python基础
以**#开头的语句是注释**,注释是给人看的,可以是任意内容,解释器会忽略掉注释。其他每一行都是一个语句,当语句以冒号:结尾时,缩进的语句视为代码块
另:python是大小写敏感

数据类型与变量
①整数与浮点数
python中存在整数与浮点数两种数据类型。浮点数用科学计数法表示,把10用e替代。
另:整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。
②字符串
字符串是以单引号’或双引号"括起来的***任意文本,比如’abc’,"xyz"等等。请注意,’'或""本身只是一种表示方式,不是字符串的一部分*,因此,字符串’abc’只有a,b,c这3个字符。如果’本身也是一个字符,那就可以用""括起来,比如"I’m OK"包含的字符是I,’,m,空格,O,K这6个字符。
字符串内部既包含’又包含" 以用转义字符\来标识

'I\'m \"OK\"!'
表示的字符串内容是:

I'm "OK"!

转义字符\可以转义很多字符,比如**\n表示换行,\t表示制表符*制表符是什么 怎么用,字符\本身也要转义,所以**\表示的字符就是*

>>> print('I\'m ok.')
I'm ok.
>>> print('I\'m learning\nPython.')
I'm learning
Python.
>>> print('\\\n\\')
\
\

Python还允许用***r’‘表示’'内部的字符串默认不转义***

>>> print('\\\t\\')
\       \
>>> print(r'\\\t\\')
\\\t\\

Python允许用’’’…’’'的格式表示多行内容

print('''line1
... line2
... line3''')
line1
line2
line3

③布尔值
布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值

④空值
它是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

⑤变量
在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量

a = 123 # a是整数
print(a)
a = 'ABC' # a变为字符串
print(a)

这种变量本身类型不固定的语言称之为动态语言
之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。

int a = 123; // a是整数类型变量
a = "ABC"; // 错误:不能把字符串赋给整型变量

变量在计算机内存中的理解

a = 'ABC'
#Python解释器干了两件事情:

在内存中创建了一个'ABC'的字符串;
在内存中创建了一个名为a的变量,并把它指向'ABC'。
也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据

一个重要的例子来理解变量在计算机中的存储
理解一下:最后一行打印出变量b的内容到底是’ABC’呢还是’XYZ’?

a = 'ABC'
b = a
a = 'XYZ'
print(b)

在这里插入图片描述

⑤ 常量
常量就是不能变的变量,比如常用的数学常数π就是一个常量。在Python中,通常用全部大写的变量名表示常量
/除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数:
还有一种除法是//,称为地板除,两个整数的除法仍然是整数

字符串和编码
%运算符就是用来格式化字符串的python中%的用法
在这里插入图片描述
有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个**%?,括号可以省略,但如果有多个%需要跟圆括号,按顺序对应之前的%?**
单双引号之后不跟诸如空格、逗号、句号之类的任何标点符号

# 一定理解这个案例
>>> 'Hello, %s' % 'world'#如果是字符串,需要加单双引号 
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'

如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串

>>> 'Age: %s. Gender: %s' % (25, True)
'Age: 25. Gender: True'

字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%

>>> 'growth rate: %d %%' % 7
'growth rate: 7 %'

format()函数
另一种格式化字符串的方法是使用字符串的format()方法,它会用传入的参数依次替换字符串内的占位符{0}、{1}……,不过这种方式写起来比%要麻烦得多:

理解如下例子 注意浮点数位置限制的用法
>>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
'Hello, 小明, 成绩提升了 17.1%'

f-string函数
最后一种格式化字符串的方法是使用以f开头的字符串,称之为f-string,它和普通字符串不同之处在于,字符串如果包含{xxx},就会以对应的变量替换:

>>> r = 2.5
>>> s = 3.14 * r ** 2
>>> print(f'The area of a circle with radius {r} is {s:.2f}')
The area of a circle with radius 2.5 is 19.62

练习:小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点,并用字符串格式化显示出’xx.x%’,只保留小数点后1位:

s1 = 72
s2 = 85
r = (s2-s1)/s1*100
print('小明的成绩提升了:%.1f%%'%r) #注:最后一个%与单引号之间不需要空格或任何标点
print('小明的成绩提升了:{0:.1f}%'.format(r))#注:单引号后跟的是点而不是逗号、单引号或者空格
print(f'小明的成绩提升了:{r:.1f}%')#用大括号括住而不是方括号或者圆括号

python中的列表(list)与元组(tuple)
列表(list)
写法:列表名+空格+等于号+空格+方括号 注意:(方括号内添加元素,元素之间逗号隔开)
list是一种***有序***的集合,可以**随时添加和删除其中的元素。
list里面的
元素的数据类型也可以不同

>>> L = ['Apple', 123, True]

list元素也可以是另一个list,但内嵌于列表内的列表无论内有多少元素,在统计最外层列表中元素的个数时候,均视为1

>>> s = ['python', 'java', ['asp', 'php'], 'scheme']
>>> len(s)
4#注意这里 最外层列表的元素个数为4 即内嵌的列表视为仅有一个元素

要拿到’php’可以写p[1]或者s[2][1],因此s可以看成是一个二维数组,类似的还有三维、四维……数组
可用len(列表名)来获取list中元素的个数
①可以用索引来访问list中每一个位置的元素,记得正向索引是从0开始的:反向索引从-1开始注意:索引超过列表中元素的个数,就会报错

classmates = ['Michael', 'Bob', 'Tracy']
>>> classmates[0]
'Michael'
>>> classmates[1]
'Bob'
>>> classmates[-2]
'Bob'
>>> classmates[-3]
'Michael'

②list是一个可变的有序表,所以,可以往list中追加元素
两种方式向列表中插入元素(元素可以是字符串也可以不是。字符串需要加单双引号)
1.append函数(仅仅可以在列表的末尾插入
用法:列表名+点+append+(插入的元素)

>>> classmates.append('Adam')
>>> classmates
['Michael', 'Bob', 'Tracy', 'Adam']

2.insert函数(可在列表任意位置插入
用法:列表名+点+insert+(指定的位置索引号+逗号+插入的元素)
注意:在索引号为k的位置插入元组,即插入后新列表的第k个元组变为该元素

>>> classmates.insert(1, 'Jack')
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']

删除列表中的元素
pop函数(用来删除列表末尾或者任意指定位置的元素)
删除列表末尾元素
用法:列表名+点+pop+()

>>> classmates.pop()
'Adam'
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy']

删除列表指定位置
用法:列表名+点+pop+(要删除元素的索引号)

>>> classmates.pop(1)
'Jack'
>>> classmates
['Michael', 'Bob', 'Tracy']

④列表中元素的替换
直接向对应位置赋值即可

>>> classmates[1] = 'Sarah'
>>> classmates
['Michael', 'Sarah', 'Tracy']

元组(tuple)
元组也是列表,但是元组是不可变的,即元组没有append、insert、pop之类的添加或者删除操作,这样使得元组更加安全可靠。
写法:元组名+空格+等号+空格+圆括号
注意:①与可变列表不同的是,定义元组用的是圆括号而不是方括号
②元组选取指定位置元素与可变列表选取元素方式一样。
③元组内的元素用逗号隔开

元组用法的一些注意事项
①当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来(因为元组内元素不可添加或删除)
②定义一个空的tuple,可以写成元组名+空格+等号+空格+圆括号
③定义只有一个元素的元组时
错误示范(**定义的不是tuple,是1这个数!**这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1)

>>> t = (1)
>>> t
1

正确示范只有1个元素的tuple定义时必须加一个逗号,

>>> t = (1,)
>>> t
(1,)

④当元组内有一个可变列表作为组内元素时,元组就“可变”了

>>> t = ('a', 'b', ['A', 'B'])#定义了一个包含列表的元组
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'#对元组内的列表内的元素进行再赋值
>>> t
('a', 'b', ['X', 'Y'])#输出结果,与之前定义的元组元素已不同

对元组“可变”的解释
元组在内存中的位置
表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向’a’,就不能改成指向’b’,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
练习:

L = [
    ['Apple', 'Google', 'Microsoft'],
    ['Java', 'Python', 'Ruby', 'PHP'],
    ['Adam', 'Bart', 'Lisa']
    ]
# 打印Apple:
print('打印apple:%s'%L[0][0])
# 打印Python:
print(L[1][1])
print('L[1][1]')#注意两条语句最后的输出
# 打印Lisa:
print(L[-1][-1])
#在列表末尾添加数字6
L.append(6)
print(L)
L.insert(-1,6)
print(L)
L.insert(6,6)
print(L)
#删除列表末尾的元素
L.pop()
print(L)
L.pop(-1)
print(L)
L.pop(3)
print(L)

结果如下:

打印apple:Apple
Python
L[1][1]
Lisa
[['Apple', 'Google', 'Microsoft'], ['Java', 'Python', 'Ruby', 'PHP'], ['Adam', 'Bart', 'Lisa'], 6]
[['Apple', 'Google', 'Microsoft'], ['Java', 'Python', 'Ruby', 'PHP'], ['Adam', 'Bart', 'Lisa'], 6, 6]
[['Apple', 'Google', 'Microsoft'], ['Java', 'Python', 'Ruby', 'PHP'], ['Adam', 'Bart', 'Lisa'], 6, 6, 6]
[['Apple', 'Google', 'Microsoft'], ['Java', 'Python', 'Ruby', 'PHP'], ['Adam', 'Bart', 'Lisa'], 6, 6]
[['Apple', 'Google', 'Microsoft'], ['Java', 'Python', 'Ruby', 'PHP'], ['Adam', 'Bart', 'Lisa'], 6]
[['Apple', 'Google', 'Microsoft'], ['Java', 'Python', 'Ruby', 'PHP'], ['Adam', 'Bart', 'Lisa']]
[['Apple', 'Google', 'Microsoft'], ['Java', 'Python', 'Ruby', 'PHP'], ['Adam', 'Bart', 'Lisa']]
举报

相关推荐

0 条评论