通常情况下,计算机语言都是从上到下,一行接着一行的执行。
然而,对于复杂的情绪,我们可能需要让某些行被跳过,即不执行;而另一些行需要不断的重复,直到满足我们的需求之后再向下继续执行;还有时候,我们需要程序执行到某一位置就停住,不再执行后面的内容。
这就需要用到控制流(Control Flow),控制流包括if语句,while循环和for循环。
通常情况下,计算机语言都是从上到下,一行接着一行的执行。
然而,对于复杂的情绪,我们可能需要让某些行被跳过,即不执行;而另一些行需要不断的重复,直到满足我们的需求之后再向下继续执行;还有时候,我们需要程序执行到某一位置就停住,不再执行后面的内容。
这就需要用到控制流(Control Flow),控制流包括if语句,while循环和for循环。
python的字符型、整型和浮点型已经介绍过了。下面就是四大重要类型之一的布尔值。
布尔值实际上只有两个,真和假。真用True来表示,假用`False`表示,注意大小写。
只要有比较,就会得到布尔值。例如:
"Tim"=="Tom" # 判断两个字符串是否相等
10>3
20<=1
大于和小于很好理解,需要注意的是如果要判断等式两边是否相等,需要用两个等于号(==)。这是因为一个等于号已经被我们使用了,作为赋值符号,把右边的内容赋值给左边,所以,只能使用两个等号来判断是否相等。
布尔值常用在判断语句中:
name = input('What is your name? ')
if name == 'Tim':
print('你好,Tim!')
如果你输入的内容刚好是`Tim`,则可以看到你好,Tim!否则你什么都看不到。
数值型,除了整数以外,最常用的就是浮点数,浮点数对应的数学用语是小数。
当一个整数除以一个整数的时候,python会自动将结果转化成浮点数。例如:
3/3
结果为:
1.0看到了吗,结果不是1,而是1.0。
如果在计算中,直接使用了小数,那么结果也会自动转化为浮点数。
1+3.14
所得结果有点怪,但是大概是准确的。
4.140000000000001我们可以用`type()`函数获得一个值的类型:
type(1)
type(1+3.14)
结果为:
<class 'int'>
<class 'float'>字符串在任何编程语言中都是非常重要的存在。段落、姓名等各类信息都需要用到字符串。
很明显,字符串是由字符组成的, 因此,我们也可以将字符串进行拆分,提取想要的部分,这就用到了索引。
我们还用Tim举例,如果Tim是一个字符串,那么它的索引(可以理解成编号)是0,1,2。这很像我们用数字表示楼层,唯一不同的是,楼层从1开始,而字符串从0开始。
T i m
0 1 2了解所索引的概念,接下就是运用。
运用的方法是在方括号内写上索引编号。例如:
x = "Tim"
y = x[0] + x[0] +x[2]
print(y)
得到的结果是:
TTm当字符串很长的时候,我们想提取最后一个字符串,数到最后一个编号明显是一个愚蠢的办法。Python给我们提供了反向索引,可以解决这个问题。
P n e u m o n
-7 -6 -5 -4 -3 -2 -1需要注意的是,最后一位是-1,不是0。这是为了和正向相区别,毕竟-0没有什么意义。
x = "Tim"
y = x[-1]
print(y)
结果为:
m现在,画一个条形图已经非常方便,直接用Excel就可以。但是,再代码时代,想要做条形图只能依靠字符和长度进行。
现在,我们就来领略一下,代码时代,条形图如何实现。
条形图,用字符串×整数表示。例如:
a = "#" * 100
b = "#" * 30
print(a)
print(b)
结果如下:
####################################################################################################
##############################这个代码的意思是,a变量中,把#号重复100次;b变量中,#重复30次。
很明显,重复100次有点过于长了。那么,我们可以按照比例缩小。标准化到最长25个字符。
a = "#" * int(100/100*25)
b = "#" * int(30/100*25)
print(a)
print(b)
得到结果:
#########################
#######看似简单,实际上最编程中非常常用,我们可以用来表示进度条,查看程序运行进度。
python最长用的值是字符串(string)类型,字符串可以写入姓名、地址、籍贯、简介等。而整型值是只能是整数。通常,计算机语言会用引号表示字符串,没有引号表示数值。
我们输入一下Tom的基本信息,用到输入函数:
yourName = input("请输入姓名\n")
yourHeight = input("请输入身高(cm)\n")
yourWeight = yourHeight - 105
print(f"{yourName}, 你的身高是{yourHeight}cm, 你的标准体重是{yourWeight}kg. ")
据说,身高-105就是标准体重,我们不探讨这个是否科学,只是作为一个例子来尝试。很明显,运行到第三行的时候,系统会报错。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'str' and 'int'错误的意思是不支持的操作类型,之前我们说过,`input()`函数的返回值是字符串,而python不允许字符串与数字进行加减乘除运算。因此,我们需要将字符串转换成数字再进行运算。将上面的函数修改为:
yourName = input("请输入姓名\n")
yourHeight = input("请输入身高\n")
yourWeight = int(yourHeight) - 105
print(f"{yourName}, 你的身高是{yourHeight}, 你的标准体重是{yourWeight}kg. ")
然后就可以得到正确的结果:
请输入姓名
Tim
请输入身高
171
Tim, 你的身高是171cm, 你的标准体重是66kg.听说,一个好的编程语言,不仅要运行效率高,还要能和人实时对话。
试试`input()`函数:
input("What is your name?\n")
如果你在下一行输入Tim,那么就会输出:
'Tim'当然,我们可以把这个输入值放入一个变量,实现交互,比如:
yourName = input("What is your name?\n")
print(f"Hello {yourName}.")
输入Tim以后,可以得到下面的结果。
Hello Tim.更多的创意,可以自己试试,把最基本的输入融会贯通。
需要注意的是,输入的内容都是字符串哟。即便你输入的是数字,也一样会当成字符串。
如果我们要写一些内容来介绍Tom,可能会写以下内容:
print("My name is Tom.")
print("Tom has a lot of friends.")
print("Tom loves playing basketball.")
print("Tom's grandmother is 50 years old.")
看起来只有4行,别忘了,这只是一个例子,实际情况可能是需要写几十行上百行。最关键的一点是,每一条语句都有Tom这个关键字。这时,老板跟你说,之前整错了一个地方,人名不是Tom而是Tim。那么你就需要把上面的每一行的Tom都依次改成Tim。这真是一个可怕的工作,你不使用替换功能,会耗费很多时间。
那么,应该怎么处理这样的情况呢?
这里就用到了编程中的变量和输出格式化。
变量是指一些关键的、重复的东西,而其他的一些内容是不变的,可以理解为模板。很多工作,我们只需要替换变量而无需重写模板。
因此,在python中,我们将上面的代码重新写成这样。
character="Tim"
print(f"My name is {character}.")
print(f"{character} has a lot of friends.")
print(f"{character} loves playing basketball.")
print(f"{character}'s grandmother is 50 years old.")
看看输出的结果是不是一样呢,只是变换了姓名?结果如下:
My name is Tim.
Tim has a lot of friends.
Tim loves playing basketball.
Tim's grandmother is 50 years old.这里面的f表示的是格式化输出内容。`{character}`表示变量,在双引号内,需要用花括号(大括号)括起来。
接下来,我们修改Tim为Zoc,只需要修改第一行:
character="Zoc"
print(f"My name is {character}.")
print(f"{character} has a lot of friends.")
print(f"{character} loves playing basketball.")
print(f"{character}'s grandmother is 50 years old.")
结果就会变为:
My name is Zoc.
Zoc has a lot of friends.
Zoc loves playing basketball.
Zoc's grandmother is 50 years old.如果字符串很长很长,一行根本放不下,或者为了美观,需要把意群一致的内容放在同一行,从而出现多行内容的情况。比如:
print('this
is
a
website')
显然单引号和双引号都不能正确执行这个语句。
File "D:\code\python\print.py", line 1
print('this
^
SyntaxError: unterminated string literal (detected at line 1)要解决这个问题,那么就用到了神奇的三引号,将上面的语句修改为:
print('''this
is
a
website''')
这回的结果是这样的:
this
is
a
websiteprint()是python的标准输出,可以用下面的例子使用:
print('This is a interesting website.')
你可以在visual studio code,中新建一个.py文件,然后把内容复制进去,若安装了python插件,可以按F5键运行,可以得到结果。
This is a interesting website.如果括号里面的是字符串,那么可以放在双引号或者单引号之间。如果仅仅是放入一个数字,那么无需使用任何引号。
默认情况下,print()函数会在末尾加入一个换行符,如果想去掉这个换行符,可以使用:
print("This", end=' ')
print('is', end=' ')
print('a', end=' ')
print('interesting', end=' ')
print('website.')
比较一下用下面的结果是什么:
print("This")
print('is')
print('a')
print('interesting')
print('website.')