gpt4 book ai didi

python - 从 Python 到 R 的 if-else 函数

转载 作者:行者123 更新时间:2023-12-01 07:24:29 24 4
gpt4 key购买 nike

我看过this video并写下代码。代码应将除法中出现的重复小数放在括号内。今天我尝试将它从Python翻译成R,但是我对ifelsewhilefunction的了解总体上并没有我希望的那么好为了。在下面,您可以看到我已经尝试过的步骤以及我已经走了多远,但我现在需要以下`while命令部分的帮助。

rep_dec = function(num,den){
neg = FALSE
if (den == 0){
return("Undefined")
} else if (num == 0){
return("0")
} else if (num*den < 0){
neg = TRUE
} else if (num%%den == 0){
return(as.character(num/den))
}
numerator = abs(num)
denominator = abs(den)
paste("",(numerator%/%denominator),".")

results = list(0)
while (TRUE){
remainder = numerator %% denominator
numerator = remainder * 10
quotient = numerator %/% denominator
if ([numerator,quotient]%!in% results){

}

[视频中的 Python 代码:]

def repeating_decimals(num,den):

if den == 0:
"Undefined"
if num == 0:
"0"
neg = False
if num*den < 0:
neg = True
if num % den == 0:
return str(num / den)

numerator = abs(num)
denominator = abs(den)

output = ""
output += str(numerator // denominator)
output += "."
print(output)

num_q = []
while True:
rem = numerator % denominator
if rem == 0:
for element in num_q:
output+= str(element[-1])
break
numerator = rem * 10
q = numerator // denominator
if [numerator, q] not in num_q:
num_q.append([numerator, q])
elif [numerator, q] in num_q:
ind = num_q.index([numerator, q])
for element in num_q[:ind]:
output+=str(element[-1])
output+= "("
for element in num_q[ind:]:
output+= str(element[-1])
output+=")"
break
print(output)

repeating_decimals(1,7)

如果有人可以帮助我“将此 Python 代码”翻译为“R 代码”,我将在下一步中更深入地了解更复杂的功能我想找到在数字前面添加“-”的解决方案,看看我是否正确添加到 ifelse 语句中。

最佳答案

在 R 中,模数采用 %% 形式,这样您的代码就可以工作。

rep_dec = function(num,den){
neg = FALSE
if (den == 0){
return("Undefined")
} else if (num == 0){
return("0")
} else if (num*den < 0){
neg = TRUE
} else if (num%%den == 0){
return(as.character(num/den))
}
numerator = abs(num)
denominator = abs(den)
output=paste0("",(numerator%/%denominator),".")

num_vect=c()
quo_vect=c()

while (TRUE){
remainder = numerator %% denominator
numerator = remainder * 10
quotient = numerator %/% denominator

if(remainder==0)
{
for(q in quo_vect)
{
output=paste0(output,q)
}
break
}
position <- which(num_vect==numerator & quo_vect==quotient)
if ( length(position)==0 ){
num_vect=c(num_vect,numerator)
quo_vect=c(quo_vect,quotient)
}
else
{
position=position[1]
for (element in quo_vect[1:position])
{
output=paste0(output,element)
output=paste0(output,"(")
for (element in quo_vect[position:length(quo_vect)]){
output=paste0(output,element)
}
output=paste0(output,")")
}
break
}
}
return(output)
}

rep_dec(33,4) #"8.25"

rep_dec(20,4) #"5"

rep_dec(10,3) #"3.3(3)"

这或多或少应该可以满足您的需要,因为我无法测试可能存在一些拼写错误。要学习 R,我真的鼓励您查看我使用的函数的文档。与 python 的主要区别在于,我使用两个向量 num_vectquo_vect,而不是像 python 中那样使用数组的数组。事实上,R 中不存在数组的数组(我可以使用 data.frame 或矩阵来代替)。

关于python - 从 Python 到 R 的 if-else 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57525921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com