判断语句的关键词就三个,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
while循环
概念
while
循环的代码块会一直循环执行,直到布尔表达式的值为布尔假。代码
# 数值循环每次减一
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
。代码
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() 函数
概念
代码
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,"秒")