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