实验二 程序流程控制

2023-11-20

1. 编写程序计算 1+3+5+7…+99 之和。
summ=0
for i in range(1,100):
  summ=summ+i
print('和为:',summ)
2. 编写程序 , 计算 2+4+6+8…+100 之和 .
summ=0
for i in range(2,101):
  if(i%2==0):
    summ=summ+i
print('和为:',summ)
3. 编写程序 , 使用不同的实现方法输出 2000~3000 的所有闰年 , 运行效 果如下图所示。
 
提示 :闰年包括普通闰年和世纪闰年,修改 print 函 数中的‘end’ 选项。
summ=1
for i in range(2000,3001):
  if(i%4==0 and i%100!=0):
      if (summ%8==0):
          print(i,end='\n')
          summ=summ+1
      else:
          print(i,end='\t')
          summ=summ+1
  elif(i%400==0):
      if (summ%8==0):
          print(i,end='\n')
          summ=summ+1
      else:
          print(i,end='\t')
          summ=summ+1
4. 编写程序 , 计算 Sn=1-3+5-7+9-11+…
提示 :可以使用 %2==0 的语句形式判断 i 是否为偶数。
a=int(input('请输入整数终点数:'))
summ=0
summm=0
for i in range(1,a+1,4):
  if(i%2!=0):
    summ=summ+i
for i in range(3,a+1,4):
  if(i%2!=0):
    summm=summm-i
    Sn=summ+summm
print('Sn的值为:',Sn)
5. 编写程序 , 计算 Sn=1+1/2+1/3+…
a=int(input('请输入终点值:'))
Sn=1
for i in range(2,a+1):
  Sn=Sn+1/i
print("总和为:",Sn)
6. (只要实现四种方式中的一种即可) 编写程序 , 打印九九乘法表。 要求输出九九乘法表的各种显示效果( 上三角、下三角、矩形块等方 式)
提示:\t,横向建表

for i in range(9,0,-1):
    for j in range(1,i+1):
        m=i*j
        if i==j:
            print(i,'*',j,'=',m,end='\n')
        else:
            print(i,'*',j,'=',m,end='\t')
for i in range(1,10):
    for j in range(1,i+1):
        m=i*j
        if i==j:
            print(i,'*',j,'=',m,end='\n')
        else:
            print(i,'*',j,'=',m,end='\t')

7. 编写程序输入三角形的 3 条边 , 先判断是否可以构成三角形 , 如果可以 , 则进一步求三角形的周长和面积 , 否则报错 无法构成三角形 !” 。其运行效果如图下图所示( 结果均保留1 位小数 )

提示 : (1)3 个数可以构成三角形必须满足如下条件 : 每条边的边长均大于 0, 并且任意两边之和大于第三边。

 

 (3)其中根号需要导入 math 库并调用 sqrt 函数

from math import *
while(1):
    a=eval(input('请输入三角形的第一条边:'))
    b=eval(input('请输入三角形的第二条边:'))
    c=eval(input('请输入三角形的第三条边:'))
    if (a+b>c and b+c>a and a+c>b):
        if (a>0 and b>0 and c>0):
            h=(a+b+c)/2
            area=sqrt(h*(h-a)*(h-b)*(h-c))
            print('输出三角形面积为:',area)
            break
    else :
        print('无法构成三角形,请重新输入!')
8. 编写程序 , 输入 x, 根据如下公式计算分段函数 y 的值。请分别利用单 分支语句双分支结构以及条件运算语句等方法实现。

提示:需要调用 math 模块,其中
math.sqrt() 是根号;
math.exp() 是指数 e
math.log() ln
math.sin() sin;
from math import *
x=eval(input('请输入x值:'))
if(x>=0):
    y=(x**2-3*x)/(x+1)+2*pi+sin(x)
elif(x<0):
    y=log10(-5*x)+6*sqrt(abs(x)+exp(4))-(x+1)**3
print('分段函数y的值为:',y)
9. 编写程序 , 输入一元二次方程的 3 个系数 a b c, ax 2 +bx+c=0
程的解。结果如下图所示
提示:
(1) 方程 ax 2 +bx+c=0 的解有以下几种情况。
a=0 and b=0, 无解。
a=0andb!=0, 有一个实根
b2-4ac=0, 有两个相等实根 ○
4. b2-4ac>0,有两个不等实根
b2-4ac<0, 有两个共轭复根
(2) 可以利用 “ print(str. format(" 此方程有两个不等实根 :{0}+{1} 和 {0}-{1}",realPart, imag Part,)”的语句形式输出方程的两个共轭复根。
from math import *
a=float(input('请输入一元二次方程的a值:'))
b=float(input('请输入一元二次方程的b值:'))
c=float(input('请输入一元二次方程的c值:'))
m=b**2-4*a*c
if (a==0 and b==0):#只有c值,无解
    print('方程无解')
elif(a==0 and b!=0):
    x=-c/b
    print('方程有一个实根:',x)#一元一次方程形式
elif(m==0):#二元一次方程形式,b2-4ac=0,有两个相等实根
    x=-b/(2*a)
    print('方程有两个相等实根为:',x)
elif(m>0):#b2-4ac>0,有两个不等实根
    x1=(-b+m)/(2*a)
    x2=(-b-m)/(2*a)
elif(m<0):#方程无解,但可求两个共轭复根
    real=-b/(2*a)
    image=sqrt(-m)
    print(str.format("此方程有两个不等实根:{0}+{1}和{0}-{1}",real,image))
10. 编写程序 , 输入整数 n(n≥0), 分别利用 for 循环和 while 循环求 n!
提示:
(1) n!=n×(n-1)×(n-2)×…×2×1 。例如 5!=5×4×3×2×1=120, 特别地 ,0!=1
(2) 一般情况下 , 累乘的初值为 1, 累加的初值为 0
(3) 如果输入的是负整数 , 则继续提示输入非负整数 , 直到 n≥0
n=int(input('请输入整数:'))
Sn=1
if n==0:
    print('0!=1')
else:
    for i in range(1,n+1):
        Sn=Sn*i
    print('结果为:',Sn)
11.编写程序,产生两个 0~100(包含 0 和 100)的随机整数 a 和 b,求这两个整数的最大公约数和最小公倍数。
提示:(1)可以利用“ random, randint(0,100)”的语句形式生成 0-100(包 含 0 和 100)的随机整数。
(2)利用“辗转相除法”求最大公约数,具体算法如下。
①对于已知的两个正整数 m、n,使得 m>n
②m除以n得余数r 
③若r≠0,则令m+n,n←r,继续相除得到新的余数r。若仍然 r≠0,则重复此过程,直到 r=0 为止。最后的m就是最大公约数。
(3)求得了最大公约数,最小公倍数就是已知的两个正整数之积除以最大公约数的商。

法一:

from random import *
m=randint(0,101)
n=randint(0,101)
print(m,n)
if m<n:
    m,n=n,m
    m1=m
    n1=n
else:
    m1=m
    n1=n
if n1==0:
    print('无最大公因数和最小公倍数')
while(n1!=0):
    r=m1%n1
    m1=n1
    n1=r
print('最大公因数为:', m1)
print('最小公倍数为:',m*n/m1)

法二:

import random
m=random.randint(0,100)
n=random.randint(0,100)
print(m,n)
if m>=n:
    if n==0:
        print('无最大公约数')
        print('无最小公倍数')
    else:
        m1=m
        n1=n
        while (1):
            r=m1%n1
            if r!=0:
                n1=n1%r
                m1=r
                continue
            else :
                gcd=n1
                break
    print('最大公因数为:',gcd)
    print("最小公倍数:",m*n/gcd)                
else :
    m,n=n,m
    if n==0:
        print('无最大公约数')
        print('无最小公倍数')
    else :
        m1=m
        n1=n
        while (1):
            r=m1%n1
            if r!=0:
                n1=n1%r
                m1=r
                continue
            else :
                gcd=n1
                break
    print('最大公因数为:',gcd)
    print("最小公倍数:",m*n/gcd)

 法二有错,但不知道咋改,呜呜呜,暂存一下

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实验二 程序流程控制 的相关文章

  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • Django 代理模型的继承和多态性

    我正在开发一个我没有启动的 Django 项目 我面临着一个问题遗产 我有一个大模型 在示例中简化 称为MyModel这应该代表不同种类的物品 的所有实例对象MyModel应该具有相同的字段 但方法的行为根据项目类型的不同而有很大差异 到目
  • 通过 Scrapy 抓取 Google Analytics

    我一直在尝试使用 Scrapy 从 Google Analytics 获取一些数据 尽管我是一个完全的 Python 新手 但我已经取得了一些进展 我现在可以通过 Scrapy 登录 Google Analytics 但我需要发出 AJAX
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • Python 函数可以从作用域之外赋予新属性吗?

    我不知道你可以这样做 def tom print tom s locals locals def dick z print z name z name z guest Harry print z guest z guest print di
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 每个 X 具有多个 Y 值的 Python 散点图

    我正在尝试使用 Python 创建一个散点图 其中包含两个 X 类别 cat1 cat2 每个类别都有多个 Y 值 如果每个 X 值的 Y 值的数量相同 我可以使用以下代码使其工作 import numpy as np import mat
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • 类型错误:预期单个张量时的张量列表 - 将 const 与 tf.random_normal 一起使用时

    我有以下 TensorFlow 代码 tf constant tf random normal time step batch size 1 1 我正进入 状态TypeError List of Tensors when single Te
  • 使用 Python 绘制 2D 核密度估计

    I would like to plot a 2D kernel density estimation I find the seaborn package very useful here However after searching
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P

随机推荐