Python入坑第一章——基础篇
刚挖完坑的鄙人欠着成吨的数分作业又圆润地来挖了个新坑,照这个铲子的使用频率可能我要在ACM里打铁了hhh(flag++)
2017.11.27更新:
重新调整了内容,使得对像我一样的萌新更加友好,这一定很cooooooool
前言(吐槽)
在周围的同学还在为未来的挂科率第二的c语言(第一是大物)头疼的时候,我已经欢快地跑来学Python啦
不过Python对于新人来说(应该)还是很友好的,不知道为什么大学不学Python而非要学c…不过这为我提供了一个勾搭妹子的途径hhh (那边那个妹子,免费辅导c语言,手把手教哟)
~~仔细想想还是从头开始吧,不然我可能还得开一个c语言的坑
篇幅凑够了,那么就来进入正题吧
变量(Variable)
Python相对于c/c++的一个最大的不同应该就是Python是动态类型语言(Dynamic programming language)(另一个不同是强类型(Strongly typed),这里不作解释),通俗地说就是无需声明变量的类型,举个栗子:
c/c++中,我们在使用一个变量前需要先声明这个变量
int a;
a=1;
而在Python中,我们无需声明,即:
a=1
我们没有声明这个变量的类型,也就是说这个变量可以储存其他类型的数据
a=1.0
a='Hello world!'
附带一提,Python中的字符串可以用" "
或者' '
(单引号)
此外还有多行字符串,用''' '''
,例:
a='''Hello
world
!'''
则输出a会显示:
Hello
world
!
Python提供了list(列表)和tuple(元组)
list可以理解为c/c++中的数组:
b=[0,1,2,3]
声明一个空的list则为:
b=[]
list提供了以下操作,
b.append(a) #向list末尾加入元素a
b.pop() #删除list的最后一个元素
b.pop(i) #删除list下标为i的元素
b.insert(i,a) #向list的第i个位置插入元素a
我们可以直接通过下标访问或修改list中的元素:
b[0]=0
a=b[1]+233
通过逻辑推理,我们可知下标为-1时,对应的元素为list末尾的元素,同理可知,下标为-2时,对应倒数第二个元素(读者自证不难):
b=[0,1,2,3,4]
print(b[-1])
print(b[-2])
4
3
还记得之前提到的么,Python是动态类型语言,我们并没有声明数组的类型,也就是说数组内的元素的类型可以不一致,即:
b=["Hello world!",1, [2,3] , 4.5 ]
至于tuple元组,可以理解为一个无法改变的list,对其中的元素进行修改操作是不合法的:
c=(0,1,2,3) #注意初始化时用小括号
输入和输出
上帝说,学习一门语言的时候,要做的第一件事就是输出一行“Hello world!( ´・ω・`)”
于是就有了print()
print("Hello world!")
上帝说,我的颜文字呢(。•ˇ‸ˇ•。)?
于是就有了用来隔开多个输出内容的符号,
print("Hello world!","( ´・ω・`)")
上帝心满意足地离开了,并扔给你了Problem a+b:
输入两个整数a和b,输出他们的和
解:显然,我们有input()帮助我们完成输入
a=input()
b=input()
print(a+b)
输入1 1
,我们得到:
11
…
喵喵喵?
先不要去找体育老师,直觉告诉我们,我们的a和b储存的数据不是整型,而是字符串,也就是说我们输出的不是整型11
,而是字符串"11"
经过逻辑推理我们得知,input()返回的值默认为字符串
但我们想要它返回整型怎么办?我们可以将其转化为整形:
a=int(input())
b=int(input())
print(a+b)
输入1 1
,输出2
但转念一想,这个程序似乎不够人性化,我们应该提示用户应该怎么做
a=int(input("请输入a:"))
b=int(input("请输入b:"))
print(a+b)
input()会在输入前显示括号内的内容,若括号内为空则不显示
开开心心地点击编译,然后编译器也高高兴兴地告诉我们:
SyntaxError: Non-UTF-8 code starting with '\xc7' in file but no encoding declared
简单地说:“劳资不认识中文啊魂淡!”
Python默认使用Ascii码编译,如果要让它学会中文,我们就需要让它采用utf-8码
在开头加上:
#coding=utf-8
这样我们就告诉编译器:“现在你tm会中文了!”
循环(Loop)
现在让我们把之前的问题变得有趣一些
输入n个整数,输出他们的和
不管这个问题是不是真的变得有趣了一些,但是整数的数量并不是固定的,也就是说我们没法用a+b的方法去解决这一问题,这需要我们使用“循环”
n=int(input())
ans=0
while n>=1: #注意这里有个冒号
ans+=int(input())
n-=1
print(ans)
Python中使用缩进来确定语句块(而c/c++中使用{ }
),对于这个while循环而言,ans+=int(input())
和n-=1
都是它的循环体。*注意:多余或缺少的缩进都会导致编译器错误地识别语句块,造成编译失败或者运行结果错误。(买书时记得买游标卡尺)
此外Python还有for…in…循环,直接举个栗子:
b=["P","y","t","h","o","n"]
for a in b:
print(a)
运行结果为:
P
y
t
h
o
n
易知for a in b为:将b中的元素依次赋值给a然后执行循环
则那个有趣的问题可以用for…in…循环解决:
n=int(input())
b=[]
ans=0
while n>=1:
b.append( int(input()) )
n-=1
for a in b:
ans+=a
print(ans)
…呃,手滑了
n=int(input())
ans=0
for a in range(n):
ans+=int(input())
print(ans)
其中range(n)会生成一个以0为首项1为公差的等差数列的前n项,说人话就是生成0~n-1的整数数列
条件语句
我的女朋友让我出去买一斤苹果,如果看到卖木瓜的,就买三个
让我们用程序员的角度去理解这句话:
if SeePapaya:
Apple=3
else:
Apple='一斤'
出门前女朋友又补充:搓衣板坏了,如果看到卖搓衣板的,就买一个
同样的,我们有:
if SeePapaya:
Apple=3
elif SeeWashboard:
Apple=1
else:
Apple='一斤'
由于我只看到了卖搓衣板的,于是我就带了一个苹果回家,然后把键盘跪坏了
然而程序员并没有女朋友
小结
以上知识点其实都很简单,半小时以内即可掌握,但最好要多写一些代码,习惯一下Python的风格,比如if、while等语句的冒号
鄙人用的是Eclipse+PyDev,主要是写Java是用的Eclipse,就懒得装别的了hhh(废人)
在有c/c++基础的前提下学Python还是很快的,当然,写博客的速度是恒定不变的,并且指不定哪天就弃坑了
在期中考之前抓紧把这个坑填了吧(笑)