同济大学Python程序设计基础 实验四:循环结构

同济大学Python程序设计基础

实验四

第一题

1.显示右规律字符图,如图2.4.1所示。
在这里插入图片描述
提示:要利用chr函数将字母编码值转换成字母。
代码片.

 for i in range(1,10):
    print(i*' '+chr(int(64+i))*(20-2*i))
    i=i+1
input().raw_input("Press")

第二题

检查表达式输入中圆括号配对问题。要求对文本框输入的算术表达式,检验其圆括号配对情况,并给出相应信息如图2.4.2所示。
在这里插入图片描述
提示:利用for 语句通历整个表达式,对取出的每个字符判断,对于是左或右括号,进行相应的计数,所有字符都遍历了,根据计数确定表达式配对情况。

代码片.

str=input("输入表达式:")
m=0
n=0
for i in str:
    if(i=='('):
        m=m+1
    if(i==')'):
        n=n+1
if(m<n):
    print("右括号多于左括号")
elif(m>n):
    print("左括号多于右括号")
else:
    print("括号使用正确")

第三题

输入一字符句子,各单词间空格分隔,显示最长的单词和长度。

提示:利用字符串的split方法,将单词分离到列表中;然后对列表遍历利用字符串函数求出最长单词。

代码片.

str=input("输入字符句子:")
ls=list(str.split())
max=ls[1]
for i in ls:
    if(len(max)<len(i)):
        max=i
print("最长单词为%s"%max)

第四题

输入任意位的正整数,利用while语句将输入的数按逆序显示。即若输入x=15356,则输出nx=65351。

提示:实现的方法是将一个十进制数x不断除以十取余、x整除十,并将余数连接到逆序数中,直到x为0。

代码片.

a=int(input("请输入任意位正整数x="))
c=0
while (a//10)!=0:
    b=a%10
    c=c*10+b
    a=a//10
c=c*10+a
print("逆序数nx=%d"%c)

第五题

计算S=1+1/2+1/4+1/7+1/11+1/16+1/22+1/29+K
当第i项的值<10的-4次方时结束。

提示:找出规律,第i项的分母是前一项的分母加上表示有分母项开始计数,即分母通项为:t(i)=t(i-1)+i

代码片.

 n=1
sum=0
i=1
while(1/n>=1E-4):
    sum=sum+1/n
    n=n+i
    i=i+1
print("S=1+1/2+1/4+1/7+1/11+1/16+1/22+1/29+K=%f"%sum)

第六题

计算π的近似值,π的计算公式为:
在这里插入图片描述
求n=1000时的结果,并与数学库提供的常数pi进行比较,为提高精度,如何设置n的值?
代码片.

import math
pi=2
for n in range(2,1001):
    pi=pi*(n**2)/((n-1)*(n+1))
    n=n+2
print("n=1000时Π的近似值为%f"%pi)
pi=2
n=2
while(abs(math.pi-pi)>1E-5):
    pi=pi*(n**2)/((n-1)*(n+1))
    n=n+2
print("Π更精确的近似值为%f,此时n=%d"%(pi,n))

第七题

编一程序,显示出所有的水仙花数。所谓水仙花数,是指一个3位数,其各位数字立方和等于该数字本身。例如,153是水仙花数,因为153 =1e3+5e3+3e3。
提示:解该题的方法有两种:
①利用三重循环,将三个一位数连接成一个3位数进行判断。②利用单循环将一个3位数逐位分离后进行判断。

代码片.

print("水仙花数有:")
for i in range(100,1000):
    a=i%10
    b=(i//10)%10
    c=(i//100)%10
    if i==a**3+b**3+c**3:
        print(i)

第八题

计算机来判断肇事车辆。交通事故中肇事车辆撞人后逃逸,警方在现场找到3位目击证人询问肇事车辆5位数的车牌号码。甲说只看清最左两位为27;乙说只看清最后位是3;丙说牌号是67的倍数。

提示:利用枚举法求解。确定需要枚举的数字有几位,枚举的几位数字间的关系验证是否是问题的解。
代码片.

n=0
for i in range(27003,27994):
    if i%67==0 and i%10==3:
        print("车牌号为%d"%i)
    i=i+10
    n=n+1
print("需要枚举的数字有%d个"%n)

第九题

猜数游戏。计算机随机产生一个1~100之间的整数,由用户去猜,猜中即胜;猜不中,显示提示信息,继续猜,直至猜中,显示相关信息和次数,如图2.4.3所示。

在这里插入图片描述
提示:利用循环来解决,利用随机函数产生一个数,与用户输入的数进行比较,用户输入的数应利用二分法法则提高命中利率。若最多猜5次,又如何实现?

代码片.

import random
x=random.randint(1,100)
print("1.无限制猜数")
n=0
while 1:
    n=n+1
    a=int(input("输入猜测的数:"))
    if(a<x):
        print("%s 小了"%a)
    elif(a>x):
        print("%s 大了"%a)
    else:
        break
print("%s 恭喜你猜对了!你猜了%s次"%(x,n))
print("2.有限制:最多猜5次")
y=random.randint(1,100)
flag=0
for n in range(0,5):
    n=n+1
    b=int(input("输入猜测的数:"))
    if(b<y):
        print("%s 小了"%b)
    elif(b>y):
        print("%s 大了"%b)
    else:
        flag=1
        print("%s 恭喜你猜对了!你猜了%s次"%(y,n))
        break
if flag==0:
    print("抱歉,您最多猜5次")

第十题

用迭代法求
在这里插入图片描述

求立方根的迭代公式为:
在这里插入图片描述

提示:x的初值是任意的,迭代到|xi+1-xi|<E=10-5为止;算法流程图图2.4.4所示。
98

代码片.

a=float(input("请输入任意数a:"))
x0=1
while 1:
    x1=2*x0/3+a/(3*x0*x0)
    if abs(x1-x0)<1E-5:
        print("%f的立方根为%f"%(a,x1))
        break
    else:
        x0=x1

热门文章

编程学习 ·

python编程练习(小甲鱼)第6-10课

1.python中有两种除法运算,一种是真除,一种是floor除法,/ 是真除,保留浮点数,//是floor除法,去除浮点数保留整数 a = 30/4 #7.5 b = 30//4 #72.请写一个程序打印出 0~100 所有的奇数 for i in range(101):if i % 2==1:print(i)3.爱因斯坦曾出过这样一道有趣的数学题:有一…
编程学习 ·

查找序列元素(链表)

查找序列元素(链表) 问题描述: 使用带头结点的单链表编程: 一群学生排成一行,输入一个学号,请确定该学号学生所在的位置。 输入说明: 第一行输入学生信息: 第一个整数n(0<=n<=100),表示共有n个学生,其后有n个整数,表示n个 学生的学号 第二行及以后各行,…
编程学习 ·

操作系统虚拟页的页表表项

为了能够实现页面置换算法中的请求调页,需要在页表的下面增加一些位,来辅助完成这样的工作。 每一页上的表项里面有4个位是比较重要: 逻辑页号------------访问位--------修改位--------保护位----------驻留位----------物理页帧号 驻留位 表示该页是在内存中还是在外存。如…
编程学习 ·

Bazel responsitory_rule 创建一个 rule

bazel respository_rule 主要功能是创建一个workspace 空间。对于package 内部的BUILD.tpl文件target 可以使用 responsity_ctx.file("//package") 创建 BUILD文件,或者repository_ctx.template(“BUILD”, build_tpl, {})对BUILD文件进行修改,然后通过@< name&…
编程学习 ·

基于SSM的在线考试系统的毕业设计

一、启动说明项目为maven管理,最近集成了redis,所以在运行项目是先要下载redis并启动客户端,方可正常运行项目,除了基本的maven,mysql外,只需要下载redis,无需其他配置,这里就不做过多说明。 二、相关技术说明集成redis来保存用户登录信息,添加过滤器重置用户登录有效…
编程学习 ·

在海外如何寻找蓝海市场

2010年左右,我国跨境进口零售电商企业开始逐渐出现,到2015年电商数量实现了爆发式的增长。当然,随后就开始进入红海时代,网易考拉海购、天猫国际、京东全球购、唯品国际、小红书、洋码头占领了大部分市场。 国内红海,那就出海。 红海、蓝海概念的提出,让更多的创业者积极…
编程学习 ·

深度学习入门教程-1.1 神经网络是什么

到底什么是人工神经网络?前面提到,人工神经网络是从大脑的理解中汲取灵感而形成的。在我们的大脑中,有数十亿个神经元,它们连接成了一个神经网络。人工神经网络,结构也有些类似。许多个神经元(下图中的⚪)相连,构成了一个神经网络。人类大脑神经元细胞接收来自外部多个…
编程学习 ·

产品经理新人必看的避坑指南

产品经理的一路走来,会遇到大大小小的“坑”。从毕业开始做产品经理已有7年,一直在回想自己有哪些地方做的不够好需要改进的。趁自己闲暇时间总结分享出来,希望能给产品新人一些启示。 一、不问要求埋头苦干。 产品新人刚入职的时候,因为经验不足,不太熟悉业务,往往一开始…
编程学习 ·

Spring-boot 使用undertow代替tomcat

Undertow是Red Hat公司的开源产品, 是一款灵活的高性能Web服务器,它完全采用Java语言开发,可以直接嵌入到Java项目中使用,支持阻塞IO和非阻塞IO。由于Undertow采用Java语言开发。 Undertow在高并发业务场景中,性能优于Tomcat,对于并发要求不高的情况下,二者差别不大。 Un…
编程学习 ·

LeetCode–最长公共前缀

LeetCode–最长公共前缀 博客说明文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!说明 leetcode题,14题 最长公共前缀 题目 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符…
编程学习 ·

Spring源码解析 - springMVC核心代码(一)

一、首先来讲解下springMVC的底层工作流程1、首先我们重点放在前端控制器(DispatcherServlet)其类图:因为从流程图看,用户的请求最先到达就是DispatcherServlet。他是springmvc的核心,也是中央出处理器。因此我们分析源码,先看看他是什么样的流程:通过源码可看到:他是继…
编程学习 ·

flink on yarn启动流程分析

本文主要分析提交一个flink on yarn的任务的流程,以job模式为例子CliFront作为提交命令行的入口 一个命令行runJob的整体调用链路如下run -> runProgram -> executeProgram -> ClusterClient.run其中yarn相关的流程就在runProgram方法中 // 获取激活的customCommandL…
编程学习 ·

vue.js 生命周期(五)

每个vue 实例在被创建时都要经过一系列的初始化过程,例如设置数据监听,编译模板,将实例挂载到DOM并在数据变换时自动更新DOM邓。同时在这过程中会运行一些叫生命周期钩子的函数。 这些函数在vue 实例中 以 属性 : 函数的形式定义。 常用函数: //在实例初始化之后,数据观测…
编程学习 ·

Linux防火墙安装与配置

Linux防火墙安装与配置流程一、iptables构建防火墙应用步骤如下 1、service iptables status 检查是否安装了iptables 2、systemctl stop firewalld 关闭Linux默认防火墙firewalld 3、systemctl mask firewalld 禁用firewalld服务4、y…
编程学习 ·

AJAX

原生AJAX ajax概念:在不进行整个页面的更新的情况下,局部更新界面。 局部刷新技术 ajax 和请求数据有关 它的出现开始前后端分离 ajax出现之前 开发人员前端和后端都做 前后端分工 中间由ajax来对接 ajax就是异步的javascript和xml(树形结构文档 xhml—写法和html写法一…
编程学习 ·

weblogic部署的项目代码自动更新

weblogic的项目如果放在非autodeploy目录下,如何实现启动服务后代码自动生效。 解决方案:将Servers下面的cache、tmp、stage删除后,启动服务,代码会重新同步到stage下,这样就不用在weblogic控制台里去更新项目了。