10. Switch多条件判断

10.1. Python

#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2020/4/21 13:50
# filename: sample1.py
def choice_input():
    print("请输入您的选择数字【0退出】:")
    choice = input()
    return int(choice)


while True:
    number = choice_input()
    if number == 8:
        print("Oxygen")
    elif number == 1:
        print("Hydrogen")
    elif number == 2:
        print("Helium")
    elif number == 11:
        print("Sodium")
    elif number == 0:
        break
    else:
        print("I have no idea what %d is" % number)

# Alternative solution

db = {
    1: "Hydrogen",
    2: "Helium",
    8: "Oxygen",
    11: "Sodium",
    0: "q",
}
while True:
    number = choice_input()
    result = db.get(number, "I have no idea what %d is" % number)
    if result == "q":
        break

10.2. Go

package main

import (
    "fmt"
    "strconv"
)

func str2int(s string) int {
    i, err := strconv.Atoi(s)
    if err != nil {
        panic("Not a number")
    }
    return i
}

func main() {
    var number_string string
    // 循环的标志
    loop := true

    for {
        fmt.Print("请输入您选择的数字【0 退出】: ")
        fmt.Scanln(&number_string)
        number := str2int(number_string)

        switch number {
        case 8:
            fmt.Println("Oxygen")
        case 1:
            fmt.Println("Hydrogen")
        case 2:
            fmt.Println("Helium")
        case 11:
            fmt.Println("Sodium")
        case 0:
            // 修改循环标志,让其退出循环
            loop = false
        default:
            fmt.Printf("I have no idea what %d is\n", number)
        }
        if !loop {
            break
        }
    }

}
package main

import (
    "fmt"
    "strconv"
)

func str2int(s string) int {
    i, err := strconv.Atoi(s)
    if err != nil {
        panic("Not a number")
    }
    return i
}
func main() {
    var number_string string
    loop := true
    // Alternative solution
    for {
        fmt.Print("请输入您选择的数字【0 退出】: ")
        fmt.Scanln(&number_string)

        db := map[int]string{
            1:  "Hydrogen",
            2:  "Helium",
            8:  "Oxygen",
            11: "Sodium",
            0:  "q",
        }
        number := str2int(number_string)
        if name, exists := db[number]; exists {
            if name == "q" {
                loop = false
            } else {
                fmt.Println(name)
            }
        } else {
            fmt.Printf("I have no idea what %d is\n", number)
        }
        // 跳出循环
        if !loop {
            break
        }
    }

}