2014-10-20 141 views
-2

我在C++中有以下代码,我需要它的Python版本。没有问题的“开关”部分,我用它的字典。但我不知道如何在Python中实现“enum”部分。特别是modeType具有实例模式的部分。Python中的C++枚举实例

enum modeType {UPPERCASE, LOWERCASE, PUNCTUATION}; 
int number; 
modeType mode = UPPERCASE; 
cout << "Enter some numbers ending with -1: "; 
do { 
    cin >> number; 
    cout << "Number read: " << number; 
    switch (mode) { 
     case UPPERCASE: 
      number = number % 27; 
      cout << ". Modulo 27: " << number << ". "; 
      if (number == 0) { 
       cout << "Switch to LOWERCASE"; 
       mode = LOWERCASE; 
      } 
      break; 
     case LOWERCASE: 
      number = number % 27; 
      cout << ". Modulo 27: " << number << ". "; 
      if (number == 0) { 
       cout << "Switch to PUNCTUATION"; 
       mode = PUNCTUATION; 
      } 
      break; 
     case PUNCTUATION: 
      number = number % 9; 
      cout << ". Modulo 9: " << number << ". "; 
      if (number == 0) { 
       cout << "Switch to UPPERCASE"; 
       mode = UPPERCASE; 
      } 
      break; 
     } 
     cout << "\n"; 
    } while (number != -1);here 
+0

https://docs.python.org/3.4/library/enum.html – davidism 2014-10-20 07:16:52

+0

你应该包括更多的解释你试过的东西。 – 2014-10-20 07:21:03

+0

还有一个python 2的反向链接:https://pypi.python.org/pypi/enum34 – davidism 2014-10-20 07:24:48

回答

0

直到的Python 3.4,在Python化的做法是只使用整数:

MODE_UPPERCASE, MODE_LOWERCASE, MODE_PUNCTUATION = range(3) 

mode = MODE_UPPERCASE 

switch_mapping = { 
    MODE_UPPERCASE: handle_upper, 
    # etc. 
} 

如果使用的是3.4或更新版本,您可以使用新的enum library

from enum import Enum 

Mode = Enum('Mode', 'uppercase lowercase punctuation') 
mode = Mode.uppercase 

switch_mapping = { 
    Mode.uppercase: handle_upper, 
    # etc. 
} 

枚举值仍然在这种情况下(从1为我所用这里的functional API自动分配整数)的整数。