Python匹马行天下之_循环
一、while循环
如果条件成立(true),重复执行相同操作,条件不符合,跳出循环
while 循环条件:
循环操作
(1)while循环示例
例:输入王晓明5门课程的考试成绩,计算平均成绩
1 i=1 # 初始化循环计数器i
2 sum=0 # 初始化总成绩变量
3 while i<=5: # 从i为1开始到5,重复执行一共5次接受考试成绩、求和的操作
4 print ('请输入第%d门课程的考试成绩'%i) # 提示用户输入成绩,其中用到了格式化输出,%d的取值随i的值显示,第1门课程,第2门课程……
5 sum=sum+input() # 把用户输入的成绩赋值给sum,最后保存着5次成绩的和
6 i=i+1 # 每次循环 i 都自增1,直到大于5跳出循环
7 avg=sum/(i-1) # 当第五次执行完i=i+1时,i为6,跳出循环,计算出sum/(i-1)的值就是平均值,并赋值给avg
8 print ('王晓明5门课程的平均成绩是%d'%avg) # 格式化输出avg的值,由于用了%d所以计算出的%avg的数值有小数也会省去,接收整数部分
(2)嵌套while循环示例
外部循环满足条件后,执行代码开始执行内部循环,等内部循环全部执行完毕,如果还满足外部循环条件,则外部循环再次执行,依次类推,直到跳出外层循环。
例:分别输入两个学生的5门成绩,并分别计算平均成绩
1 j=1 # 定义外部循环计数器初始值
2 prompt='请输入学生姓名' # 定义字符串变量,在用户输入时调用此变量可以减少敲汉字的麻烦
3 while j<=2: # 定义外部循环为执行两次
4 sum=0 # 定义成绩初始值,之所以定义在这里,是为了当第二个学生输入成绩时可以让sum初始化为0,重新接收新学生的成绩和
5 i=1 # 定义内部循环计数器初始值
6 name = raw_input(prompt) # 接收用户输入的学生姓名,赋值给name变量
7 while i<=5: # 定义内部函数循环5次,就是接收5门课程的成绩
8 print ('请输入第%d门的考试成绩: '%i) #提示用户输入成绩,其中用到了格式化输出,%d的取值随i的值显示,第1门课程,第2门课程……
9 sum= sum + input() # 接收用户输入的成绩,赋值给sum
10 i+=1 # i变量自增1,i变为2,继续执行循环,直到i等于6时,跳出循环
11 avg=sum/(i-1) # 计算第一个学生的平均成绩 sum/(6-1),赋值给avg
12 print name,'的平均成绩是%d\n'%avg # 输出学生成绩平均值
13 j=j+1 # 内部循环执行完毕后,外部循环计数器j自增1,变为2,再进行外部循环
14 print '学生成绩输入完成!' # 外部循环结束,提示输入完成!
二、for循环
(1)使用for语句可以遍历全部元素,例如逐个输出字符串中的字符,逐个输出列表中的元素,元组中的元素,集合中的元素(注意赋值时各元素的顺序),字典中的键……
for letter in 'Python':
print letter 结果:
P
y
t
h
o
n
fruits=['西瓜','水蜜桃','葡萄']
for fruit in fruits:
print fruit 结果:
西瓜
水蜜桃
葡萄
(2)重复执行相同操作
使用range()函数创建一个数字列表
取值范围:从起始数字开始到结束数字之前
1 for i in range(0,5): #依次把0到4保存在变量i中
2 print 'Mr.Mangood最酷!'
3
4 结果:
5 Mr.Mangood最酷!
6 Mr.Mangood最酷!
7 Mr.Mangood最酷!
8 Mr.Mangood最酷!
9 Mr.Mangood最酷!
输入王晓明的三门考试成绩,并算出平均值
1 subjects=('linux系统','Mysql数据库','Python语言') # 定义一个元组,三个元素代表三门课程
2 sum=0 # 定义变量num为初始化成绩分数
3 for i in subjects: # 把元组里的每一个元素依次赋值给i,一共有三次
4 print '请输入%s的考试成绩'%i # 提示输入成绩,运用了格式化字符串功能,用i每次取得的元素名表达出成绩名字,%s的意思是字符串
5 score = input() # 接收用户输入的成绩赋值给score
6 sum += score # 把成绩赋给sum,相当于sum = sum + score
7 avg= sum / len(subjects) # 跳出for循环后,计算平均值,这里用函数len()来计算变量subjects的长度,因为subjects定义为一个元组,因此长度即为元素个数3
8 print '王晓明的平均成绩为%d'%avg # 输出平均成绩
9
10 结果:
11 请输入linux系统的考试成绩
12 87
13 请输入Mysql数据库的考试成绩
14 78
15 请输入Python语言的考试成绩
16 90
17 王晓明的平均成绩为85
(3)嵌套for循环
输入黄晓鸣、杨影2位同学,每人三门课程的考试成绩,计算平均成绩
1 student = (23'黄晓鸣','杨影') #定义学生姓名的元组
2 subjects=('linux系统','Mysql数据库','Python语言') #定义课程名字的元组
3 for j in student: #把j依次取两名学生的值进行两次循环
4 sum=0 #初始化成绩的值
5 print '%s同学的考试成绩'%j #打印出标题
6 for i in subjects: #定义课程循环
7 print '请输入%s的考试成绩'%i #提示输入其中一名学生的考试成绩
8 score = input() #接收考试成绩赋值给score
9 if score<0 or score>100: #判断分数取值范围,做提醒
10 print '注意成绩大小'
11 sum+=score #每次输入成绩后,sum值都累加
12 avg= sum/len(subjects) #求出平均成绩
13 print j,'的平均成绩是%d\n'%avg #打印平均成绩
14 print'完成学生成绩录入工作' #提示完成工作
三、循环控制
循环控制语句可以改变循环正常的执行顺序
循环控制语句
break语句:跳出本次循环(嵌套循环中只跳出一层循环)
continue语句:跳过当前一轮循环体的剩余语句,重新测试循环状态,进入下一轮循环,比如循环的次数一共有5次,第四次遇到continue了,那么不继续执行了,直接进行第5次循环判断
四、循环控制综合案例
1、需求分析
显示菜单
(N)ew User Login
(E)ntering User Login
(Q)uit
Enter choice:
注:输入字母N,接收新的登录名和密码,保存在字典中
输入字母E,接收登录名、密码、查找、匹配用户输入是否正确
输入字母Q,退出
2、执行步骤
(1)编制菜单
(2)使用while语句实现菜单项选择-外层循环
(3)使用while语句接收新的登录名-内层循环
(4)使用if语句判断菜单,执行相关操作
3、具体代码
1 db={}
2 prompt='''
3 (N)ew user login
4 (E)ntering user login
5 (Q)uit
6 Enter choice:'''
7 while True:
8 choice = raw_input(prompt).strip()[0].lower() #读取控制台输入的字符串,去除其首尾多余的空格后,将第一个字符串转换为小写字母
9 print '\n--You picked:[%s]'%choice
10 if choice not in 'neq':
11 print '--invaild option:,try again--'
12 else:
13 if choice == 'n':
14 prompt1 = '--login desired:'
15 while True:
16 name = raw_input(prompt1)
17 if db.has_key(name): #判断字典里的键值是否已经有输入的name值,如果有的话触发continue重新执行while循环,因为触发continue前prompt1被重新定义了,所以执行了新的name = raw_input(prompt1)
18 prompt1 = '--name taken,try another: '
19 continue
20 else:
21 break
22 pwd = raw_input('password:') #验证字典中的键没有输入的name值后,跳出循环,把用户输入的密码赋值给pwd
23 db[name] = pwd #把值传给字典db中的name键实现字典数据的完善
24 elif choice == 'e':
25 name = raw_input("login:")
26 pwd = raw_input('password:')
27 password = db.get(name) #登录时,接收用户输入的登录名和密码后,把字典db中name键的值赋给password
28 if password == pwd: #比较字典中的密码password和用户输入的密码pwd是否一致
29 print 'welcome',name
30 else:
31 print 'shibai'
32 else:
33 print 'quit!'
34 break
35
Python匹马行天下之_循环的更多相关文章
- Python匹马行天下之面向对象
概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 面向过程编程最易被初学 ...
- Python匹马行天下之运算符
什么事运算符? 本章节主要说明Python的运算符.举个简单的例子 4 +5 = 9 . 例子中,4 和 5 被称为操作数,"+" 称为运算符. Python语言支持以下类型的运算 ...
- Python匹马行天下之python之父
龟叔和他的python 经过了漫长的旅程,终于要看到主角Python了.Python是现在非常非常流行的编程语言,在我们能看到的大部分编程语言排行榜中,Python都能在前三甲中拥有一席之地 ,并且发 ...
- Python匹马行天下之初识python!
python的发展史 1989年,被称为龟叔的Guido在为ABC语言写插件时,产生了写一个简洁又实用的编程语言的想法,并开始着手编写.因为其喜欢Monty Python喜剧团,所以将其命名为pyth ...
- Java匹马行天下之Java帝国的崛起(大结局)
Java匹马行天下之Java帝国的崛起大结局 前言: [博客*缘] 网络真情伴, 博客友谊连. 笑中藏泪暖中寒. 回想那些悲喜, 苦涩也缠绵. 往事难回首, 新篇染旧言. 世间多少梦能全. 感谢相牵, ...
- Java匹马行天下——开篇
个人感言: 匹马行天下是我高中时候看过一部叫<九鼎记>的小说中的其中一个大章节标题,在整个这一章中,讲的是是主人公滕青山历经艰险,又心如磐石,一心修行,最后巅峰归来的故事.现在回想,依旧心 ...
- Java匹马行天下之JavaWeb核心技术——JSP
JSP动态网页技术 一.JavaWeb简介 一.什么是JavaWeb? JavaWeb是用Java技术来解决相关web互联网领域的技术总称. 需要在特定的web服务器上运行,分为web服务器和web客 ...
- Java匹马行天下之JavaWeb核心技术——JSP(续一)
十二.JSP表单处理 我们在浏览网页的时候,经常需要向服务器提交信息,并让后台程序处理.浏览器中使用 GET 和 POST 方法向服务器提交数据. GET 方法 GET方法将请求的编码信息添加在网 ...
- Java匹马行天下之J2EE框架开发——Spring—>Spring框架知多少
————也许我注定成不了一个伟大的人,但是至少我可以做一个很棒的自己.我想我现在应该做的不是瞻前顾后,而是活在当下,正确认知自己,做好自己现在的工作,努力提升自己的能力,踏踏实实地做一个程序员 一.思 ...
随机推荐
- ElasticSearch Roaring bitmap 和跳表联合查询
ElasticSearch Roaring map 先把所有数按65535划分, 划分方法就是求商和余数,商代表数字最终在哪一块,余数代表最终在块内的数字 比如 1, 65536, 65537, 13 ...
- sql server 2008 数据库数据类型
sql server 2008 数据库数据类型 一.数值型 int:整数类型,它的精度由执行机构确定.. smallint:短整数类型,它的精度由执行机构确定.. numeric(p,s):数值型,并 ...
- 虚拟机安装VMware Tools, 安装gcc编译器
一.虚拟机安装VMware Tools 1.虚拟机=>安装VMware Tools 2.打开文件,将下载的压缩包VMwareTools-10.3.10-12406962.tar.gz移动到指定安 ...
- OpenFileDialog 打开图片存储到电脑本地上
替换图片 private void btnSkin_Click(object sender, RoutedEventArgs e) { string fName; OpenFileDialog ofd ...
- Linux 一些常识命令
linux的性能优化: .CPU,MEM .DISK--RAID .网络相关的外设,网卡 linux系统性能分析: top:linux系统的负载,CPU,MEM,SWAP,占用CPU和内存比较的进程, ...
- leetcode.数组.283移动零-Java
1. 具体题目 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须 ...
- 关于scroll实现侧边导航栏
需求为一个简单的scroll效果,侧边选项卡跟随屏幕向下拖动变颜色的.点击侧边选项卡,跳转到相应模块. 索性上网找了一下类似的效果.附带源码地址 https://blog.csdn.net/drea ...
- css垂直居中设置
转载自大佬的文章:纯css实现垂直居中的几种方法(https://www.cnblogs.com/hutuzhu/p/4450850.html) 总结得很棒,有好几种方法自己没用过的,拷贝过来给自己看 ...
- css3 一个六边形 和 放大旋转动画DEMO演示
<!DOCTYPE html> <html> <head> <meta charset="gb2312"> <title> ...
- 多渠道打包工具Walle源码分析
一.背景 首先了解多渠道打包工具Walle之前,我们需要先明确一个概念,什么是渠道包. 我们要知道在国内有无数大大小小的APP Store,每一个APP Store就是一个渠道.当我们把APP上传到A ...