Task02:条件循环结构

Task02:条件循环结构

思维导图

在这里插入图片描述

代码

条件语句代码

1.含一个不带循环的猜数小游戏和成绩等级

#猜数游戏,不限次数
temp = input('猜数:')
guess = int(temp)
if guess > 8:
    print('大了')
else:
    if guess == 8:
        print("right")
        print("猜对了也没有奖励")
    else:
        print("小了")
print("game over")

#对于需要自行输入的,不要忘了一个分支叫输入错误
temp = input('请输入成绩:')
source = int(temp)
if 100 >= source >= 90:
    print('A')
elif 90 > source > 80:
    print('B')
elif 80 >= source >= 60:
    print('C')
elif source < 60:
    print('D')
else:
    print('输入错误')

循环语句代码

1.猜数游戏和string的输出

#猜数游戏三局
count=0
while count<3:
    temp=input('请输入数字')
    guess=int(temp)
    if guess>8:
        print("大了")
    else:
        if guess==8:
            print("猜对了")
            count=3
        else:
            print("小了")
    count=count+1
print("游戏结束")

string='abcd'
while string:
    print(string)#print的内容不要随便加'',变量是不需要加''的
    string=string[1:]
#以字符串为空结束

2.有序序列的输出(用for)

#列表的输出
member = ['张三', '李四', '王五', '赵六']
for i in member:
    print(i, end='&')

member = ['张三', '李四', '王五', '赵六']
for i in range(len(member)):
    print(member[i], end='&')

#循环输出字典的key和value
dic={'a':1,'b':2,'c':3}
for key,value in dic.items():
    print(key,value,sep=':')
#仅输出dict的value
dic={'a':1,'b':2,'c':3,'d':4}
for value in dic.values():
    print(value)

综合题目(1个):

可以用来引申为填写密码的代码~
只有3次输入密码的机会

passwdList = ['123', '345', '890']
valid = False
count = 3
while count > 0:
    password = input('enter password:')
    for item in passwdList:
        if password == item:
            valid = True
            break
    if not valid:
        print('invalid input')
        count -= 1
        continue
    else:
        break

小知识点

enumerate()函数

1.用法
enumerate(sequence,[start=])
相当于为有序的序列标号
示例:将季节与数字对应起来~

seasons=['Spring','summer','fall','winter']
lst=list(enumerate(seasons,start=1))
print(lst)

2.与for连用
用法:for i,a in enumerate(A): do sth with a
不仅可以返回A的元素还可以返回该元素的索引值。
还可以确定索引的起始值。

languages=['python','R','Matlab','C++']
for language in languages:
    print('l love ',language)
print('Done')

for i,language in enumerate(languages,3):
    print(i,'l love',language)
print('Done!')

break语句

跳出当前所在层的循环:注意是循环,不是条件

import random  #通过引用random库来生成随机数
secret=random.randint(1,10)
while True:
    temp=input('猜一下小哥哥心中的数')
    guess=int(temp)
    if guess>secret:
        print('大了')
    else:
        if guess==secret:
            print('right')
            break#是跳出循环,不是跳出条件语句
        else:
            print('小了')
print('游戏结束,不玩儿啦')

continue语句

for i in range(10):#range(10)是0到9
    if i % 2 != 0:
        print(i)
        continue#终止本轮循环,进入下一轮循环
    i+=2
    print(i)

此处的i进行了追踪,终止循环的结果就是不print i+=2.并且i+=2,是不影响循环的i的大小的,只有一个print输出的作用。

推导式

推导式的表达非常简便,列表最常用。

#列表推导式
x=[-4,-2,0,2,4]
y=[a*2 for a in x]
print(y)

x=[i**2 for i in range(1,10)]
print(x)

x=[(i,i**2) for i in range(5)]
print(x)

x=[i for i in range(100) if (i%2)!=0 and (i %3)==0]
print(x)
a=[(i,j) for i in range(0,3) for j in range(0,3)]
print(a)

x=[[i,j] for i in range(0,3) for j in range(0,3)]
print(x)
x[0][0]=10
print(x)

a=[(i,j) for i in range(0,3) if i <1 for j in range(0,3) if j>1]
print(a)
#元组推导式要输出成tuple
a=(x for x in range(10))
print(a)
print(tuple(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,3,2,1] }
print(c)

习题

1.写出1500到2700之间的7和5的公倍数

#方法1
for i in range(1500, 2700):
    if i % 5 == 0 & i % 7 == 0:
        print(i)
        i=i+1
    else:
        i=i+1
#方法2
x=[i for i in range(1500,2700) if (i % 5) == 0 & (i % 7) == 0]
print(x)

2.龟兔赛跑,兔子的速度为v1,乌龟的速度为v2,一旦任意一秒结束,兔子发现自己领先t米或以上,就会停下来休息s秒,跑道总长为l。
输入:五个正整数:v1,v2,t,s,l
输出:T:乌龟获胜R:兔子获胜D:同时到达

v1, v2, t, s, l = map(int, input().split())
i = 0
S1 = 0
S2 = 0
j = 0
while S1 < l and S2 < l:
    if S1 - S2 >= t:
        S1 = v1 * i
        S2 = v2 * (i + s)
        i = i + s
        j = j + 1
        print(i, j, S1, S2)
    else:
        i = i + 1
        S1 = v1 * (i - j * s)
        S2 = v2 * i
        print(i,j,S1,S2)
if S1 > S2:
    print('R')
elif S1 < S2:
    print('T')
else:
    print('D')

注意事项:
1.同时在键盘敲入多个变量用map(int, input().split())
2.while S1 < l and S2 < l:不能写成while S1 < l & S2 < l:
3.如果写成
在这里插入图片描述
则第一个的if执行时第二个if的else也会执行。
4.本题用路程作为条件比时间作为条件合理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值