说出数字 - Sololearn Go 挑战
Say The Numbers - Sololearn Go Challenge
我目前正在使用 SoloLearn 应用程序学习围棋。
挑战是:
以0-10范围内的3个数字作为输入并输出相应的英文文本。
测试用例 #1、测试用例 #3、测试用例 #4 和 #测试用例 #5 成功。
但是我在总结 Test Case #2 和 Test 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)
}
}
我希望这有用,很抱歉没有提供更多帮助!
我目前正在使用 SoloLearn 应用程序学习围棋。
挑战是:
以0-10范围内的3个数字作为输入并输出相应的英文文本。
测试用例 #1、测试用例 #3、测试用例 #4 和 #测试用例 #5 成功。
但是我在总结 Test Case #2 和 Test 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)
}
}
我希望这有用,很抱歉没有提供更多帮助!