求帮忙把一段python代码转为C#代码

年轻的程序员小唐 2020-07-13 04:26:57
def Chauvenet(v):
c = {5:1.65, 6:1.73, 7:1.8, 8:1.86, 9:1.92, 10:1.96, 11:2, 12:2.03}
n = len(v)
ave = getAve(v)
stdDev = getStdDev(v)
if len(v) < 5:
print("数据少于5个,请检查")
else:
Xmin = ave - (c[n]*stdDev)
Xmax = ave + (c[n]*stdDev)
nv = []
bv = []
for i in range(n):
if Xmin < v[i] < Xmax:

nv.append(v[i])
else:
bv.append(v[i])

if len(bv) == 0:
print(str(v))
print("该数据没有坏值")
print()
return nv
else:
print(str(v))
print("该数据有坏值,分别是:")
for i in range(len(bv)):
print(bv)
print()
return Chauvenet(nv)

...全文
348 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ddd78986 2020-10-08
  • 打赏
  • 举报
回复
OK 谢谢
  • 打赏
  • 举报
回复
引用 4 楼 ddd78986 的回复:
求帮忙把一小段python换成c#:救救一只小菜鸟,搞了很久错误很多,有大佬愿意帮个忙吗
建议你自己开帖子问哦,因为我这个帖子已经结贴了,一般就不会刷在论坛的提问板块上了,你可以自己发个帖子,更容易有人回答你
ddd78986 2020-10-08
  • 打赏
  • 举报
回复
求帮忙把一小段python换成c#:救救一只小菜鸟,搞了很久错误很多,有大佬愿意帮个忙吗
class HelloWorldHandler:
def ping(self):
return "pong"
def say(self, msg):
ret = "Received: " + msg
print ret
return ret
#创建服务端
handler = HelloWorldHandler()
processor = HelloWorld.Processor(handler)
#监听端口
transport = TSocket.TServerSocket("localhost", 9090)
#选择传输层
tfactory = TTransport.TBufferedTransportFactory()
#选择传输协议
pfactory = TBinaryProtocol.TBinaryProtocolFactory()
#创建服务端
server = TServer.TSimpleServer(processor, transport, tfactory, pfactory)
  • 打赏
  • 举报
回复
引用 1 楼 欧皇神降术 的回复:
public static List<double> Chauvenet(List<double> v) {
            Dictionary<int, double> c = new Dictionary<int, double>() {
                { 5,1.65},
                { 6,1.73},
                { 7,1.8},
                { 8,1.86},
                { 9,1.92},
                { 10,1.96},
                { 11,2},
                { 12,2.03},
            };
            int n = v.Count;
            var ave = v.Sum() / n;
            double Xmin =0, Xmax = 0;
            double stdDev = getStdDev(v);
            if (n < 5)
            {
                Console.WriteLine("数据少于5个,请检查");
            }
            else {
                Xmin = ave - (c[n] * stdDev);
                Xmax = ave + (c[n] * stdDev);
            }
            List<double> nv = new List<double>();
            List<double> bv = new List<double>();
            for (var i = 0; i < n; i++) {
                if (Xmin < v[i] && v[i] < Xmax)
                {
                    nv.Add(v[i]);
                }
                else {
                    bv.Add(v[i]);
                }
            }
            if (bv.Count == 0)
            {
                Console.WriteLine(string.Join("", v));
                Console.WriteLine("该数据没有坏值");
                Console.WriteLine();
                return nv;
            }
            else {
                Console.WriteLine(string.Join("", v.Select(x => x.ToString())));
                Console.WriteLine("该数据有坏值,分别是:" + string.Join(Environment.NewLine, bv));
                Console.WriteLine();
            }
            return Chauvenet(nv);
        }

        /// <summary>
        /// 标准差
        /// </summary>
        /// <param name="v"></param>
        /// <returns></returns>
        private static double getStdDev(List<double> numberList)
        {
            double ave = numberList.Sum() / numberList.Count;
            double sumOfSquare = 0; //平方总和
            foreach (var item in numberList)
            {
                sumOfSquare += Math.Pow((item - ave),2);
            }
            return Math.Sqrt(sumOfSquare / (numberList.Count - 1));
        }
万分感谢!!! 通过你的改写我理解了这段代码的意思!
  • 打赏
  • 举报
回复
万分感谢!!! 通过你的改写我理解了这段代码的意思!
欧皇神降术 2020-07-13
  • 打赏
  • 举报
回复
public static List<double> Chauvenet(List<double> v) {
Dictionary<int, double> c = new Dictionary<int, double>() {
{ 5,1.65},
{ 6,1.73},
{ 7,1.8},
{ 8,1.86},
{ 9,1.92},
{ 10,1.96},
{ 11,2},
{ 12,2.03},
};
int n = v.Count;
var ave = v.Sum() / n;
double Xmin =0, Xmax = 0;
double stdDev = getStdDev(v);
if (n < 5)
{
Console.WriteLine("数据少于5个,请检查");
}
else {
Xmin = ave - (c[n] * stdDev);
Xmax = ave + (c[n] * stdDev);
}
List<double> nv = new List<double>();
List<double> bv = new List<double>();
for (var i = 0; i < n; i++) {
if (Xmin < v[i] && v[i] < Xmax)
{
nv.Add(v[i]);
}
else {
bv.Add(v[i]);
}
}
if (bv.Count == 0)
{
Console.WriteLine(string.Join("", v));
Console.WriteLine("该数据没有坏值");
Console.WriteLine();
return nv;
}
else {
Console.WriteLine(string.Join("", v.Select(x => x.ToString())));
Console.WriteLine("该数据有坏值,分别是:" + string.Join(Environment.NewLine, bv));
Console.WriteLine();
}
return Chauvenet(nv);
}

/// <summary>
/// 标准差
/// </summary>
/// <param name="v"></param>
/// <returns></returns>
private static double getStdDev(List<double> numberList)
{
double ave = numberList.Sum() / numberList.Count;
double sumOfSquare = 0; //平方总和
foreach (var item in numberList)
{
sumOfSquare += Math.Pow((item - ave),2);
}
return Math.Sqrt(sumOfSquare / (numberList.Count - 1));
}

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧