python学习笔记——字符串格式化

25ma.cn 发表了文章 • 0 个评论 • 1086 次浏览 • 2017-06-12 09:37 • 来自相关话题

我们在输出字符串的时候,如果想对输出的内容进行一些整理,比如把几段字符拼接起来,或者把一段字符插入到另一段字符中间,就需要用到字符串的格式化输出。
?
先从简单的开始,如果你想把两段字符连起来输出
str1 = 'www 查看全部
我们在输出字符串的时候,如果想对输出的内容进行一些整理,比如把几段字符拼接起来,或者把一段字符插入到另一段字符中间,就需要用到字符串的格式化输出。
?
先从简单的开始,如果你想把两段字符连起来输出
str1 = 'www.'
str2 = '25ma.cn'

你可以
print str1 + str2

QQ截图20170612093612.png



或者还可以把字符变量一个字符串相加
print 'very' + str1
print str1 + ' and ' + str2
?
但如果你想要把一个数字加到文字后面输出,比如这样
num = 18
print 'My age is' + num
程序就会报错。因为字符和数字不能直接用+相加。


一种解决方法是,用str()把数字转换成字符串
print 'My age is' + str(18)

num = 18
print 'My age is' + str(num)
?
?
还有一种方法,就是用%对字符串进行格式化
num = 18
print 'My age is %d' % num
输出的时候,%d会被%后面的值替换。输出
My age is 18


这里,%d只能用来替换整数。如果你想格式化的数值是小数,要用%f
print ‘Price is %f’ % 4.99
输出
Price is 4.990000


如果你想保留两位小数,需要在f前面加上条件:%.2f
print ‘Price is %.2f’ % 4.99
输出
Price is 4.99
?
另外,可以用%s来替换一段字符串
name = 'Crossin'
print '%s is a good teacher.' % name
输出
Crossin is a good teacher.


或者
print 'Today is %s.' % 'Friday'?
输出
Today is Friday.


注意区分:有引号的表示一段字符,没有引号的就是一个变量,这个变量可能是字符,也可能是数字,但一定要和%所表示的格式相一致。
?
?
现在,试试看用字符串格式化改进一下之前你写的小游戏。比如你输了一个数字72,程序会回答你
72 is too small.
或者
Bingo, 72 is the right answer!

python学习笔记——字符串

25ma.cn 发表了文章 • 0 个评论 • 1119 次浏览 • 2017-06-12 09:27 • 来自相关话题

字符串就是一组字符的序列(序列!又见序列!还记得我说过,range就是产生一组整数序列。今天仍然不去细说它。),它一向是编程中的常见问题。之前我们用过它,以后我们还要不停地用它。
?
python中最常用的字符串表示方 查看全部
字符串就是一组字符的序列(序列!又见序列!还记得我说过,range就是产生一组整数序列。今天仍然不去细说它。),它一向是编程中的常见问题。之前我们用过它,以后我们还要不停地用它。
?
python中最常用的字符串表示方式是单引号(‘’)和双引号("")。我还是要再说:一定得是英文字符!

'string'和“string”的效果是一样的。


可以直接输出一个字符串print ‘25ma.cn’


也可以用一个变量来保存字符串,然后输出str = ‘bad’print str


如果你想表示一段带有英文单引号或者双引号的文字,那么表示这个字符串的引号就要与内容区别开。


内容带有单引号,就用双引号表示"It's good"
反之亦然
‘You are a "BAD" man’
?
python中还有一种表示字符串的方法:三个引号(‘’‘)或者(""")


在三个引号中,你可以方便地使用单引号和双引号,并且可以直接换行
'''
"What's your name?" I asked.
"I'm Han Meimei."
'''
?
还有一种在字符串中表示引号的方法,就是用\,可以不受引号的限制


\'表示单引号,\"表示双引号
‘I\'m a \"good\" teacher’


\被称作转译字符,除了用来表示引号,还有比如用
\\表示字符串中的\
\n表示字符串中的换行


\还有个用处,就是用来在代码中换行,而不影响输出的结果:
"this is the\
same line"


这个字符串仍然只有一行,和
"this is thesame line"
是一样的,只是在代码中换了行。当你要写一行很长的代码时,这个会派上用场。
?
作业时间】用print输出以下文字:


1.
He said, "I'm yours!"


2.
\\_v_//


3.
Stay hungry,
stay foolish.
-- Steve Jobs


4.
*
***
*****
***
*

python学习笔记——for循环

25ma.cn 发表了文章 • 0 个评论 • 910 次浏览 • 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学习笔记—逻辑判断

25ma.cn 发表了文章 • 0 个评论 • 900 次浏览 • 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学习笔记——变量(二)

25ma.cn 发表了文章 • 0 个评论 • 912 次浏览 • 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(生成随机数)

25ma.cn 发表了文章 • 0 个评论 • 750 次浏览 • 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循环

25ma.cn 发表了文章 • 0 个评论 • 653 次浏览 • 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


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

python学习笔记—if

25ma.cn 发表了文章 • 0 个评论 • 648 次浏览 • 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

25ma.cn 发表了文章 • 0 个评论 • 625 次浏览 • 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学习笔记—变量

25ma.cn 发表了文章 • 0 个评论 • 569 次浏览 • 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

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