草庐IT

spark实训题 -- Scala基础编程【1】

⚆Pearl 2023-04-24 原文

目录

实训目的

实训1:编写函数过滤文本中的回文单词

1. 训练要点

2.需求说明

3.思路及步骤

 实训2:使用Scala编程输出杨辉三角

1. 训练要点

2.需求说明

3.思路及步骤

 实训3:用Scala编程求出100~999之间的所有水仙花数。


实训目的

( 1)掌握Scala的REPL使用。

(2)掌握Scala的Array、List、Map等创建与使用。

(3)掌握Scala循环与判断的使用。

( 4)掌握Scala函数式编程。


实训1:编写函数过滤文本中的回文单词

1. 训练要点

  1. 函数的定义。
  2. 方法的调用。

2.需求说明

    回文是指正向和逆向读起来相同的词。例如“mom”和“dad”。编写一个函数用来测试单词是否是回文,若是则打印出该单词。提示: String的revere方法在此处会很有用。

3.思路及步骤

( 1 )定义函数isPalindrom(word:String)。

(2)在丽数中判断单词正向与逆向是否样,若是则打印。

( 3 )测试函数。

实现源代码:

scala> def isPalindrom(word:String):Unit={

      val word2=word.reverse

        if(word==word2){

          println(word+"  is palindrom!")

        }

      }



scala> isPalindrom("aba")

运行结果截图:


 实训2:使用Scala编程输出杨辉三角

1. 训练要点

(1) Scala函数的运用。

(2) Scala 循环的使用。

2.需求说明

     杨辉三角(帕斯卡三角形)是二项式系数在三角形中的一种集合排列, 在我国南宋数学家杨辉于1261年所著的(详解九章算法》一书里就已经记载了。

一些基本的关系,如下所示:

(1)每个数字都是它上方两数之和。

(2)两侧最外围是由数字1组成。

(3)其余数则是其肩上两个数的和。

结合实际,运用Scala编程实现指定层杨辉三角的输出。

3.思路及步骤

    (1)定义一一个取值函数pascal, 得到指定行列的值。杨辉三角的性质决定了除左右两边等于1外,元素的值等于其肩上两数的和,即Value(row,column) = Value(rows,column-1)+Value(rows-1,column-1)。当行和列的值越来越小时达到终止条件。

(2)以行为分界,打印每个元素的值。

源代码:

[root@node1 scala]# vi test1.scala



object test {

  def main(args: Array[String]) {

    val a =Array.ofDim[Int](10,10)

    for(i<- 0 until a.length){

          a(i)(0)=1

          a(i)(i)=1

    }

    for(i <-2 until a.length ){

      for(j <-1 until a(i).length){

        a(i)(j)=a(i-1)(j-1)+a(i-1)(j)

      }

    }

    for(i <-0 until a.length){

      for(j <- 0 until a(i).length  if j<=i){

         print(a(i)(j)+"\t")

      }

      println()

    }

  }

}


[root@node1 scala]# scala test1.scala


运行结果截图:


 实训3:用Scala编程求出100~999之间的所有水仙花数。

    题目:水仙花数是指其个位、十位、百位3个数的立方和等于这个数本身,请用Scala编程求出100~999之间的所有水仙花数。

(1)、源代码

scala>def narcissus():Unit={

        for(number<-100 to 999){

        val a=number/100

        val b=number%100/10

        val c=number%100%10

        if(a*a*a+b*b*b+c*c*c==number){

          print(number+" ")

        }

      }

      }



scala>narcissus()

(2)、运行结果截图:

有关spark实训题 -- Scala基础编程【1】的更多相关文章

  1. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

  2. ruby - 分布式事务和队列,ruby,erlang,scala - 2

    我有一个涉及多台机器、消息队列和事务的问题。因此,例如用户点击网页,点击将消息发送到另一台机器,该机器将付款添加到用户的帐户。每秒可能有数千次点击。事务的所有方面都应该是容错的。我以前从未遇到过这样的事情,但一些阅读表明这是一个众所周知的问题。所以我的问题。我假设安全的方法是使用两阶段提交,但协议(protocol)是阻塞的,所以我不会获得所需的性能,我是否正确?我通常写Ruby,但似乎Redis之类的数据库和Rescue、RabbitMQ等消息队列系统对我的帮助不大——即使我实现某种两阶段提交,如果Redis崩溃,数据也会丢失,因为它本质上只是内存。所有这些让我开始关注erlang和

  3. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  4. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  5. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  6. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  7. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

  8. ruby - 如何以编程方式删除实例上的 "singleton information"以使其编码(marshal)? - 2

    我创建了一个由于“在运行时执行的单例元类定义”而无法编码的对象(这段代码的描述是否正确?)。这是通过以下代码执行的:#defineclassXthatmyusesingletonclassmetaprogrammingfeatures#throughcallofmethod:break_marshalling!classXdefbreak_marshalling!meta_class=class我该怎么做才能使对象编码正确?是否可以从对象instance_of_x的classX中“移除”单例组件?我真的需要一个建议,因为我们的一些对象需要通过Marshal.dump序列化机制进行缓存。

  9. Ruby 元编程问题 - 2

    我正在查看Ruby日志记录库Logging.logger方法并从sourceatgithub提出问题与这段代码有关:logger=::Logging::Logger.new(name)logger.add_appendersappenderlogger.additive=falseclass我知道类 最佳答案 这实际上删除了方法(当它实际被执行时)。这是确保close不会被调用两次的保障措施。看起来好像有嵌套的“class 关于Ruby元编程问题,我们在StackOverflow上找到一

  10. ruby - Paperclip:以编程方式分配图像并设置其名称 - 2

    使用Paperclip,我想从这样的URL抓取图像:require'open-uri'user.photo=open(url)问题是我最后得到一个像“open-uri20110915-4852-1o7k5uw”这样的文件名。有什么方法可以更改user.photo上的文件名?作为一个额外的变化,Paperclip将我的文件存储在S3上,所以如果我可以在初始分配中设置我想要的文件名就更好了,这样图像就会上传到正确的S3key。像这样:user.photo=open(url),:filename=>URI.parse(url).path 最佳答案

随机推荐