Python 运行方式 题目解析

XianxinMao 学生  2021-10-22 10:36:18
def test():
    run = {
        "i": {
            "title": "交互式编程( Interactive )",
            "desc": [
                "打开终端,输入 python 回车",
                "进入 Python 交互式命令行",
                "输入 print('monkey king is coding!')"
            ]
        },
        "f": {
            "title": "Python 源代源文件( File )",
            "desc": [
                "使用你喜欢的编辑器拷贝本练习的代码, 保存为run.py",
                "打开终端,cd 到 run.py 保存的目录",
                "输入 python run.py"
            ]
        }
    }
​
    print("有两种基本的方式运行 Python")
    for s in run:
        item = run.get(s)
        print("* {}: {}".format(s, item['title']))
​
    has_learn_i = False
    has_learn_f = False
​
    while True:
        ret = input("请选择你想了解的 Python 运行方式(输入:i/f选择,输入 q 退出):")
        if ret == 'q':
            break
        elif ret == 'i':
            has_learn_i = True
        elif ret == 'f':
            has_learn_f = True
​
        item = run.get(ret)
        if item is None:
            print("[错误] 不支持的运行方式")
        else:
            desc = item['desc']
            for i in range(0, len(desc)):
                print("{}. {}".format(i, desc[i]))
​
    if has_learn_i and has_learn_f:
        print("[2/2]您已完成两种 Python 运行方式的学习")
    elif has_learn_f:
        print("[1/2]您已完成 Python 源代码方式运行学习")
    elif has_learn_i:
        print("[1/2]您已完成 Python 交互式命令行运行学习")
    else:
        print("[0/2]您似乎跳过了运行方式的学习?期待下次光临!")
​
​
if __name__ == '__main__':
    test()

正确的代码片段

一般来说,我习惯 run[ret] 的写法,但是我最近见到也有一部分的 python 代码开始用 run.get(ret) 了,具体的区别暂时没查,但是就一般情况来说,两者得到的结果是一致的

 

def test():
    run = {
        "i": {
            "title": "交互式编程( Interactive )",
            "desc": [
                "打开终端,输入 python 回车",
                "进入 Python 交互式命令行",
                "输入 print('monkey king is coding!')"
            ]
        },
        "f": {
            "title": "Python 源代源文件( File )",
            "desc": [
                "使用你喜欢的编辑器拷贝本练习的代码, 保存为run.py",
                "打开终端,cd 到 run.py 保存的目录",
                "输入 python run.py"
            ]
        }
    }
​
    print("有两种基本的方式运行 Python")
    for s in run:
        item = run.get(s)
        print("* {}: {}".format(s, item['title']))
​
    has_learn_i = False
    has_learn_f = False
​
    while True:
        ret = input("请选择你想了解的 Python 运行方式(输入:i/f选择,输入 q 退出):")
        if ret == 'q':
            continue
        else if ret == 'i':
            has_learn_i = True
        else if ret == 'f':
            has_learn_f = True
​
        item = run[ret]
        if item is None:
            print("[错误] 不支持的运行方式")
        else:
            desc = item['desc']
            for i in range(0, len(desc)):
                print("{}. {}".format(i, desc[i]))
​
    if has_learn_i or has_learn_f:
        print("[2/2]您已完成两种 Python 运行方式的学习")
    else if has_learn_f:
        print("[1/2]您已完成 Python 源代码方式运行学习")
    else if has_learn_i:
        print("[1/2]您已完成 Python 交互式命令行运行学习")
    else:
        print("[0/2]您似乎跳过了运行方式的学习?期待下次光临!")
​
if __name__ == '__main__':
    test()

把上面框出来的 else if 改成 elif,然后再把 continue 改成 break,就变成正确的代码片段了

如果不把 continue 变成 break,那么 while True: 就会使程序陷入无限循环,无论你输入的是 i、f、q 等字符,都不会跳出循环,那么后面的代码就没用了:

if has_learn_i and has_learn_f:
    print("[2/2]您已完成两种 Python 运行方式的学习")
elif has_learn_f:
    print("[1/2]您已完成 Python 源代码方式运行学习")
elif has_learn_i:
    print("[1/2]您已完成 Python 交互式命令行运行学习")
else:
    print("[0/2]您似乎跳过了运行方式的学习?期待下次光临!")

 

def test():
   run = {
      "i": {
         "title": "交互式编程( Interactive )",
         "desc": [
            "打开终端,输入 python 回车",
            "进入 Python 交互式命令行",
            "输入 print('monkey king is coding!')"
         ]
      },
      "f": {
         "title": "Python 源代源文件( File )",
         "desc": [
            "使用你喜欢的编辑器拷贝本练习的代码, 保存为run.py",
            "打开终端,cd 到 run.py 保存的目录",
            "输入 python run.py"
         ]
      }
   }
​
   print("有两种基本的方式运行 Python")
   for s in run:
      item = run.get(s)
      print("* {}: {}".format(s, item['title']))
​
   has_learn_i = False
   has_learn_f = False
​
   while True:
      ret = input("请选择你想了解的 Python 运行方式(输入:i/f选择,输入 q 退出):")
      if ret == 'q':
         break
      else if ret == 'i':
         has_learn_i = True
      else if ret == 'f':
         has_learn_f = True
​
      item = run.get(ret)
      if item is None:
         print("[错误] 不支持的运行方式")
      else:
         desc = item['desc']
         for i in range(0, len(desc)):
            print("{}. {}".format(i, desc[i]))
​
   if has_learn_i and has_learn_f:
      print("[2/2]您已完成两种 Python 运行方式的学习")
   else if has_learn_f:
      print("[1/2]您已完成 Python 源代码方式运行学习")
   else if has_learn_i:
      print("[1/2]您已完成 Python 交互式命令行运行学习")
   else:
      print("[0/2]您似乎跳过了运行方式的学习?期待下次光临!")
​
if __name__ == '__main__':
   test()

把上面框出来的 else if 改成 elif,就变成正确的代码片段了

...全文
79 2 收藏 1
写回复
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
幻灰龙 10-22
ret[key] 直接下标获取,如果key不存在,会异常,ret.get(key) 则当key不存在时,返回None
回复 3
相关推荐
发帖
运行方式
创建于2021-09-10

4

社区成员

帖子事件
创建了帖子
2021-10-22 10:36
社区公告
暂无公告