Python第141题:非平凡的数字消除分数【PythonTip题300】

Python第141题:非平凡的数字消除分数【PythonTip题300】

首页休闲益智数字消除计划更新时间:2024-05-11

1、编程试题:

数字消除分数是指分子和分母中的一个公共数字可以被"消除",得到的分数保持与原分数相同的值。

例如49/98 = 4/8 在这里,看起来数字9被消除了,得到的分数也是正确的。

如果数字消除分数满足以下条件,那么它们被认为是平凡的:

零被消除。例如,30/50 = 3/5是一个数字消除分数,但由于被消除的数字是0,所以它是平凡的。

分数的值大于一。例如,64/16 = 4/1是一个数字消除分数,但由于它的值大于1,所以它是平凡的。

编写一个程序,验证给定的分数是否是非平凡的数字消除分数。

定义函数is_nontrivial_digit_cancelling(),带有两个参数numerator(分子)和denominator(分母),且均为整数。

在函数内部,检查分数numerator/denominator是否是非平凡的数字消除分数。

如果分数是非平凡的数字消除分数,则返回True,否则返回False。

示例输入

19

95

示例输出

True

解释:

19/95 = 0.2 = 1/5 ,5被消除了,且0.2 < 1。

2、代码实现:

可编辑代码 如下:

#!/usr/bin/python3.9 # -*- coding: utf-8 -*- # # Copyright (C) 2024 , Inc. All Rights Reserved # # @Time : 2024/3/7 21:14 # @Author : fangel # @FileName : 141. 非平凡的数字消除分数.py # @Software : PyCharm def is_nontrivial_digit_cancelling(numerator, denominator): numeratorStr = str(numerator) denominatorStr = str(denominator) for i in numeratorStr: for j in denominatorStr: if i == j: # 如果i==j且0被消除,说明是平凡的 if i == "0": return False # 否则消除 else: numeratorStr = numeratorStr.replace(i, "") denominatorStr = denominatorStr.replace(j, "") # 分数的值小于1说明是非平凡的 if float(int(numeratorStr) / int(denominatorStr)) < 1: return True else: return False # 获取用户输入 numerator = int(input()) denominator = int(input()) # 调用函数 print(is_nontrivial_digit_cancelling(numerator, denominator))

3、代码分析:

本例比较简单,详见代码注释部分;删除一个数可以用replace方法,将该值替换为空即可;

4、运行结果:

输入:

49

98

输出:

True

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved