【问题标题】:Using a switch with file in Python在 Python 中使用带有文件的开关
【发布时间】:2020-05-17 12:52:39
【问题描述】:

我用 C 语言编写了这段代码。它选择一个文件来读取数据并使用选定的数据运行程序。我想用 Python 写这个,我找到了一些教程,但它们都是指使用开关打印消息。你能帮我解决这个问题吗?

switch (alegere)
    {
    case 'a':
        F=fopen("date1.txt", "r");//deschidere fisier pentru citire
        break;
    case 'b':
        F=fopen("date2.txt", "r");
        break;
    case 'c':
        F=fopen("date3.txt", "r");
        break;
    case 'd':
        F=fopen("date4.txt", "r");
        break;
    case 'e':
        F=fopen("date5.txt", "r");
        break;
    case 'f':
        F=fopen("date6.txt", "r");
        break;
    case 'g':
        F=fopen("date7.txt", "r");
        break;
    case 'h':
        F=fopen("date8.txt", "r");
        break;
    case 'i':
        F=fopen("date9.txt", "r");
        break;
    case 'j':
        F=fopen("date10.txt", "r");
        break;
    default:
        printf("Input invalid");
        exit(1);
        break;
    }

【问题讨论】:

  • python 没有 switch 语句,你可以在你的情况下使用字典
  • Python 没有switch 语句。阅读if-else 声明。

标签: python file switch-statement


【解决方案1】:

您可以使用 dict 进行选择

file_paths = {
    'a': 'date1.txt',
    'b': 'date2.txt',
}
file_path = file_paths.get(alegere)
if not file_path:
    printf("Input invalid");
    exit(1)

with open(file_path, 'r') as fin:
    # do sth

【讨论】:

    【解决方案2】:

    你可以使用简单的字典

    adict = {a:fonctionA, b:fonctionB, ...}
    
    aDict['d'] = fonctionD
    

    字典可以接受像函数这样的对象...

    【讨论】:

      【解决方案3】:

      对于您的具体示例,您可以使用:

      OFFSET = 96
      file_no = ord(alegere) - OFFSET
      file_name = f"date{file_no}.txt"
      
      if file_no in range(1, 11):
          fh = open(file_name)
      else:
          print("Input invalid")
      

      OFFSET 有助于将字母映射到数字,即a => 1, b => 2,..。由于“a”对应ASCII表中的97,所以我们减去96。

      【讨论】:

        猜你喜欢
        • 2013-11-05
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-02
        • 1970-01-01
        • 1970-01-01
        • 2021-11-19
        相关资源
        最近更新 更多