实验5循环结构设计 一、 实验目的 (1) 熟悉并掌握while语句的语法格式和使用方法。 (2) 熟悉并掌握for...in语句的语法格式和使用方法。 (3) 熟悉用于提前结束循环的break和continue语句。 (4) 学会使用循环嵌套解决实际问题。 (5) 了解穷举法和迭代法的使用。 二、 知识导图 三、 实验内容 1. 照猫画虎 请按照程序功能,将语句功能、输出结果或者Python语句填写在横线处。 (1) 计算累加和并体会else子句的用法。 i, sum = 1, 0 n = eval(input("input n:")) #输入n while: #循环条件为小于或等于n #累加sum #i自增1 if sum > 10: print("提前结束!sum=%d" % (sum)) break else: print("正常结束!sum=%d" % (sum)) 当n=3时,输出结果为: 。 当n=10时,输出结果为: 。 第2种输出结果的原因是: 。 (2) 输入一个整数,判断并输出它的位数。 x = eval(input("input x:")) t = x count = 0 if x < 0: x = -x #求x的绝对值 if x == 0: print("%d是1位数" % (x)) else: while: #循环条件 #位数加1 #x变化 print("{}是{}位数。".format(t, count)) 当x=0时,输出结果为: 。 当x=123时,输出结果为: 。 当x=-2022时,输出结果为: 。 (3) 求1~10的偶数和与奇数和并输出结果。 sum_even = sum_odd = 0 #sum_even表示偶数和,sum_odd表示奇数和 for i in range(): if: sum_even += i else: sum_odd += i print("1~10的偶数和是%d,奇数和是%d" % ()) (4) 编写一个程序,将字符串进行加密。加密规则为: 将每位原密码的ASCII码值加5返回新字母或者数字,然后在新生成的每位密码的前后各加1位随机生成的假密码。 import random word = input("请输入您的英文密码:").strip(" ") #strip()函数的功能为: num = "abcdefghijklmnopqrstuvwxyz1234567890" password = "" for itemword: new = low = random.choice(num) upp = random.choice(num).upper() password += print(password) 2. 牛刀初试 (1) 小明想用压岁钱环游中国,妈妈告诉他大约需要30000元,但现在小明只有5000元。他请妈妈帮忙存在银行里,银行年利息3.7%,小明几年能存够? 【输出样例】 小明*年后可以环游中国。 (2) 编程实现以下功能,依次输入行和列的数字,按行列打印由“*”组成的矩形。 【输入输出样例】(其中斜体加下画线表示输入数据) 请输入矩阵的行数: 3 请输入矩阵的列数: 4 * * * * * * * * * * * * (3) 登录网站、电子邮箱和银行取款时都需要用户输入的“密码”,并且有密码验证、输入次数以及重新设置的规则。请编程对此过程进行模拟,需要具备: ① 用户输入密码正确可以登录; ② 用户输入密码错误能继续输入,次数最多为3次; ③ 忘记密码时可以重置。初始密码为“888888”。 【输入输出样例1】(其中斜体加下画线表示输入数据) 请输入6位密码: 123456 密码错误,已经输错1次 请输入6位密码: 123456 密码错误,已经输错2次 请输入6位密码: 123456 密码错误,已经输错3次 输入密码3次,您是否需要重新设置密码?(Y/N)Y 请输入您的新密码: 123456 密码重置成功! 【输入输出样例2】(其中斜体加下画线表示输入数据) 请输入6位密码: 888888 密码正确,正在登录! 3. 挑战自我 视频51 (1) 《宰相的麦子》讲的是一位国王要奖励国际象棋发明者,奖励方法为在棋盘上第一格放一粒麦子,第二格放二粒,第三格放四粒……按后面一格的麦子总是前一格麦子数的两倍这个比例,放满整个棋盘64个格子。结果倾全国之力也无法完成这个奖励。与古代相比,现在生产力水平有了大幅度提高,2021年我国粮食总产量突破68285万吨。1千克麦子大概5000粒,请利用程序计算: 以2021年我国的粮食总产量能放满棋盘的多少格? 【输出样例】 2021年我国全国粮食产量可以放满棋盘的*格。 视频52 (2) 看过武侠小说《射雕英雄传》的人都会记得,黄蓉与瑛姑见面时,瑛姑出过这样一道数学题: “今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?”请编程计算1000以内此物的数量,并每行显示5个(设置宽度为6,且靠左对齐)。 【输出样例】 今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何? 23128233338443 548653758863968 视频53 (3) 一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个回文数(即这个数从左向右读和从右向左读是完全一样的),为95859。两个小时后里程表上出现了一个新的回文数,该数仍为5位数。问该车的速度是多少(结果保留2位小数)?新的回文数是多少? 【输出样例】 里程表上出现的新回文数是*****。 车速为***km/h。 视频54 (4) 有三对情侣同时举办婚礼,假设三位新郎为A、B、C,三位新娘为X、Y、Z。有参加婚礼的朋友不清楚谁和谁结婚,所以去询问了这六位新人中的三位,得到的回答是: 新郎A说他要和新娘X结婚; 新娘X说她的未婚夫是新郎C; 而新郎C说他要和新娘Z结婚。听到这样的回答后,提问者知道他们都在开玩笑,说的都是假话,但他仍不清楚谁和谁结婚。请编写程序求出到底哪位新郎和哪位新娘结婚。