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

复制
相关文章
指定一个创建对象的方法,如果对象存在则直接返回
单例模式确保一个类只有一个实例,只能自己的内部实现实例化,当他人再次实例化时返回第一次实例化的对象。
用户8983410
2021/10/08
3.2K0
mysql技巧:如果记录存在则更新/如果不存在则插入的三种处理方法
新增一个员工时,如果该员工已存在(以员工号f_emp_code作为判断依据),则更新,否则插入。而且工资f_salary,更新时,不得低于原工资(即:工资只能涨,不能降)。
菩提树下的杨过
2018/12/21
9.3K0
vue返回上一页面如果没有上一页面返回首页
参考链接:https://segmentfault.com/q/1010000010714863
蓓蕾心晴
2018/09/20
5.4K1
构造函数没有返回值是怎么赋值的?
众所周知,在java里是不能给构造函数写返回值的,如果在低版本的编译器定义一个构造器写上返回值可能会报错,高版本里面他就是一个普通的方法。可是如果构造函数没有返回值,那么比如Test t = new Test()我们new一个对象的时候是怎么赋值的呢?
帅地
2020/09/28
1.7K0
构造函数没有返回值是怎么赋值的?
构造函数没有返回值是怎么赋值的?
众所周知,在java里是不能给构造函数写返回值的,如果在低版本的编译器定义一个构造器写上返回值可能会报错,高版本里面他就是一个普通的方法。可是如果构造函数没有返回值,那么比如Test t = new Test()我们new一个对象的时候是怎么赋值的呢?
好好学java
2020/12/09
1.7K0
构造函数没有返回值是怎么赋值的?
一个函数返回多个值
第一种方法:函数返回的是一个指针地址(数组地址),这个内存地址有多个变量寄存在里面。这个方法我不太会用,传地址传值我常常搞的淅沥糊涂。
Java架构师必看
2021/03/22
1.4K0
Java构造函数没有返回值,是怎么赋值的?
众所周知,在java里是不能给构造函数写返回值的,如果在低版本的编译器定义一个构造器写上返回值可能会报错,高版本里面他就是一个普通的方法。可是如果构造函数没有返回值,那么比如Test t = new Test()我们new一个对象的时候是怎么赋值的呢?
程序员小猿
2021/01/20
2.1K0
Java构造函数没有返回值,是怎么赋值的?
Exchange Powershell查看用户最后登陆邮箱时间
在Exchange日常管理中,我们可能经常会遇到这样的问题,就是怎么来知道一个用户最后的登录时间?这个问题在使用Exchange powershell就能很好的解决了。
李珣
2019/03/14
2.7K0
nginx设置header如果没有值
map 指令是由 ngx_http_map_module 模块提供的,默认情况下安装 nginx 都会安装该模块。
十毛
2022/08/23
1.4K0
nginx设置header如果没有值
C++核心准则C.40:如果类包含不变式,则定义构造函数
C.40: Define a constructor if a class has an invariant
面向对象思考
2020/03/25
4020
如果没有 IDE,该如何 Debug?
写代码时噼里啪啦,一顿操作猛如虎,一运行,发现不是 error 就是 exception,这是程序员经常遇到的场景,解决它就需要一步步去排错,排错的这个过程叫做 Debug。
somenzz
2021/11/19
4060
如果没有 IDE,该如何 Debug?
C++核心准则讨论:如果一个类是资源句柄,则它需要一个构造函数,一个析构函数以及复制和/或移动操作
讨论:如果一个类是资源句柄,则它需要一个构造函数,一个析构函数以及复制和/或移动操作
面向对象思考
2020/12/31
5520
C++核心准则讨论:如果一个类是资源句柄,则它需要一个构造函数,一个析构函数以及复制和/或移动操作
Optional没有peek函数?自己写一个
好动与不满足是进步第一必需品。——爱迪生 我发现Optional竟然没有类似于Stream里的peek函数 那我就只好自己写一个了。。。 但Optional由final修饰没法继承,那我复制一个出来改个名字好了 package com.ruben.utils; import java.util.NoSuchElementException; import java.util.Objects; import java.util.function.Consumer; import java.util.
阿超
2022/08/16
5430
函数返回指针
先写一个例子,运行一下看看 #include <stdio.h> int add(int a, int b) { printf("a = %d b = %d\n", &a, &b);
用户7272142
2023/10/11
1110
函数返回指针
返回函数
一个函数可以返回一个计算结果,也可以返回一个函数 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回 返回一个函数时,牢记该函数并未执行,返回函数中不要引用任何可能会变化的变量
py3study
2020/01/17
1.2K0
如果13亿人人手一个,从此没有一个正常人
记得镁客君小的时候曾经听过一则神话,一位老仙人拥有一个神奇的技能,可以点石成金!那时候起就在想若是有朝一日盼的仙人来,那可得把这门绝技学会!不说多,点张纸成一毛钱我也愿意! 蚂蚱也是肉呢 镁客君是十
镁客网
2018/05/28
4430
【Python】函数 ③ ( 函数返回值定义语法 | 函数返回多个返回值 | 代码示例 )
在 Python 函数中 , 通过 return 关键字 , 可以返回一个结果给调用者 , 这个返回结果就是 函数返回值 ;
韩曙亮
2023/10/11
7340
【Python】函数 ③ ( 函数返回值定义语法 | 函数返回多个返回值 | 代码示例 )
函数的返回值指向一个指针
函数的返回值类型必须与函数体内的返回表达式的类型相匹配。如果类型不匹配,编译器会报错。此外,C 语言中的函数只能返回一个值,如果需要返回多个值,可以使用结构体或指针等方式来实现。
云深无际
2023/05/24
6940
函数的返回值指向一个指针
点击加载更多

相似问题

如果函数中没有参数,则返回错误

22

如果没有单击事件,则返回函数。

417

Access SQL语句:如果没有有效的条目,则返回最后一个条目

224

如果使用AddParameter,则Powershell Invoke()返回空

15

如果没有结果,则返回MySQL

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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