python学习笔记——for循环

python基础25ma.cn 发表了文章 • 0 个评论 • 824 次浏览 • 2017-06-05 12:03 • 来自相关话题

大家对while循环已经有点熟悉了吧?今天我们来讲另一种循环语句:


for ... in ...
?
同while一样,for循环可以用来重复做一件事情。在某些场景下,它比while更好用。
比如之前的一道习题:输出1到100。
我们用while来做,需要有一 查看全部
大家对while循环已经有点熟悉了吧?今天我们来讲另一种循环语句:


for ... in ...
?
同while一样,for循环可以用来重复做一件事情。在某些场景下,它比while更好用。
比如之前的一道习题:输出1到100。
我们用while来做,需要有一个值来记录已经做了多少次,还需要在while后面判断是不是到了100。
如果用for循环,则可以这么写:


for i in range(1, 101):
print i

解释一下,range(1, 101)表示从1开始,到101为止(不包括101),取其中所有的整数。
for i in range(1, 101)就是说,把这些数,依次赋值给变量i。
相当于一个一个循环过去,第一次i = 1,第二次i = 2,……,直到i = 100。
当i = 101时跳出循环。
所以,当你需要一个循环10次的循环,你就只需要写:


for i in range(1, 11)


或者


for i in range(0, 10)

区别在于前者i是从1到10,后者i是从0到9。当然,你也可以不用i这个变量名。
比如一个循环n次的循环:


for count in range(0, n)
for循环的本质是对一个序列中的元素进行递归。什么是序列,以后再说。先记住这个最简单的形式:


for i in range(a, b)


从a循环至b-1


现在,你可以用for循环来打印0-9的随机数。、

for1.png


for2.png

?

python学习笔记—逻辑判断

python基础25ma.cn 发表了文章 • 0 个评论 • 817 次浏览 • 2017-06-05 11:36 • 来自相关话题

之前粗略地提到bool类型的变量,又说到if和while的判断条件。有些同学反馈说没怎么理解,为什么一会儿是bingo=False,一会又是bingo==False,一会儿是while在条件为True的时候执行,一会儿又是while在bingo==False的时候执行。别急,你听 查看全部
之前粗略地提到bool类型的变量,又说到if和while的判断条件。有些同学反馈说没怎么理解,为什么一会儿是bingo=False,一会又是bingo==False,一会儿是while在条件为True的时候执行,一会儿又是while在bingo==False的时候执行。别急,你听我说。
?
首先,要理解,一个逻辑表达式,其实最终是代表了一个bool类型的结果,比如:

1 < 3
这个就像当于是一个True的值

2 == 3
这个就是False


把它们作为判断条件放到if或者while的后面,就是根据他们的值来决定要不要执行。


同样的栗子再来几颗:

a = 1
print a>3 #False ?
print a==2-1 #True ?
b = 3
print a+b==2+2 #True


比较容易搞混的,是bool变量的值和一个逻辑表达式的值,比如:

a = False
print a #False
print a==False #True


虽然a本身的值是False,但是a==False这个表达式的值是True。(说人话!)“a”是错的,但“a是错的”这句话是对的。
?
回到上面那几个概念:

bingo=False
把bingo设为一个值为False的变量

bingo==False
判断bingo的值是不是False,如果是,那么这句话就是True


while在判断条件条件为True时执行循环,所以当bingo==False时,条件为True,循环是要执行的。


晕了没?谁刚学谁都晕。不晕的属于骨骼惊奇百年一遇的编程奇才,还不赶紧转行做程序员!


逻辑这东西是初学编程的一大坑,我们后面还要在这个坑里挣扎很久。
?
留个习题:a = True
b = not a #不记得not请回复6想想下面这些逻辑运算的结果,然后用print看看你想的对不对:bnot ba == ba != ba and ba or b1<2 and b==True

python学习笔记——变量(二)

python基础25ma.cn 发表了文章 • 0 个评论 • 833 次浏览 • 2017-06-02 10:33 • 来自相关话题

变量这东西,我们已经用过。有了变量,就可以存储和计算数据。今天来讲点变量的细节。


#==== 变量命名规则 ====#
变量名不是你想起就能起的:


第一个字符必须是字母或者下划线“_”

剩下的部分可以是字母、下划线“_” 查看全部
变量这东西,我们已经用过。有了变量,就可以存储和计算数据。今天来讲点变量的细节。


#==== 变量命名规则 ====#
变量名不是你想起就能起的:


第一个字符必须是字母或者下划线“_”

剩下的部分可以是字母、下划线“_”或数字(0-9)

变量名称是对大小写敏感的,myname和myName不是同一个变量。
几个有效的栗子:
i
__my_name
name_23
a1b2_c3


几个坏掉的栗子(想一下为什么不对):
2things
this is spaced out
my-name
?
#==== 变量的运算 ====#


我们前面有用到变量来存储数据: num = 10
answer = input()


也有用到变量来比较大小: answer < num


除此之外,变量还可以进行数学运算: a = 5 b = a + 3 c = a + b


python中运算的顺序是,先把“=”右边的结果算出了,再赋值给左边的变量。下面这个例子: a = 5 a = a + 3 print a
你会看到,输出了8,因为先计算出了右边的值为8,再把8赋给左边的a。
通过这种方法,可以实现累加求和的效果。它还有个简化的写法:
a += 3这个和a = a + 3是一样的。
?
于是,利用变量、循环、累加,可以写一个程序,来完成传说中高斯大牛在小时候做过的题:1+2+3+...+100=?从1加到100等于多少?


提示:你可以用一个变量记录现在加到几了,再用一个变量记录加出来的结果,通过while来判断是不是加到100了。

python学习笔记——random(生成随机数)

python基础25ma.cn 发表了文章 • 0 个评论 • 667 次浏览 • 2017-06-01 10:04 • 来自相关话题

之前我们用了很多次的print和input方法,它们的作用是实现控制台的输入和输出。除此之外,python还提供了很多模块,用来实现各种常见的功能,比如时间处理、科学计算、网络请求、随机数等等等等。今天我就来说说,如何用py 查看全部
之前我们用了很多次的print和input方法,它们的作用是实现控制台的输入和输出。除此之外,python还提供了很多模块,用来实现各种常见的功能,比如时间处理、科学计算、网络请求、随机数等等等等。今天我就来说说,如何用python自带的随机数模块,给我们的小游戏增加不确定性。
?
?
引入模块的方法:


from 模块名 import 方法名


看不懂没关系,这东西以后我们会反复用到。今天你只要记住,你想要产生一个随机的整数,就在程序的最开头写上:


from random import randint


之后你就可以用randint来产生随机数了。


还记得input后面的()吗,我们使用randint的时候后面也要有()。而且,还要在括号中提供两个数字,先后分别是产生随机整数范围的下限和上限。例如:


randint(5, 10)


这样将会产生一个5到10之间(包括5和10)的随机整数。


放到我们的小游戏里,用
answer = randint(1, 100)
替代
answer = 10


程序在运行时候,会产生一个1到100的随机整数,存在answer里,我们也不知道是多少,真的全靠猜了。
?
微信图片_20170601100229.jpg


?
?
好了,觉得还有点意思么?我们终于一步步把这个弱智小游戏给做出来了,有没有一丁点的成就感呢?


如果你对其中的某些细节还不是很理解,恭喜你,你已经开始入门了。相信你会带着一颗追求真相的心,在编程这条路上不断走下去。


我们的课程,也才刚刚开始。

python学习笔记——while循环

python基础25ma.cn 发表了文章 • 0 个评论 • 580 次浏览 • 2017-06-01 10:01 • 来自相关话题

先介绍一个新东西:注释。
python里,以“#”开头的文字都不会被认为是可执行的代码。
print "25ma.cn"

print "25ma.cn" #输出一行字
是同样的效果。但后者可以帮助开发者更好地理解代码。

在接下来的课程中,我会 查看全部
先介绍一个新东西:注释。
python里,以“#”开头的文字都不会被认为是可执行的代码。
print "25ma.cn"

print "25ma.cn" #输出一行字
是同样的效果。但后者可以帮助开发者更好地理解代码。

在接下来的课程中,我会经常用注释来解释代码。
用if改进完我们的小游戏后,功能已经基本实现了。很多同学做完后纷纷表示,每次只能猜一次,完了之后又得重新run,感觉好麻烦。能不能有办法让玩家一直猜,直到猜中为止?答案很显然,如果这种小问题都解决不了,那python可就弱爆了。


最简单的解决方法就是while。


同if一样,while也是一种控制流语句,另外它也被称作循环语句。继续来看渣画质手绘流程图:
?
微信图片_20170601095738.jpg


程序执行到while处,“当”条件为True时,就去执行while内部的代码,“当”条件为False时,就跳过。

语法为:

while 条件:
循环执行的语句


同if一样,注意冒号,注意缩进。


今天的栗子:


a = 1 #先a设为1
while a != 0: #a不等于0就一直做
print "please input"
a = input()
print "over"

想想怎么用while改进小游戏?有多种写法,大家自己思考下,我不多做说明了。下图给出一种方法。
?
?
微信图片_20170601095755.jpg


?
注意,这里出现了两层缩进,要保持每层缩进的空格数相同。
到此为止,小游戏已经基本成型了。不过好像还差一点:每次自己都知道答案,这玩起来有神马意思。
明天来讲,怎么让你不知道电脑的答案。

类似这种的vim配置文件

Vim25ma.cn 回复了问题 • 2 人关注 • 1 个回复 • 622 次浏览 • 2017-06-01 09:35 • 来自相关话题

python学习笔记—if

python基础25ma.cn 发表了文章 • 0 个评论 • 540 次浏览 • 2017-05-31 10:47 • 来自相关话题

我们已经能让判断我们输入的值了,但这程序还是有点呆,不过怎样都要把话说三遍。因为到目前为止,我们的程序都是按照顺序从上到下一行接一行地执行。有同学发来问题了:怎么能让它根据我们输入的结果来选择执行呢? 查看全部
我们已经能让判断我们输入的值了,但这程序还是有点呆,不过怎样都要把话说三遍。因为到目前为止,我们的程序都是按照顺序从上到下一行接一行地执行。有同学发来问题了:怎么能让它根据我们输入的结果来选择执行呢?答案就是 – if
来看一张图(纯手绘,渣画质)


解释一下,程序顺序往下执行遇到if语句的时候,会去判断它所带条件的真假。

“如果”为True,就会去执行接下来的内容。“如果”为False,就跳过。


语法为:

if 条件:
选择执行的语句

特别说明:条件后面的冒号不能少,同样必须是英文字符。
特别特别说明:if内部的语句需要有一个统一的缩进,一般用4个空格。python用这种方法替代了其他很多编程语言中的{}。你也可以选择1/2/3...个空格或者按一下tab键,但必须整个文件中都统一起来。千万不可以tab和空格混用,不然就会出现各种莫名其妙的错误。所以建议都直接用4个空格。


上栗子:

0531.png



thisIsLove = input()
if thisIsLove:
print "再转身就该勇敢留下来"


试试看?输入True,就会得到回答。输入False,什么也没有。(如果你那里输出中文有问题,请自行改成英文)
?
所以,我们的游戏可以这样改写:


num = 10
print 'Guess what I think?'
answer = input()
if answer<num:
print 'too small!'

if answer>num:
print 'too big!'
if answer==num:
print 'BINGO!'



if在编程语言中被称为“控制流语句”,用来控制程序的执行顺序。还有其他的控制流语句,后面我们会用到。
?
?
?
重新发一下代码

thisIsLove = input()
if thisIsLove:
print "25ma.cn是大数据免费的学习交流平台"

========

num = 10
print 'Guess what I think?'
answer = input()
if answer<num:
print 'too small!'
if answer>num:
print 'too big!'
if answer==num:
print 'BINGO!'

python学习笔记—bool

python基础25ma.cn 发表了文章 • 0 个评论 • 559 次浏览 • 2017-05-31 10:42 • 来自相关话题

昨天说到了python中的几个基本类型,字符串、整数、浮点数都还算好理解,关于剩下的那个bool(布尔值)我要稍微多说几句。


逻辑判断在编程中是非常重要的。大量的复杂程序在根本上都是建立在“真”与“假”的基本逻辑 查看全部
昨天说到了python中的几个基本类型,字符串、整数、浮点数都还算好理解,关于剩下的那个bool(布尔值)我要稍微多说几句。


逻辑判断在编程中是非常重要的。大量的复杂程序在根本上都是建立在“真”与“假”的基本逻辑之上。而bool所表示的就是这种最单纯最本质的True / Flase,真与假,是与非。
?
来看下面的例子: ?


a = 1 < 3
print a
b = 1
c = 3
print b > c


通过用“>”“<”来比较两个数值,我们就得到了一个bool值。这个bool值的真假取决于比较的结果。


“>”“<”在编程语言中被成为逻辑运算符,常用的逻辑运算符包括:


>:大于
<:小于
>=:大于等于
<=:小于等于
==:等于。比较两个值是否相等。之所以用两个等号,是为了和变量赋值区分开来。
!=:不等与
not:逻辑“非”。如果x为True,则not x为False
and:逻辑“与”。如果x为True,且y为True,则x and y为True
or:逻辑“或”。如果x、y中至少有一个为True,则x or y为True


关于bool值和逻辑运算其实远不止这些,但现在我们暂时不去考虑那么多,以免被绕得找不到北。最基本的大于、小于、等于已经够我们先用一用的了。
?
试试把bool加到我们的小游戏里:


num = 10
print 'Guess what I think?'
answer = input()


result = answer<num
print 'too small?'
print result


result = answer>num
print 'too big?'
print result


result = answer==num
print 'equal?'
print result


代码比之前稍微多了一点,解释一下。
第一段代码:先创建一个值为10的变量num,输出一句提示,然后再输入一个值给变量answer。
第二段代码:计算answer<num的结果,记录在result里,输出提示,再输出结果。
第三段、第四段都与第二段类似,只是比较的内容不一样。


看看结果是不是跟你预期的一致?虽然看上去还是有点傻,但是离目标又进了一步。


现在数数你手上的工具:输入、输出,用来记录数值的变量,还有可以比较数值大小的逻辑运算。用它们在你的python里折腾一番吧。

python学习笔记—变量

python基础25ma.cn 发表了文章 • 0 个评论 • 478 次浏览 • 2017-05-26 09:32 • 来自相关话题

变量,望文生义,就是变化的量。python里创建一个变量的方法很简单,给它起个名字,然后给它一个值。举起几个栗子:


name = '25ma.cn'
myVar = 123
price = 5.99
visible = True


“=”的作用是把右边的值赋予给左边的变量。
?

这里说一下 查看全部
变量,望文生义,就是变化的量。python里创建一个变量的方法很简单,给它起个名字,然后给它一个值。举起几个栗子:


name = '25ma.cn'
myVar = 123
price = 5.99
visible = True


“=”的作用是把右边的值赋予给左边的变量。
?

这里说一下另外一个概念,叫做“数据类型”,上面4颗栗子分别代表了python中较常见的四种基本类型:




字符串 - 表示一串字符,需要用''或""引起来

整数

浮点数 - 就是小数

bool(布尔) - 这个比较特殊,是用来表示逻辑“是”“非”的一种类型,它只有两个值,True和False。(注意这里没有引号,有了引号就变成字符串了)


再次用到我们熟悉的print。这次,我们升级了,要用print输出一个“变量”:


name = ‘25ma.cn’
print name

bl.png



看到结果了吗?没有输出“name”,也没有报错,而是输出了'25ma.cn'。现在是不是能想明白一些,为什么之前print一段文字没加引号就会报错,而print一个数字就没有问题呢?


它叫变量,那就是能变的。所以在一次“赋值”操作之后,还可以继续给它赋予新的值,而且可以是不同类型的值。


a = 123
print a
a = 'hi'
print a


“=”的右边还可以更复杂一点,比如是一个计算出的值:


value = 3 * 4
print value
value = 2 < 5
print value


甚至,也可以是input():


name = input()
print name
?
于是,我们又可以进化一下我们的小游戏了。把上次写的内容稍微改一下,加上变量:?

print "Who do you think I am?"
you = input()
print "Oh, yes! I am a"
print you

看来程序已经知道我们的输入了。接下来,就要让它学会对不同的答案做出判断。这个我们留到下次再说。

python学习笔记—输入

python基础25ma.cn 发表了文章 • 0 个评论 • 458 次浏览 • 2017-05-26 09:19 • 来自相关话题

前print了那么多,都是程序在向屏幕“输出”。那有来得有往,有借得有还,有吃。。。咳咳!那啥,我们得有向程序“输入”信息的办法,才能和程序对话,进行所谓的“人机交互”。

python有一个接收命令行下输入的方法:
i 查看全部
前print了那么多,都是程序在向屏幕“输出”。那有来得有往,有借得有还,有吃。。。咳咳!那啥,我们得有向程序“输入”信息的办法,才能和程序对话,进行所谓的“人机交互”。

python有一个接收命令行下输入的方法:
input()
注意,和print不同的是,这次我们必须得加上()了,而且得是英文字符的括号。
好了,终于可以搬出那个弱智小游戏了,耶!游戏里我们需要跟程序一问一答,所以我们先把话给说上。


打开我们的python编辑器,不管是IDLE,在线编辑器,还是其他的IDE。在代码编辑器中输入下面几句代码:


print "Who do you think I am?"
input()
print "Oh, yes!"


然后,Run!(Forrest Run!)你会在命令行中看到,程序输出了第一句之后就停住了,这是input在等待你的输入。


输入你的回答,回车。你会看到程序的回答。注意!引号!!又是引号!!!和print一样,如果你输的是一串文字,要用引号''或者""引起来,如果是数字则不用。


(插一句,python还有一个输入的方法:raw_input(),它把所有的输入都直接当作一串字符,于是就可以不用加引号,有兴趣的同学可以试一试,体会一下两者的不同。关于这个令人纠结的引号,我们以后会再讨论它。)

QQ截图20170526091816.png



看上去不错哦,似乎就这么对上话了。是不是觉得离小游戏的完成迈进了一大步?可是大家发现没有,即使你说"Idiot!",程序仍然会淡定地回答"Oh, yes!"因为它左耳进右耳出,根本就没听进去我们到底说了啥。那怎么才能让它认真听话呢?啪!且听下回分解。
?
?
?
?
?
?
?
?
?
回顾一下我们之前几节课。我们到现在一共提到了三种可以运行print的方式:

1. 命令行,包括Win下的控制台(CMD)和Mac下的终端(Terminal)。
它可以帮我们确认自己电脑上的python是不是正常。但是这种方法很难帮我们实现写一个完整小程序的目标。

2. IDE,包括python自带的IDLE和其他第三方的IDE。
不知道大家是不是都顺利搞定,并且能顺利保存并打开py文件了呢?以后我们课程里的内容,你都可以在这里面进行。

3. 在线编辑器,compileonline或者pythonfiddle。
他们同样包括代码编辑器(写代码的地方)和控制台(输出结果的地方)两部分。所以我们在本地IDE里的操作都可以在其中实现。只不过保存文件会有些复杂,compileonline是点击download files打包下载,pythonfiddle需要注册一下。当然,你也可以直接把你写好的代码复制下来,保存在本地,下次再粘贴上去接着写。