本文主要是介绍轩辕的第三篇博文,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
学习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 += 1number = 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')breakelse: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('欢迎您,您真是一个小天才!真棒?')breakelse: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(bb-4ac))/2a
root_2=(-b-math.sqrt(bb-4ac))/2a
print(‘The roots are %f and %f’%(root_1,root_2))
elif root_==0:
root_1=(-b+math.sqrt(bb-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 month4 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 m2:
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(‘不合法’)
——————————————————————————————————————————————————————————————————————————————————————————————————
这篇关于轩辕的第三篇博文的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!