轩辕的第三篇博文

学习python的第三天?

(越来越发现自己像个猪一样,赖以言教却又不由分说~~~~)

Day04 - 循环结构

循环结构的应用场景

如果在程序中我们需要重复的执行某条或某些指令,例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向奔跑的指令。当然你可能已经注意到了,刚才的描述中其实不仅仅有需要重复的动作,还有我们上一个章节讲到的分支结构。再举一个简单的例子,比如在我们的程序中要实现每隔1秒中在屏幕上打印一个hello, world这样的字符串并持续一个小时,我们肯定不能够将print(‘hello, world’)这句代码写上3600遍,如果真的需要这样做那么编程的工作就太无聊了。因此,我们需要了解一下循环结构,有了循环结构我们就可以轻松的控制某件事或者某些事重复、重复、再重复的发生。在Python中构造循环结构有两种做法,一种是for-in循环,一种是while循环。


for-in循环

例题1:
如果明确的知道循环执行的次数或者是要对一个容器进行迭代(后面会讲到),那么我们推荐使用for-in循环,例如下面代码中计算\sum_{n=1}^{100}n。

#用for循环实现1~100求和
sum = 0
for x in range(101):
	sum += x
print(sum)

需要说明的是上面代码中的range类型,range可以用来产生一个不变的数值序列,而且这个序列通常都是用在循环中的,例如:

  • range(101)可以产生一个0到100的整数序列。
  • range(1, 100)可以产生一个1到99的整数序列。
  • range(1, 100, 2)可以产生一个1到99的奇数序列,其中的2是步长,即数值序列的增量。
    知道了这一点,我们可以用下面的代码来实现1~100之间的偶数求和。

例题2:

sum = 0
for  x in range(2,100,2):
    sum += x
print(sum)

例题3:
也可以通过在循环中使用分支结构的方式来实现相同的功能,代码如下所示。

sum = 0
for x in range(101):
	if x % 2 == 0:
		sum += x
print(sum)


while循环

如果要构造不知道具体循环次数的循环结构,我们推荐使用while循环,while循环通过一个能够产生或转换出bool值的表达式来控制循环,表达式的值为True循环继续,表达式的值为False循环结束。下面我们通过一个“猜数字”的小游戏(计算机出一个1~100之间的随机数,人输入自己猜的数字,计算机给出对应的提示信息,直到人猜出计算机出的数字)来看看如何使用while循环。

例题1:
#猜数字游戏
#计算机出一个1~100之间的随机数由人来猜
#计算机根据人猜的数字分别给出提示大一点/小一点/猜#对了

import random
answer = random.randint(1, 100)
counter = 0
while True:
    counter += 1
    number = int(input('请输入: '))
    if number < answer:
        print('大一点')
    elif number > answer:
        print('小一点')
    else:
        print('恭喜你猜对了!')
        break
print('你总共猜了%d次' % counter)
if counter > 7:
    print('你的智商余额明显不足')

说明:上面的代码中使用了break关键字来提前终止循环,需要注意的是break只能终止它所在的那个循环,这一点在使用嵌套的循环结构(下面会讲到)需要引起注意。除了break之外,还有另一个关键字是continue,它可以用来放弃本次循环后续的代码直接让循环进入下一轮。

练习题1:
#用户只能输入五次密码,如果密码错误则锁定账号

mima = 123456
input_ = int(input('请输入密码>>:'))

for i in range(4):
    if input_ == mima:
        print('OK')
        break
    else:
        print('密码错误,请尝试重新输入')
        input_ = int(input('请输入密码>>:'))
else:
    print('账号锁定,请移步至柜台你个傻X..')

练习题2:
#生成一定范围内的4位数字验证码,3次机会

iimport random
for i in range(3):
    yanzhengma = random.randrange(1000,9999)
    print('验证码为: %d' % yanzhengma)
    yanzheng = int(input('请输入验证码>>:'))
    if yanzheng == yanzhengma:
        print('欢迎您,您真是一个小天才!真棒?')
        break
    else:
        print('验证码错误,你真是头猪?')
        

——————————————————————————————————————————————————————————————————————————————————————————————————
回顾一下习题:

![在这里插入图片描述]
第一题代码:
import math
a,b,c=map(float,input(‘Enter a,b,c:’).split(’,’))
root_=(bb)-(4ac)
if root_>0:
root_1=(-b+math.sqrt(b
b-4ac))/2a
root_2=(-b-math.sqrt(b
b-4ac))/2a
print(‘The roots are %f and %f’%(root_1,root_2))
elif root_==0:
root_1=(-b+math.sqrt(b
b-4ac))/2*a
print(‘The root is %f’%root_1)
else:
print(‘The equation has no real roots’)

在这里插入图片描述
第二题代码:
import random
num1=random.randint(0,100)
num2=random.randint(0,100)
print(num1,num2)

sum=num1+num2

sum_=int(input(‘请输入两个数的和:’))
if sum_==sum:
print(‘正确’)
else:
print(‘错误’)

第三题代码:
today=int(input(‘Enter today:’))
day_num=int(input(‘Enter the number of days elapsed since today:’))
week=[‘Sunday’,‘Monday’,‘Tuesday’,‘Wednesday’,‘Thursday’,‘Friday’,‘Saturday’]
futureweek=today+day_num
now=0
now=futureweek%7
print(“Today is %s and the future day is %s”%(week[today],week[now]))
在这里插入图片描述
第四题代码:
num1,num2,num3=map(int,input(‘请输入三个整数:’).split(’,’))
x=[num1,num2,num3]
x.sort()
print(x)

第五题代码:
weight_1,price_1=map(float,input(‘Enter weight and price for package1:’).split(’,’))

weight_2,price_2=map(float,input(‘Enter weight and price for package2:’).split(’,’))
vaule_1=weight_1/price_1
vaule_2=weight_2/price_2

if vaule_1>vaule_2:
print(‘Package1 has the better price’)
elif vaule_1==vaule_2:
print(‘same’)
else:
print(‘Package2 has the better price’)

第六题代码:
year,month=map(int,input(‘输入年份和月份:’).split(’,’))

if (year % 40 and year %100 !=0 )or (year%4000):
day_=int(‘29’)
else:
day_=int(‘28’)

if month1 or month3 or month5 or month7 or month8 or month10 or month12:
day=int(‘31’)
elif month
4 or month6 or month9 or month==11:
day=int(‘30’)
else :
day=day_

print(’%d 年%d月份有%d天’%(year,month,day))

第七题代码:
import numpy as np
computer=np.random.choice([‘正面’,‘反面’])

hum=input(‘请输入你的选择:’)
print(computer)
if computer == hum:
print(‘正确’)
else:
print(‘错误’)
在这里插入图片描述
第八题代码:
import random

s=int(input('剪刀(0), 石头(1), 布(2): '))
i=random.randint(0,2)

print(i)
if (s == 0 and i == 2) or (s == 1 and i == 0) or (s == 2 and i == 1):
print(‘You won.’)
elif s==i:
print(‘ping’)
else:
print(‘Loser’)

在这里插入图片描述
第九题代码:
y=int(input(‘Enter year:(e.g.,2008):’))
m=int(input(‘Enter month:1-12:’))
d=int(input(‘Enter the day of the month:1-31:’))
a=[‘Saturday’,‘Sunday’,‘Monday’,‘Tuesday’,‘Wednesday’,‘Thurday’,‘Firday’]
if m1:
m=13
y=y-1
if m
2:
m=14
y=y-1
h=int(d + ((26 * (m + 1) ) // 10) + (y % 100) + ((y % 100) / 4) + ((y // 100) / 4) + 5 * y // 100) % 7
o=a[h]
print(‘Day of the week is %s’%o)

在这里插入图片描述
第十题代码:
import numpy as np
daxiao=np.random.choice([‘Ace’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,‘10’,‘Jack’,‘Queen’,‘King’])
huase=np.random.choice([‘梅花’,‘红桃’,‘方块’,‘黑桃’])
print(‘你选择的牌是’,huase,daxiao)

第十一题代码:
num=int(input(‘输入一个三位整数:’))
bai=num//100
shi=num//10%10
ge=num%10
if bai==ge:
print(‘是回文数!’)
else:
print(‘不是回文数’)

第十二题代码:
a,b,c=map(float,input(‘Enter three edges:’).split(’,’))
if (a+b)>c and (a+c)>b and (b+c)>a:
print(‘The perimeter is %.0f’%(a+b+c))
else:
print(‘不合法’)

——————————————————————————————————————————————————————————————————————————————————————————————————

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值