说出数字 - Sololearn Go 挑战

Say The Numbers - Sololearn Go Challenge

我目前正在使用 SoloLearn 应用程序学习围棋。
挑战是:
以0-10范围内的3个数字作为输入并输出相应的英文文本
测试用例 #1测试用例 #3测试用例 #4 #测试用例 #5 成功。
但是我在总结 Test Case #2Test Case #6.
时遇到问题 预先感谢您的帮助。

package main
import "fmt"

func main() {
   
   for i:=0;i<3;i++ {
   var x int
   fmt.Scanln(&x)

   if (x>=0 && x<10) {
  
       switch x {
          case 0:
            fmt.Print("Zero")
          case 1:
            fmt.Print("One")
          case 2:
            fmt.Print("Two")
          case 3:
            fmt.Print("Three")
          case 4:
            fmt.Print("Four")
          case 5:
            fmt.Print("Five")
          case 6:
            fmt.Print("Six")
          case 7:
            fmt.Print("Seven")
          case 8:
            fmt.Print("Eight")
          case 9:
            fmt.Print("Nine")
          case 10:
            fmt.Print("Ten")
          default:
            fmt.Println("This is not a number or a number between 0 and 10")
         }
        }
        if i<2 {
           fmt.Println("")
        }
       }
   
  }

也许通过共享测试用例会让我们更容易理解发生了什么。

但乍一看,我会将 x<10 替换为 x<=10,将所有 fmt.Print 替换为 fmt.Println,然后删除这些部分。

    if i<2 {
       fmt.Println("")
    }

如果您保留验证输入数字在 0 到 10 之间的条件,则永远不会打印默认情况下的消息。

另外让我与您分享另一种解决方法,它是相同的,但有一些好的做法:

package main

import "fmt"

var validWrittenNumbers = map[int]string{
    1: "One",
    2: "Two",
    3: "Three",
    4: "Four",
    5: "Five",
    6: "Six",
    7: "Seven",
    8: "Eight",
    9: "Nine",
    10: "Ten",
}

func printValidWrittenNumber(candidateNumber int) {
    if stringNumber, ok := validWrittenNumbers[candidateNumber]; ok {
        fmt.Println(stringNumber)
    }
}

func main() {
    inputTimes := 3

    for index := 0; index < inputTimes; index++ {
        var candidateNumber int
        _, _ = fmt.Scanln(&candidateNumber)

        printValidWrittenNumber(candidateNumber)
    }
}

我希望这有用,很抱歉没有提供更多帮助!