温馨提示:如果你不是初学者请跳过本文:这里会有Python的进阶内容(提前挖坑)
Python 难吗?
废话
Python毫无疑问是个令人害怕的东西,它是许多小朋友接触程序设计的入门语言 (我认为这并不好),是许多非计算机专业理工科、商科甚至社会科学大一的噩梦,emmmm确实,困难得就像学一门自然语言 (懂的都懂) ,不然为什么会有著名的Python教程《Learn Python the Hard Way》!
好的,废话就那么多,该学的还是要学,该考的还是躲不掉。
那么,
开始吧。
本教程笔记是ECUSTer刘同学自学时瞎写,如有错误欢迎指出,因文章错误造成期末挂科概不负责
Welcome to Python!
首先介绍一下!
高级的不用编译的解释型面向对象的交互式的应用广泛的可扩展的容易气死维护的运行速度很慢的傻瓜都能学会的Python!
通过以上简介,应该对这个玩意儿有个全面的了解了吧,咳咳,没有也没关系,这不重要。
不过要注意本教程仅涉及(我只学了)Python3系列版本,这是现在使用最广泛的Python版本,如果你就是要学Python2.x,请出门右转。
Monty Python’s Flying Circus
神奇的Python能做几乎所有东西
真·入门
请记住,我们的初衷是要学习Python这门语言,而不是学习Python的开发工具。
这是《Learn Python the Hard Way》中第一章的一句至理名言,所以不要纠结于我要用什么IDE,用什么炫酷的开发工具。听我的,一个记事本,一个在线的Python解释器足矣。runoobPython3解释器是一个好东西(这不是广告)
好,我们来尝试用它实现第一个程序,输出一行文字“Python is the best!”
print('Python is the best!') #第一个Python程序
运行:
Python is the best!
真棒!你是不是也成功啦!
print()
会告诉计算机把括号内的东西显示出来,并且每个print()
输出内容都会占一行。同时,一个字母、一个单词或者一段文字都需要用''
""
装起来,让计算机能够识别它们。
#注释内容
或者用'''可以转行 写的注释''' """一块 注释"""
对程序写注释,让明天的你明白今天的你到底写了个什么玩意儿,当然,也让别人能快速看明白你的程序。
那再试试输出多行文字
print('Python')
print('is')
print('the best!')
Python
is
the best!
好耶!其实,也没那么难不是吗!嘻,真傻
算术题
小学二年级的加减乘除四则运算应该都是会的,学习了Python以后再也不用自己写算术题了!
四则混合运算
直接上一盘栗子:
print(2 + 2) # 2与2的和
print(5 + 4 - 3) #5、4与-3的和
print( 2 * (3 + 4) ) #2乘以3与4的和
print( 10 / 2 ) #10除以2
4
6
14
5.0
很好~
这下四则混合运算应该是不会有问题了吧!
或许你注意到了,最后一行的运算结果有些不太一样。前面的三个数字我们称之为Integer(整数),最后一个是Float(浮点型数)。产生float有两种方式,一个是运算式子中含有浮点型数据,另一个则是进行出发运算,不管是否除得尽。
print(2 + 2.0)
print(2.5 * 4)
print(10 / 3)
4.0
10.0
3.3333333333333333
对于除不尽的式子,傻傻的Python不可能给我们一个准确的值,无限小数我们小学就学过,它是写不完的。
高年级的算术题
最后三个运算符号特别困难,至少是小学毕业的水平才能够理解。
**
用来表示乘方运算,//用来表示强行整除,%用来取余数:
print(2 ** 5) #2的5次方
print(25 ** (1/2)) #25的平方根
print(10 // 3) #10除以3的整数部分
print(10 % 3) #10除以3的余数
32
5.0
3
1
bingo~ 其实也没有很难嘛
程序的算术
程序中不可避免地需要一些逻辑判断的表达
最最简单的有>
<
大于小于号、>=
<=
大于等于,小于等于、==
等于号。这几个蛮简单的,我们一般用他们来进行判断,如果条件是成立的会得到True,反之则是False。
print(1 > 0)
print(5 == 3)
print(3 <= 3)
True
False
True
诶!有没有发现,这个等号是两个!!!因为单个等号用来表示赋值了嘛,原因嘛,你看一般来说赋值的出现频率大于判断相等一个等号更节省时间······ (逐渐开始胡说八道)
咳咳,敲黑板,接下来的内容很烧脑!
位运算是基于计算机的二进制属性,将参与位运算的值以二进制形式对应每一位进行左移<<、右移>>、取反~、与&、或 | 和 异或^ 计算得出。与、或、异或的每一位按照表中的方式运算:
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
左移是将二进制数整体左移:最高位依次去掉,并在末位补相同位数的0;右移则直接去掉相应位数的末位。按位取反~
则是将二进制数中1、0对换。
a = 32 #
b = 6 #
print ("a与b的值为:", a & b) #
print ("a或b的值为:", a | b)
print ("a异或b的值为:", a ^ b)
print ("a取反的值为:", ~a)
print ("b左移2位的值为:", b<<2)
print ("a右移3位的值为:", a>>3)
a与b的值为: 0
a或b的值为: 38
a异或b的值为: 38
a取反的值为: -33
b左移2位的值为: 24
a右移3位的值为: 4
最后一个符号是:=
它叫海象运算符,发明的人说像这个玩意儿
Assignment expressions(赋值表达式)
There is new syntax:=
that assigns values to variables as part of a larger expression. It is affectionately known as “the walrus operator” due to its resemblance to the eyes and tusks of a walrus.
这确实是个精妙的设计,虽然省下的步骤似乎不多,但是个绝佳的小工具.
官方给出的使用:=
的程序:
a = [5, 4, 34, 2, 1, 46, 92, 14, 26, 45, 3, 35 , 2]
if (n := len(a)) > 10:
print(f"List is too long ({n} elements, expected <= 10)")
如果没有它,我就只能:
a = [5, 4, 34, 2, 1, 46, 92, 14, 26, 45, 3, 35 , 2]
if len(a) > 10:
print(f"List is too long ({len(a)} elements, expected <= 10)")
嗯,老实说,这部分都不太好懂。
稍微难一丢丢的《变量》
什么是字符串
这个,不是什么高大上的东西,字符串,就是print('Python is the best!')
它,里面的Python is the best!
。AaBbCcDd这个叫一个一个的字符,“ABCD”这串一串儿,就是字符串了嘛。字符串的使用需要引号装起来,然后: ''
or ""
it’s not a question ! 都可以用,没啥区别!
在使用字符串时,还需要一个叫转义字符(\
+字符)的工具箱在协助完成特定格式的内容输出。
print('Python\n is best') #next line
print('love\tPython') #tab缩进
print('\\Python\'is\"easy\"') #输出\ ' "
print('\a abc\b') #系统提示音;backspace退格
\n
可以使用"""
来实现:print("""Python is best""")
Python is best
字符串的算术题
有的憨憨可能会有疑问:为啥字符串要引号框住呢!
诶!好问题,试试这组代码:
print(2 + 2)
print('2' + '2')
4
22
一个是数,一个是符号,能区分吧。
那字符串除了“相加”还能干啥。你自己看啊:
print("Hello" + 'Python')
print("Python" * 3)
print("Python"[1]) #众所周知,程序计数从零开始
print("Python"[1:3]) #截取一段字符串
HelloPython
PythonPythonPython
y
yt
字符串运算唯一令人感到费解的应该是截取字符串的方式。括号表示一个左闭右开的区间,即是示例中的[1:3]
不会取第四个字符。:
前默认为0,它的前后可以没有数字。若填入数字为负数,则由字符串末尾开始计数。
字符串格式
首先,记住它们:
符 号 | 含义 |
---|---|
%c | 格式为字符及其ASCII码 |
%s | 格式为字符串 |
%d | 格式为整数 |
%o | 格式为无符号八进制数 |
%x | 格式为无符号十六进制数 |
%f | 格式为浮点数字 |
%e | 用科学计数法格式化浮点数 |
%r | 输出字面义字符 |
%a.b | a:输出最小宽度(不够长就会补空格)b:小数精度 |
然后这样使用:
x = -9999.9999
print("%s" % x) #-9999.9999
print("%d" % x) #-9999
print("%f" % x) #-9999.999900
print("%e" % x) #-1.000000e+04
y = 123
print("%o" % y) #173
print("%x" % y) #7b
print("%r" % "\n") #'\n'
print("%15.4f" % y) # 123.0000
-9999.9999
-9999
-9999
-9999.999900
-1.000000e+04
173
7b
'\n'
123.0000
变量命名
前面我就说过,学习Python像是学一门外语一样。命名变量这一方面突出了它的这一特点。
你可以用任何语言作为变量名称
给你看看效果:
圆周率 = 3.131415926
자연로그 = 2.718
اللوغاريتمالطبيعي = 자연로그
print(圆周率)
print(자연로그)
print(اللوغاريتمالطبيعي)
3.131415926
2.718
2.718
ohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh~
不过要注意噢,我说的是语言!!阿拉伯数字可不能作为变量名的第一个字符。除此之外,还可以使用_
作为变量名的一部分。
同时,Python世界的保留关键词也不可以使用,这些关键词是Python程序最基础的命令与函数,我们可以随时查看关键词有哪些:
import keyword
print(keyword.kwlist)
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
简单的程序交互
好高大上的标题啊!(其实就是往里输东西,得到运算后的输出结果)
而且特!别!简!单!
使用input([输入提示])
即可:
a = int(input("a = "))
b = int(input("b = "))
print("the sum of a and b is %d" % (a+b))
a = 5
b = 2
the sum of a and b is 7
在Python3中,input()
可以接受所有输入格式。但是,程序默认输入值为字符串,若需要程序接受数值,需要强行转换输入内容格式。
end
最后,盘点一下Python中的运算优先顺序:
运算符 | 作用 |
---|---|
** | 指数 |
~ + - | 按位翻转, 一元加号和减号 |
* / % // | 乘,除,求余数和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 ‘AND’ |
^ | | 位运算符 |
<= < > >= | 比较运算符 |
== != | 等于运算符 |
= %= /= //= -= += *= **= := | 赋值运算符 |
Congrats~
到这儿Python的学习就算是入门了······吧,下一篇,Python的基本程序结构。