当前位置: 首页 > article >正文

Trains-03练习-结构

基础练习

练习目标

if-else判断语句

while循环语句

01. 计算车费

题目描述

小红打车,起步价8元(3公里), 每公里收费 2 元,她打车行驶了 n 公里,计算车费

输入描述

输入一个公里数

输出描述

输出应付车费

示例

输入:

5

输出:

12

#输入小红打车行驶的距离
n = float(input("请输入小红打车行驶的距离:"))

#设置计费方式
if n <= 3:
    print("小红应付车费为:8元")
else:
    money = 8 + (n - 3) * 2
    print("小红应付车费为:",money,"元")

02. 判定闰年

题目描述

一个年份如果能被4整除但不能被100整除,或者能被400整除,那么这个年份就是闰年

输入输出描述

输入一个年份

输出Yes表示该年份为闰年,No则表示不是闰年

示例1

输入:

2008

输出:

Yes

示例2

输入:

2002

输出:

No

#设置容错
try:
#输入一个年份
    year = int(input("请输入要判断的年份:"))

#设置判断方式
#筛选符合闰年条件的
    if year % 400 == 0:
       print("Yes")
    elif year % 4 == 0 and year % 100 != 0:
        #  and 表示 并列关系 ! 表示  非
        print("Yes")
    #筛出不符合条件的
    else:
        print("No")
except:
    print("输入的数据有误 请重新输入")

03. 未来周几

题目描述

输入表示今天是一周内哪一天的数字(星期天是0,星期一是1,…,星期六是6)

并输入今天之后到未来某天的天数,然后输出该天是星期几

输入描述

分别输入两个数据,表示今日星期几的数字和未来某天的天数

输出描述

输出未来某天是星期几

示例1

输入:

1

3

输出:

星期四

示例2

输入:

0 31

输出:

星期三

#容错管理
try:
    #定义长量
    week = 7

    # 输入今天是星期几
    now_week = int(input("请输入今天是星期几:"))

    #输入未来某天的天数
    day = int(input("请输入未来某天的天数:"))

    #设置算法
    yu_day = day % week
    yu_day = int(yu_day)
    future_day = now_week + yu_day
    future_day = int(future_day)
    if future_day > 7:
        future_day = future_day - 7
        print("未来某天是星期", future_day)
    else:
     print("未来某天是星期", future_day)

except:
    print("输入的数据有误 请重新输入")

04. 方程求解

题目描述

如有一个2×2的线程方程组:
a x + b y = e c x + d y = f ax+by=e \\ cx+dy=f ax+by=ecx+dy=f
你可以使用克莱姆法则解该线性方程:
x = e d − b f a d − b c , y = a f − e c a d − b c x=\frac{ed-bf}{ad-bc},y=\frac{af-ec}{ad-bc} x=adbcedbf,y=adbcafec
其中 a d − b c ad-bc adbc为判别式,如果为零则输出无解

输入输出描述

输入a、b、c、d、e、f六个数据,数据之间用空格分隔

输出两行,第一行x的解,第二行y的解,保留一位小数

示例1

输入:

9.0 4.0 3.0 -5.0 -6.0 -21.0

输出:

-2.0

3.0

示例2

输入:

1.0 2.0 2.0 4.0 4.0 5.0

输出:

无解

#容错管理
from colorsys import yiq_to_rgb

try:
    # 输入对应的6个数据
    a = float(input("请输入数据a的值:"))
    b = float(input("请输入数据b的值:"))
    c = float(input("请输入数据c的值:"))
    d = float(input("请输入数据d的值:"))
    e = float(input("请输入数据e的值:"))
    f = float(input("请输入数据f的值:"))

    if a*d-b*c == 0:
        print("该方程无解")
    else:
        # 写出对应的公式
        x = (e * d - b * f) / (a * d - b * c)
        y = (a * f - e * c) / (a * d - b * c)

        x = float(x)
        y = float(y)

        # 输出对应的解
        print("x的解为:", x)
        print("y的解为:", y)

except:
    print("输入的数据有误 请重新输入")

05. 三角形周长

题目描述

输入三角形三边的长度,如果输入合法则计算周长并输出结果;否则输出非法

如果任意两边之和大于第三边则输入都是合法的

输入输出描述

输入三个数据表示三边,数据之间用空格分隔

输出三角形的周长,如果非法则输出非法

示例1

输入:

1 1 1

输出:

3

示例2

输入:

1 3 1

输出:

非法

#容错管理
try:
    # 输入三角形的三边
    a = float(input("请输入三角形的一条边"))
    b = float(input("请输入三角形的一条边"))
    c = float(input("请输入三角形的一条边"))

    if a+c >b and a+b>c and b+c>a:
        C=a+b+c
        C=float(C)
        print("三角形的周长为:", C)
    else:
        print("非法")

    #输出三角形的周长


except:
    print("输入的数据有误 请重新输入")

06. 图形构建

题目描述

输入一个整数n,按照下面的格式输出n行满足规律的数据

输入描述

输入一个整数n,表示输出n行数据

输出描述

输出满足规律的数字组成的图形(示例中的几种模式分别输出)

示例

模式A
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
模式B
1 2 3 4 5 6
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1
模式C
          1
        2 1
      3 2 1
    4 3 2 1
  5 4 3 2 1
6 5 4 3 2 1
模式D
1 2 3 4 5 6
  1 2 3 4 5
    1 2 3 4
      1 2 3
        1 2
          1
          
#模式A
#定义常量
x = 1
#设置列数的循环
while x <= 6:
    # 设置行的循环
    y = 1
    while y <= x:
        print(y," ",end="")
        y +=1
    print("")
    x +=1
print("")
#模式B
#定义常量
x = 1
#设置列数的循环
while x <= 6:
    # 设置行的循环
    y = 1
    while y <= 6-x+1:
        print(y," ",end="")
        y +=1

    print("")
    x +=1
print("")

#模式C
#定义常量
x = 1
#设置列数的循环
while x <= 6:
    # 设置行的循环
    y = 6
    while y != 0 :
        if y > x:
            print(" ", end="")
        else:
            print(y,end="")
        y -= 1
    print("")
    x +=1
print("")

#模式D
# 只是需要再模式B的基础上每行添加对应行数的空格就行
#定义常量
x = 1
#设置列数的循环
while x <= 6:
    #在输出y之前添加对应数量的空格
    z = 1
    while z < x:
        print(" ",end="")
        z += 1
    # 设置行的循环
    y = 1
    while y <= 6-x+1:
        print(y,end="")
        y +=1

    print("")
    x +=1
print("")

#模式E(实验模型)
#定义常量
x = 1
#设置列数的循环
while x <= 6:
    # 设置行的循环
    y = 1
    while y != 7 :
        if  x > y :
            print(" ", end="")

        else:
            print(y, end="")
        y += 1
    print("")
    x +=1
print("")

07. 判断素数

题目描述

一个大于1的整数如果只能被正整数1和它本身整除,则它就是素数,例如2、3、5和7都是素数,而4、6、8、9则不是

输入描述

输入一个大于1的正整数

输出描述

输出Yes表示该数字是素数,否则输出No

示例1

输入:

9

输出:

No

示例2

输入:

11

输出:

Yes

#容错管理
try:
    #设置常量
    first = 2
    parameter = 0
    #输入一个大于1的正整数
    math = int(input("请输入一个大于1的正整数"))

    #设置检验素数的方式
    while first < math:
        if math % first == 0:
            parameter = 1
        first = first +1
    #输出是否为素数
    if parameter ==1:
        print("No")
    else:
        print("Yes")

except:
    print("输入数据有误 请重新输入")

08. 最大公约数

题目描述

输入两个正整数,计算其最大公约数,例如4和2的最大公约数是2,16和24的最大公约数是8

输入描述

输入两个数字

输出描述

输出最大公约数

示例1

输入:

16 24

输出:

8

示例2

输入:

7 3

输出:

1

#定义常量
c = 0
#输入两个正整数
a = int(input("请输入第一个正整数:"))
b = int(input("请输入第二个正整数:"))
#设置计算最大公约数的算法
#以下是采用辗转相除发来计算最大公约数
#首先判断一下 a 和 b 的大小
if a >= b:
    a = a
    b =b
else:
    c = a
    a = b
    b = c
    #开始使用辗转相除法
    #开始循环
while b!=0:
    d = a % b
    a = b
    b = d
   #也可以写成这种  a , b = b , d  用来交换数据的值
print("输出最大公约数是",a)
#计算最小公倍数的话 只需要把 a*b /最大公约数即可

09. 计算π

题目描述

你可以使用下面的数列近似计算π
π = 4 ( 1 − 1 3 + 1 5 − 1 7 + 1 9 − 1 11 + . . . + ( − 1 ) i + 1 2 i − 1 ) π=4(1-\frac{1}{3}+\frac{1}{5}-\frac{1}{7}+\frac{1}{9}-\frac{1}{11}+...+\frac{(-1)^{i+1}}{2i-1}) π=4(131+5171+91111+...+2i1(1)i+1)
当i越大时,计算结果越近似于π

#定义常量
x=1
m=2
#输入要用多少个项数进行计算
i = int(input("请输入要使个项进行计算:"))
#这个是一个全局变量 在后面要用 所以定义在循环外面
p = 0
#开始循环
while x <= i:
    #设置类加 针对项数 改变对应的符号
    p = p + 1/x * (-1)**m
    #采用 2 进行递增
    x +=2
    #改变符号的关键
    m+=1
#计算最后兀 的值
pi = 4 * p
#输出得到兀的值 输入i 的值越大 最后得到的pi值越准确
print("兀 的值为:",pi)

10. 排列组合

题目描述

在数字范围[1,7]之间,任意选择两个不相同的数作为一个组合,输出每一组组合,并统计所有组合的个数

注:组合(a,b)与组合(b,a)算同一种组合,只记录一次


#定义常量
x = 1
n = 0
#开始第一个循环
while x <=7:
    y = x
    while x <= y <= 7:
        print("组合有:",(x,y))
        n +=1
        y += 1
    x+=1
print("所有组合的个数为:",n)

拓展作业

w01.计算e

题目描述

你可以使用下面的数列近似计算e
e = 1 + 1 1 ! + 1 2 ! + 1 3 ! + 1 4 ! + . . . + 1 i ! e=1+\frac{1}{1!}+\frac{1}{2!}+\frac{1}{3!}+\frac{1}{4!}+...+\frac{1}{i!} e=1+1!1+2!1+3!1+4!1+...+i!1
当i越大时,计算结果越近似于e

#定义常量
x = 1  #定义一个初始值
jie = 1 #定义阶乘运算的初始值
y = 1 #用于计算累加的变量
e = 1 #e 的初始值
m = 1 # 用于计算阶乘的变量
#输入对应的i值
i = int(input("请要计算的阶乘的项数-1为:"))
#设置累加的循环
while y != i:
    # 设置阶乘的计算
    while x != m + 1:
        jie = jie * x
        x += 1
    #累加计算
    e = e +1/jie
    #多项
    y +=1
    #多项的递增
    m +=1
#输出e的值
print("请输入e的近似值为:",e)
#这里的m 和 y 可以改为一个变量使用 但二者虽然变化相同 但毕竟意义不一样

w02.组合

题目描述

有1、2、3、4这个四个数字,能组成多少个互不相同且无重复数字的三位数?分别又是多少?

#定义常量
x = 1
n = 0
#开始第一个循环,进行第一位的选择
while 0 < x < 5:
    # 开始第二个循环,进行第二位的选择
    y = x+1
    while x < y < 5:
        # 开始第三个循环,进行第三位的选择
        z = y + 1
        while y < z < 5:
            print("组合有:", (x, y, z))
            z += 1
            n +=1
        y += 1
    x+=1
#输出所有组合的个数
print("所有组合的个数为:",n)

w03.水仙花

题目描述

水仙花数,是一个三位数,且这个数的个位、十位和百位的立方和等于该数字本身,例如 153 = 1 3 + 5 3 + 3 3 153=1^3+5^3+3^3 153=13+53+33

编写程序,输出所有的水仙花数


    #输入一个三位数
    math_three = int(input("请输入一个三位数:"))
    #分别去除各个位上的数字
    #百位
    hundred_math = math_three // 100
    #十位
    ten_math = math_three % 100 //10
    #个位
    one_math = math_three % 100 % 10
    if  hundred_math ** 3 + ten_math ** 3 + one_math  ** 3 == math_three:
        print("这个三位数是水仙花数:", math_three)
    else:
        print("这个三位数不是水仙花数")
except:
    print("输入的三位数有误,请重新输入")

w04.进制

题目描述

编写代码,实现十进制数据转换二进制、二进制转换十进制、十进制转换十六进制、十六进制转换十进制的代码实现

输入描述

输入一个原始数据

输出描述

输出一个转换后的数据

示例

输入一个数据(十进制): 3

输出(二进制):11

# 输入数据
d = int(input("请输入一个十进制数:"))
print("输入的十进制数",d)

# 循环求解(因为不知道迭代多少次,使用死循环)
b = ""
while True:  #不设置循环的界限 采用 break进行循环停止
    res = d // 2  # 整除的结果,用于下一次整数2
    remainder = d % 2 # 余数,用于拼接字符串
    b = str(remainder) + b # 拼接字符串(二进制)
    if res == 0:
        print("求解结束")
        break
    # 将整数结果赋值给d
    d = res
print(f"转换后的二进制:{b}")

http://www.kler.cn/a/371071.html

相关文章:

  • C++算法第十五天
  • 蓝桥杯备赛:顺序表和单链表相关算法题详解(上)
  • 工程水印相机结合图纸,真实现场时间地点,如何使用水印相机,超简单方法只教一次!
  • C++实现设计模式---备忘录模式 (Memento)
  • MMDetection框架下的常见目标检测与分割模型综述与实践指南
  • Windows核心编程—匿名管道双向通信
  • Android -- 调用系统相册之图片裁剪保存
  • java-web-day5
  • 科东软件荣获2024年广州科技创新创业大赛轨道交通行业赛“创新突围奖”
  • 有符号除法 简单的带小数计算及权重约束_2024年10月7日
  • Java Lock CountDownLatch 总结
  • 机器人转人工时,开启实时质检(mod_cti基于FreeSWITCH)
  • 计算机网络IP地址分类,子网掩码,子网划分复习资料
  • kafka 的高可用机制是什么?
  • zabbix 6.0 监控clickhouse(单机)
  • Spring 启动流程分析
  • 橘子多开同步器 v6.0 免费版
  • Redis-README官方入门文档
  • 【JSON相关漏洞(Hijacking+Injection)挖掘技巧及实战案例全汇总】
  • 基于Qt的多线程并行和循序运行实验Demo
  • yolov8环境搭建+训练自己的数据集
  • Notepad++如何同时检索多个关键字
  • 单目相机标定
  • PG数据库之视图详解
  • React写关键字高亮的三个方案
  • Node.js:内置模块