TASK02
输入输出语句
昨天的学习忽略了输入的过程
-
输入 函数 input()
格式: 输入变量名=input(‘提示字符’)
E:
answer=input("what is yopur problem?")
-
输出函数 print()
格式:print(‘打印的字符’)
【注意】可以直接打印变量和运算 输入逗号自动打印为空格。
print('teenager')
条件语句
-
if
语句简单,无括号,后直接跟冒号和条件,若为True,则执行命令行
【注意】:命令行为一。
E001:
age = 18 if age >= 18: print('your age is', age) print('A man')
-
if else
若if命令为false,执行else
E002:
age = 3 if age >= 18: print('your age is', age) print('A man') else: print('a kid')
-
if elif else
【注意】此结构的执行顺序为逐层进行,一旦满足前一条判断语句,只执行后一条命令,后面判断则不再执行。
E003:
s=input('your age') age=int(s) if age >= 6: print('teenager') elif age >= 18: print('adult') else: print('kid') #输入20 输出 teenager
如上所示,即多层命令应该考虑命令先后的问题。
应改正为:
s=input('your age')
age=int(s)
if age >= 18:
print('adult')
elif age >= 6:
print('teenager')
else:
print('kid')
输入20
adult
输入8
teenager
循环语句
-
while…(else)
格式:
while 布尔表达式: 代码块
E003:
while 1: print('the soul is best') break #不加break会一直执行直到bool为真,小心无限循环!
【补充】 当while
后写入一个非零整数时,视为真值,执行循环体;写入0
时,视为假值,不执行循环体。也可以写入str、list
或任何序列,长度非零则视为真值,执行循环体;否则视为假值,不执行循环体。
加了else,是指while语句完整结束后,再执行else的语句,若while中出现break等中断循环的语句,将终止循环。
2 for…in循环
配合序列使用,起到遍历的效果,可遍历任何可迭代对象,像list,str。
格式:
for 迭代变量 in 可迭代对象:
代码块
E004:
str = ['我','今','天','和','赵','同','学','玩','得','很','开','心']
for every in str:
print(every,end = '')
3 for…else循环
格式:
for 迭代变量 in 可迭代对象:
代码块
else:
代码块
使用同while else语句,若前条件中断,则后条件也不输出。
4 奇奇怪怪的函数
-
range()
数列函数
格式:range(起始值(含),终止值(不含),累加值(默认为1))
E005:
for i in range(1,11,2): print(i,end='') #13579
-
enumerate()
枚举函数,利用下标对序列或数组中所有的对象进行标号,然后列举。
格式:
enumerate(序列, [start=0]#下标起始的位置) enumerate(A, j) A为序列名,j为应用起始值
E005:
seasons = ['Spring', 'Summer', 'Fall', 'Winter'] lst = list(enumerate(seasons)) print(lst) # [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] lst = list(enumerate(seasons, start=1)) # 下标从 1 开始 print(lst) # [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
5 循环中其他语句
-
break
跳出当前语句
-
continue
终止本轮循环并开始下一轮
for i in range(10): if i % 2 != 0: print(i) continue i += 2 print(i) # 2 # 1 # 4 # 3 # 6 # 5 # 8 # 7 # 10 # 9
-
pass
pass
是空语句,不做任何操作,只起到占位的作用,其作用是为了保持程序结构的完整性。尽管pass
语句不做任何操作,但如果暂时不确定要在一个位置放上什么样的代码,可以先放置一个pass
语句,让代码可以正常运行。练习题
1、编写一个Python程序来查找那些既可以被7整除又可以被5整除的数字,介于1500和2700之间。
for i in range(1500,2701): if i % 5 == 0 and i % 7 == 0: print(i)
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”,分别表示乌龟获胜,兔子获胜,或者两者同时到达终点。
第二行输出一个正整数,表示获胜者(或者双方同时)到达终点所耗费的时间(秒数)。
样例输入:
10 5 5 2 20
样例输出
D 4
print("请输入五个正整数v1(兔速),v2(龟速),t(兔领),s(兔停),l(赛道长),用空格隔开") v1,v2,t,s,l = map(int,input().split()) if v1<=100 and v2<=100 and t<=300 and s<=10 and l<=10000 and l%v1==0 and l%v2==0: s1 = 0 s2 = 0 i = 0 while s1<l and s2<l: s1 = v1 + s1 s2 = v2 + s2 i += 1 if s1 == 1 or s2 == 1: break else (s1-s2)>= t: s2 = s2+ v2*s i = i+s if s1-s2>=t: s2 = v2 * s+s2 i=i+s else: s2+=v2 s1+=v1 i+=1 if s1<s2: print("T") if s1>s2: print('R') if s1=s2: print('D')