Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如果没有读取最后一个函数,则返回PowerShell

如果没有读取最后一个函数,则返回PowerShell
EN

Stack Overflow用户
提问于 2019-02-04 19:25:28
回答 2查看 85关注 0票数 1

当打印出函数时,它只打印被3和5整除的函数,而不打印被15整除的函数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function Print-Numbers-Weird ([int]$count) {
    for ($i=1; $i -le $count; $i++) {
        $isdivisibleby3  = $i % 3 -eq 0
        $isdivisibleby5  = $i % 5 -eq 0
        $isdivisibleby15 = $i % 15 -eq 0

        if ($isdivisibleby3) {
            Write-Host $i "- divisibleby3"
        } elseif ($isdivisibleby5) {
            Write-Host $i "- divisibleby5"
        } elseif ($isdivisibleby15) {
            Write-Host $i "- divisibleby15"
        } else {
            Write-Host $i
        }
    }
}
EN

回答 2

Stack Overflow用户

发布于 2019-02-05 04:53:02

Ansgar Wiechers在一条评论中提供了关键的指针:

可以被15整除的

数也可以被3整除,因此您的代码永远不会到达$isdivisibleby15子句,因为$isdivisibleby3子句首先匹配。

Olaf指出您的问题是"FizzBuzz" job-interview question的PowerShell化身,而UnhandledExcepSean指出首先执行$isdivisibleby15测试可以解决您的问题。

要以PowerShell惯用的方式解决问题,请使用switch statement

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function Get-WeirdNumbers ([int] $count) {
  switch (1..$count) {
    { $_ % 3 -eq 0 }  { "$_ - divisibleby3" }
    { $_ % 5 -eq 0 }  { "$_ - divisibleby5" }
    { $_ % 15 -eq 0 } { "$_ - divisibleby15" }
    default           { $_ }
  }
}

上面的解决方案评估了所有条件(除了只有在没有其他条件匹配的情况下才执行default分支)。这将向您展示某些数字如何多次匹配,即那些既可以被3也可以被5整除的数字,这意味着它们也可以被15整除。

要具体解决"FizzBuzz“问题(为可被3整除的数字打印Fizz,为可被5整除的数字打印Buzz,为可被35整除的数字打印 FizzBuzz,以及所有其他数字本身-即,为每个输入数字打印一个表示):

找到匹配项后,必须将分支安排为按15 first.

  • Processing测试可整除性。
  • 必须跳过其余分支。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function Get-FizzBuzz ([int] $count) {
  switch (1..$count) {
    { $_ % 15 -eq 0 } { "FizzBuzz"; continue }
    { $_ % 5 -eq 0 }  { "Buzz"; continue }
    { $_ % 3 -eq 0 }  { "Fizz"; continue }
    default           { $_ }
  }
}

请注意,如何使用continue跳过对剩余分支的处理。虽然break也是可用的,但它将跳过对任何剩余输入数字的处理,因为输入是一个数字数组。

以下是基于foreach循环的另一种解决方案,该循环再次使用多个条件可以匹配的条件,并结合字符串连接来实现所需的结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function Get-FizzBuzz ([int] $count) {
  foreach ($num in 1..$count) {
    $output = ''
    if ($num % 5 -eq 0) { $output =  'Fizz' }
    if ($num % 3 -eq 0) { $output += 'Buzz' }
    # Output the result
    if ($output) { $output } else { $num }
  }
}
票数 2
EN

Stack Overflow用户

发布于 2019-02-05 07:45:11

这是一个可以与if/elseif一起使用的替代解决方案

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1..100 | %{

    $x = $_

    if($x %15 -eq 0)
    {
        Write-Host "fizzbuzz"
    }elseif($x %3 -eq 0)
    {
        Write-Host "fizz"
    }elseif($x %5 -eq 0)
    {
        Write-Host "buzz"
    }
    else
    {
        Write-Host $x
    }        
}

不过,mklement0的解释是绝对正确的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54523011

复制
相关文章
Groovy on Grails 交流活动
2008 年 InfoQ 交流活动的胶片: http://cid-5b1e02933669f469.skydrive.live.com/redir.aspx?page=browse&resid=5B1
四火
2022/07/15
1.7K0
Groovy on Grails 交流活动
Grails 引发的中文乱码问题
在一个 Grails 项目里面,我想写一个过滤不良信息的 Service,而将过滤的规则放置在 xml 文件之中。
四火
2022/07/15
6460
Grails 引发的中文乱码问题
Grails——赋能敏捷开发的利器
几年前,一个开餐厅的亲戚找我做一个网上订餐的网站(当时外卖平台还没有兴起)。一开始我是拒绝的,因为我的本职工作就是做软件开发的,业余时间真没兴趣再做。而且从头开始做一个网页应用,工程浩大,我也没有这个时间。 一个偶然的机会,我接触到了Grails,通过它几个小时就能构建一个专业的涵盖前、后端的Web应用,于是我尝试着开发那个订餐网站,结果,我利用几个周末仅用了半个人/月的功夫就做好了一个能上线接单并具备后台管理(含基本财务)的网站。刷新了我对软件开发的认知,原来开发一个复杂的含前、后端的Web应用也可以如此地快。 Grails是一个基于JVM的全栈快速Web应用开发框架,类似的框架有著名的Rails,但是它需要用Ruby语言,对于广大的Java开发者,要学习一门新语言显然不现实。于是有人基于Groovy做了Grails,可以理解为Grails = Rails on Groovy。Groovy是JVM三大衍生语言之一,相对于Closure和Scala,它可以视为是Java的简化版和脚本化,学习周期最短,上手只消半天,而且相对于有点老气的Java,动态语言Groovy编程要快速和灵活得多。所以Grails可以说是面向Java开发者的快速开发框架。
Criss@陈磊
2019/08/02
1.9K0
在 Eclipse 中配置 Grails 工程
配置 GRAILS_HOME,注意一定要配置到 build.xml 所在的文件夹:
四火
2022/07/15
1.1K0
在 Eclipse 中配置 Grails 工程
SQLite
  python就内置了SQLite,所以python使用SQLite不需要安装任何东西,直接进行使用。
yaohong
2020/06/19
1.2K0
SQLite 安装
SQLite 的一个重要的特性是零配置的,这意味着不需要复杂的安装或管理。本章将讲解 Windows、Linux 和 Mac OS X 上的安装设置。
子润先生
2021/07/02
1.2K0
Sqlite Queue(Python) – 简单的SQLite队列
基于python实现的sqlite队列,方便的处理sqlite并发。并且包含一个十分简洁好用的SQL语句包装。
KAAAsS
2022/01/14
1.6K0
SQLite 基础
第1页:limit 0, 5 第2页:limit 5, 5 第3页:limit 10, 5 … 第n页:limit 5*(n-1), 5
hrscy
2018/08/30
2.1K0
SQLite Order By
SQLite 的 ORDER BY 子句是用来基于一个或多个列按升序或降序顺序排列数据。
子润先生
2021/07/01
7130
[055][译]Architecture of SQLite
本文档描述了SQLite库的体系结构。这里的信息对于那些想理解或修改SQLite内部工作的人很有用。 附近的图表显示了SQLite的主要组件以及它们如何进行互操作。 下面的文本解释了各种组件的角色。
王小二
2020/06/08
1.4K0
[055][译]Architecture of SQLite
[058]SQLite on Android
SQLite是移动端常用的数据库,我们就来简单介绍一下SQLite在Android上的体系结构。
王小二
2020/07/17
9510
SQLite 简介
本教程帮助您了解什么是SQLite,它与SQL之间的不同,为什么需要它,以及它的应用程序数据库处理方式。
子润先生
2021/07/02
1.9K0
玩转SQLite1:SQLite简介与安装
SQLite,是一个C语言库,诞生于2000年,它实现了一个小型、 快速、 自包含、 高可靠性的SQL数据库引擎,与其他数据库管理系统(如SQL Server或Oracle)的一大区别,是它非常的轻量级(小于500Kb大小)。
xxpcb
2021/12/15
2.1K0
玩转SQLite1:SQLite简介与安装
sqlite入门
SQLite官网: https://www.sqlite.org/index.html
编程随笔
2019/09/11
7690
sqlite入门
SQLite 命令
本章将向您讲解SQLite编程人员所使用的简单却有用的命令。这些命令被称为 SQLite的点命令,这些命令的不同之处在于它们不以分号;结束。
子润先生
2021/07/02
5610
Sqlite介绍
1、SQLite简介 SQLite第一个Alpha版本诞生于2000年5月. 至今已经有4个年头了. 而在今年的5月SQLite也迎来了一个新的里程: SQLite 3. SQLite官方网站: http://www.sqlite.org/ 2、SQLite类型 SQLite的数据类型 首先你会接触到一个让你惊讶的名词: Typelessness(无类型). 对! SQLite是无类型的. 这意味着你可以保存任何类型的数据到你所想要保存的任何表的任何列中, 无论这列声明的数据类型是什么(只有在一种情
张善友
2018/01/26
1.5K0
sqlite 锁机制_SQLite读写为什么冲突
SQLite3总共有三种事务类型:BEGIN [ DEFERRED /IMMEDIATE / EXCLUSIVE ] TRANSCATION,提供以下五种的文件锁状态,按锁的级别依次是:UNLOCKED / SHARED / RESERVERD / PENDING / EXCLUSIVE。
全栈程序员站长
2022/09/22
3.1K0
SQLite操作
create table test (pkey varchar(16) primary key, value varchar(10));
一见
2018/08/07
7480
SQLite Group By
SQLite 的 GROUP BY 子句用于与 SELECT 语句一起使用,来对相同的数据进行分组。
子润先生
2021/07/01
8880
SQLite 语法
SQLite 是遵循一套独特的称为语法的规则和准则。本教程列出了所有基本的 SQLite语法,向您提供了一个SQLite快速入门。
子润先生
2021/07/02
1.2K0

相似问题

在窗体关闭时等待任务完成

10

如何在JOptionPane任务完成后提示SwingWorker

11

单击JOptionPane时按ImageIcon +关闭

11

在Java中完成线程时关闭资源

22

在完成所有任务之前关闭ThreadPoolExecutor

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文