# if语句的控制转移
# 在nature语言中,True和False是关键字,分别代表真和假
#例程1:if语句
a = True
if a #意思是如果a是True,执行{}内的函数体
{
print("%\n","It is True")
}
a = False
if a #意思是如果a是True,执行{}内的函数体
{
print("%\n","It is True")
}
# 显然,该例a不为True,所以不会执行{}内的函数体
#例程2:if语句
a = 10
if a #意思是如果a是True,执行{}内的函数体
{
print("%\n","It is True")
}
# 凡是不等于0的数,都被定义为True(真),因此上述{}函数体得以执行
a = 0
if a #意思是如果a是True,执行{}内的函数体
{
print("%\n","It is True")
}
# 只有等于0的数字,被定义为False(假),因此上述{}函数体不会被执行
a = 0
if a #如果a是True,执行下面{}内的函数体
{
print("%\n","It is True")
}
else #除了a是True以外的情况,执行下面{}内的函数体
{
print("%\n","It is False")
}
# 本例中会输出:"It is False"。
# 因为a = 0(即,a为假),不满足第一个条件,所以不会执行第一个函数体
# else的意思是#除了a是True以外的情况,执行下面{}内的函数体
# 因此,会执行print("%\n","It is False")语句,输出:"It is False"
#例程3:if语句
a = "Hellow"
if a #不为空的字符串被翻译成True,执行{}内的函数体
{
print("%\n",a)
}
# 凡是不等于0的数,不为空的字符串,都被定义为True(真),
# 因此上述{}函数体得以执行
a = ""
if a #字符串a为空,会被翻译成False,因此下面函数体不会被执行
{
print("%\n","It is True")
}
# 只有等于0的数字、或空字符串,被定义为False(假),因此上述{}函数体不会被执行
#例程4:if语句
a = [1,2,3,4]
if a #不为空的列表被翻译成True,执行{}内的函数体
{
print("%\n",a)
}
b = {"a":1,"b":2,"c":3}
if b #不为空的字典被翻译成True,执行{}内的函数体
{
print("%\n",b)
}
# 凡是不等于0的数,不为空的字符串、列表、字典,都被定义为True(真),
# 为0的数字、为空的字符串、列表、字典,都被翻译成False(假)
b = {}
if b #b为空字典,被翻译成了False,因此{}内的函数体不被执行
{
print("%\n",b)
}
#例程5:if语句
if 3>2 #3>2是成立的,3>2这个表达式会被翻译成True,函数体将被执行
{
print("%\n","It is True!")
}
if 3>5 #3>5是不成立的,3>5表达式会被翻译成False,函数体将不被执行
{
print("%\n","It is True!")
}
a = "abc"
b = "ab"
c = a>b #字符串比较,如果a>b成立,c被赋值True,否则被赋值False
if c # a>b成立,函数体将被执行
{
print("%\n","It is True!")
}
c = "abc" > "ab" #如果a>b成立,c被赋值True,否则被赋值False
if c # a>b成立,函数体将被执行
{
print("%\n","It is True!")
}
if "abc" > "ab" # a>b成立,函数体将被执行
{
print("%\n","It is True!")
}
# 上述三个例子中,只是写法不同,效果是同样的
#例程6:if elif else
a = 5 #改变a的值,看看程序运行的不同结果
if a>5
{
print("%\n","a>5")
}
elif a == 5
{
print("%\n","a = 5")
}
else
{
print("%\n","a < 5")
}
a = 2 #改变a的值,看看程序运行的不同结果
if a>5
{
print("%\n","a > 5")
}
elif a == 5
{
print("%\n","a = 5")
}
elif a < 5 #这里没有用到else,但是运行结果相同
{
print("%\n","a < 5")
}
# 在一个if语句里面,第一个必须是if,不能是elif
# 中间可以出现多个elif语句,处理不同情况
# 最后可以用else,执行不满足上述所有条件的情况
# 也可以没有else,意味着不满足上述条件的情况,将被忽略。
#例程6:while循环
a = 1
while a <= 10
{
print("a = %\n",a)
a = a + 1
}
# 当while后面的表达式 a <= 10 成立时,该比较表达式被翻译为True,
# 函数体得以执行;当表达式不成立时,自动跳出循环体。
#例程7:while循环
a = 10
while a #当a不等于0时执行循环体,当a等于0时,退出循环体
{
print("a = %\n",a)
a = a - 1
}
# 当while后面的表达式 a不为0时,该比较表达式被翻译为True,
# 函数体得以执行;当a = 0时,自动跳出循环体。
#例程8:while循环
a = 10
while a #当a不等于0时执行循环体,当a等于0时,退出循环体
{
if a>5
{
a = a - 1 #这里直接返回到循环起点,后面的同样语句得不到执行
continue #a>5时,continue指令强迫程序返回循环起点,忽略后面程序
}
elif a == 2
{
break #当a=2时,break指令强迫程序中途退出循环
}
else # 既不满足a>5又不满足a=2时,打印a值
{
print("a = %\n",a)
}
a = a - 1 #控制循环的变量
}
# 可是使用多个continue、break来控制循环走向
#例程9:for循环(遍历列表)
list = [1,2,3,4,5]
for i in list
{
print("%\n",i) #i取值分别为列表的每一项,遍历列表
}
for i in [1,2,3,4,5] #也可以直接使用列表,效果是一样的
{
print("%\n",i) #i取值分别为列表的每一项,遍历列表
}
#例程10:for循环(遍历列表)
list = [1,2,3,4,5]
for i in list
{
print("%\n",i)
if i==3
{
break #在for循环中,遇到i=3时,将退出循环
}
}
#例程11:for循环(遍历列表)
list = [8,2,3,1,5]
for i in list
{
if i<3
{
continue #满足条件i<3时,for循环跳转到循环起点,后面不被执行
}
print("%\n",i) #不满足i<3的条件时,打印i值
}
# 本例中不小于3的项:8、3、5将被打印,小于3的项:1、2将被跳过
#例程12:for循环(遍历列表)
for i in range(0,10,1) #range(0,10,1)将返回一个列表[0,1,…9]
{
print("%\n",i)
}
# range(start,end,step)是一个内置函数,产生一个
# [start,start+step,start+2*step,…]列表,step是成员间隔
#例程13:for循环(遍历字典)
d = {"a":1,"world":"世界","c":3,"Hellow":"你好"}
for k in d.keys() #遍历字典的key值
{
print("%\n",k)
}
# d.keys()将返回一个由字典key值组成的列表,然后for循环遍历整个列表
#例程14:for循环(遍历字典)
d = {"a":1,"world":"世界","c":3,"Hellow":"你好"}
for v in d.values() #遍历字典的value值
{
print("%\n",v)
}
# d.values()将返回一个由字典的value组成的列表,for循环遍历整个列表
#例程15:for循环(遍历字典)
d = {"a":1,"world":"世界","c":3,"Hellow":"你好"}
for k,v in d.items() #遍历字典的value值
{
print("% %\n",k,v)
}
# d.items()将返回一个由字典的value组成的列表,for循环遍历整个列表
#例程16:while和for循环选择
# while和for都可以执行循环操作,那么,两者之间又有什么区别呢?
# for循环需要先建立一个列表,然后,遍历列表实现循环,看起来比较直观,不
# 需要在循环体内设置循环控制变量,因此,在循环次数不是很大时,常常使用;
# 但是,当循环次数很大时,必然需要创建一个很大的列表,这样不仅占用大量
# 的内存,还影响执行效率,这种情况下,建议使用while循环。
for i in range(0,200,1)
{
print("%n",i)
}
# 当循环次数不是太大时,使用for或者while区别不大,看你喜欢。
i = 20000
while i
{
print("%n",i)
i = i - 1
}
# 当循环次数巨大时,显然,使用while更合适,占用内存少,效率高。