1. 条件语句
-
概念
判断语句的关键词就三个,if、elif、else,跟java的语句没有区别。
但是在java中没有使用的就是assert关键词,它的概念是:assert
这个关键词我们称之为“断言”,当这个关键词后边的条件为 False 时,程序自动崩溃并抛出AssertionError
的异常。在进行单元测试时,可以用来在程序中置入检查点,只有条件为 True 才能让程序正常工作。
- 代码
# 定义一个变量来进行判断 num = 2; # if语句 if num > 1: print("进入if了 -- 1") # if elif语句 if num > 2: print("进入if了 -- 2") elif num > 1: print("进入elif了 -- 2") # if elif else语句 if num > 2: print("进入if了 -- 3") elif num > 3: print("进入elif了 -- 3") else: print("都不符合条件只能到我了 -- 3") # assert关键字 assert num > 2 print("结束咯,没报错")
- 结果
因为num > 2不成立程序自动崩溃并抛出AssertionError
的异常。
设置num > 1
2. 循环语句
- while循环
- 概念
while
循环的代码块会一直循环执行,直到布尔表达式的值为布尔假。- 数值类型:如果while的数值为0则假停止循环,否则继续
- str、list和其他序列:如果长度为0则假停止循环,否则继续
- 代码
# 数值循环每次减一 num = 5; while num: print(num) num = num-1 # str类型每次截一个char strs = 'Hello' while strs: print(strs) strs = strs[1:] # while结合if count = 0 while count < 3: temp = input("不妨猜一下小哥哥现在心里想的是那个数字:") guess = int(temp) # 转换类型为int if guess > 8: # 判断值是否大于8 print("大了,大了") elif guess == 8: # 判断值正确定义count = 3结束 print("你是小哥哥心里的蛔虫吗?") print("哼,猜对也没有奖励!") count = 3 else: # print("小了,小了") count = count + 1 if count == 3: # 如果3次都没成功就跳出循环 break else: print("你成功通过,厉害") print("游戏结束,不玩儿啦!")
- 概念
- for循环
- 概念
for
循环是迭代循环,在Python中相当于一个通用的序列迭代器,可以遍历任何有序序列,如str、list、tuple
等,也可以遍历任何可迭代对象,如dict
。- for可以直接将对象分解按顺序得到对象位数值,也可以得到序列位数让序列拿位数取值
- 代码
member = ['张三', '李四', '刘德华', '刘六', '周润发'] # 直接拿到数据 for each in member: print(each) # 拿到数组位数,数组去拿值 for i in range(len(member)): print(member[i] + " 在第"+str(i)+"位") # 键值对方式,如果都取数据用.items() dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4} for key,value in dic.items(): print(key, value, end=' ') # 单项数据用.keys()或者.values() for key in dic.keys(): print(key, end=' ') # 结合else,跟之前的while-else一样,无break异常跳出就执行else的代码 for i in range(len(member)): if i > 11: break print(member[i] + " 在第"+str(i)+"位") else: print("正常执行咯,嘿嘿")
- 概念
-
range() 函数
-
概念
range
这个函数的作用是生成一个从start
参数的值开始到stop
参数的值结束的数字序列,该序列包含start
的值但不包含stop
的值。- 第一个参数是开始值,第二个是结束值,第三个是跳越值
- 代码
# 定义一个从2到14的数组,range函数包前不包后 num = range(2,10) # 循环 for i in num: print(i) # 定义一个从1到22的数组,并且每次+2(第三位参数的意义) num = range(1,22,2) for i in num: print("余生大大" + str(i))
-
-
enumerate() 函数
-
概念
- 返回了函数内的元素,还顺便给该元素一个索引值 (默认从 0 开始),可以设置开始。
- 代码
languages = ['Python', 'R', 'Matlab', 'C++'] for i,v in enumerate(languages,2): # 返回languages数组元素并设置下标开始值为2 print(v, i)
-
- break和continue
-
概念
break
语句可以跳出当前所在层的循环。continue
终止本轮循环并开始下一轮循环。
- 代码
i = 5; while(i): # 如果为3则continue跳出本次循环不输出 if i == 3: i = i-1 continue # 如果为1直接break停止循环 if i == 1: break print(i) i = i-1
-
-
pass 语句
-
概念
pass
语句的意思是“不做任何事”,如果你在需要有语句的地方不写任何语句,那么解释器会提示出错,而pass
语句就是用来解决这些问题的。pass
是空语句,不做任何操作,只起到占位的作用,其作用是为了保持程序结构的完整性。尽管pass
语句不做任何操作,但如果暂时不确定要在一个位置放上什么样的代码,可以先放置一个pass
语句,让代码可以正常运行。
- 代码
if 1 > 2: pass
-
- 推导式
- 概念
- 列表推导式:将输出格式设置为[ ]则为列表推导式
- 元祖推导式:将输出格式设置为( )则为列表推导式
- 字典推导式:将输出格式设置为键值对则为字典推导式
- 集合推导式:将输出格式设置为{ }则为集合推导式
- 代码
# 列表推导式 x = [i ** 2 for i in range(1, 10)] print(x) # 元组推导式 a = (x for x in range(10)) print(a) # 字典推导式 b = {i: i % 2 == 0 for i in range(10) if i % 3 == 0} print(b) # 集合推导式 c = {i for i in [1, 2, 3, 4, 5, 5, 6, 4, 3, 2, 1]} print(c)
- 概念
练习题:
1、编写一个Python程序来查找那些既可以被7整除又可以被5整除的数字,介于1500和2700之间。
x = [i for i in range(1500,2700) if (i % 5) == 0 and (i % 7) == 0]
print(x)
2、龟兔赛跑游戏
话说这个世界上有各种各样的兔子和乌龟,但是研究发现,所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。于是世界上各个角落都不断在发生着乌龟和兔子的比赛,小华对此很感兴趣,于是决定研究不同兔 子和乌龟的赛跑。他发现,兔子虽然跑比乌龟快,但它们有众所周知的毛病——骄傲且懒惰,于是在与乌龟的比赛中,一旦任一秒结束后兔子发现自己领先t米或以 上,它们就会停下来休息s秒。对于不同的兔子,t,s的数值是不同的,但是所有的乌龟却是一致——它们不到终点决不停止。
然而有些比赛相当漫长,全程观看会耗费大量时间,而小华发现只要在每场比赛开始后记录下兔子和乌龟的数据——兔子的速度v1(表示每秒兔子能跑v1 米),乌龟的速度v2,以及兔子对应的t,s值,以及赛道的长度l——就能预测出比赛的结果。但是小华很懒,不想通过手工计算推测出比赛的结果,于是他找 到了你——清华大学计算机系的高才生——请求帮助,请你写一个程序,对于输入的一场比赛的数据v1,v2,t,s,l,预测该场比赛的结果。
输入:
输入只有一行,包含用空格隔开的五个正整数v1,v2,t,s,l,其中(v1,v2< =100;t< =300;s< =10;l< =10000且为v1,v2的公倍数)
输出:
输出包含两行,第一行输出比赛结果——一个大写字母“T”或“R”或“D”,分别表示乌龟获胜,兔子获胜,或者两者同时到达终点。
第二行输出一个正整数,表示获胜者(或者双方同时)到达终点所耗费的时间(秒数)。
v1 = 0 # 兔子的位置
v2 = 0 # 乌龟的位置
vv1 = 10 # 兔子的速度
vv2 = 5 # 乌龟的速度
t = 5 # 兔子领先的米数
s = 2 # 休眠的秒数
sf = 0; # 兔子正在休眠秒数
l = 20 # 赛道长度
num = 0;# 秒数
state = 1;
while state:
print(v1,v2)
if (v1 >= l):
state = 0
print("兔子赢了")
elif (v2 >= l):
state = 0
print("乌龟赢了")
v = v2
v2 = v2 + vv2
num = num + 1; # 秒数+1
if (v1 - v) >= 5:
sf = s
if sf > 0:
sf = sf-1
compile
elif sf > 0:
sf = sf-1
compile
else:
v1 = v1 + vv1
print("耗费时间",num,"秒")