luzhiyao 发表于 2021-4-30 19:20

pseudocode中的case在Python中应该怎样实现?

pseudocode中的case在Python中应该怎样实现?


我有如下pseudocode(伪代码),目的是将十进制数转化为十六进制,该如何将其编写为Python代码?主要问题是不知道case在Python中如何实现。

INPUT X
WHILE X > 15
    DO
    T1 <-- X DIV 16
    T2 <-- X MOD 16
    CASE T2 OF
      10:OUTPUT A
      11:OUTPUT B
      12:OUTPUT C
      13:OUTPUT D
      14:OUTPUT E
      15:OUTPUT F
      OTHERWISE OUTPUT T2
    ENDCASE
    X <-- T1
END WHILE
CASE X OF
    10:OUTPUY A
    11:OUTPUT B
    12:OUTPUT C
    13:OUTPUT D
    14:OUTPUT E
    15:OUTPUT F
    OTHERWISE OUTPUT X
ENDCASE

漁滒 发表于 2021-4-30 20:03

用内置函数就可以 hex(x)

luzhiyao 发表于 2021-4-30 20:22

漁滒 发表于 2021-4-30 20:03
用内置函数就可以 hex(x)

我知道,但是这是我们的作业,将这段伪代码用Python代码编写。

漁滒 发表于 2021-4-30 20:38

luzhiyao 发表于 2021-4-30 20:22
我知道,但是这是我们的作业,将这段伪代码用Python代码编写。

在python3.10才增加了这种语法。示例如下,其他版本使用if,else代替
http_code = "418"
match http_code:
    case "200":
      print("OK")
      do_something_good()
    case "404":
      print("Not Found")
      do_something_bad()
    case "418":
      print("I'm a teapot")
      make_coffee()
    case _:
      print("Code not found")

santus36 发表于 2021-4-30 22:04

要么用if... elif... elif... else
要么用字典,类似这种switch = {"a":lambda x:x*2, "b":lambda x:x*3,"c":lambda x:x**x}

guangzisam 发表于 2021-4-30 23:47

作业需要自己动脑筋啊

luzhiyao 发表于 2021-5-1 10:24

x=int(input("x?"))
while x>15:
    t1=x//16
    t2=x%16
    if t2==10:
      print("A")
    elif t2==11:
      print("B")
    elif t2==12:
      print("C")
    elif t2==13:
      print("D")
    elif t2==14:
      print("E")
    elif t2==15:
      print("F")
    else:
      print(t2)
    x=t1
if x==10:
    print("A")
elif x==11:
    print("B")
elif x==12:
    print("C")
elif x==13:
    print("D")
elif x==14:
    print("E")
elif x==15:
    print("F")
else:
    print(x)

作业写完了,根据Pseudocode来的,在应用时有许多可以优化的地方。
页: [1]
查看完整版本: pseudocode中的case在Python中应该怎样实现?