如何允许用户输入str和int

时间:2015-03-23 06:23:56

标签: python-3.x

我有一个函数应该用户输入字符串和int,如(555-GOT-FOOD)并为每个字符串字符打印正确的数字。如何获取我的功能以获取用户输入(555-GOT-EATS)

代码:

def num(n):

    chars = []
    for char in n:
            if char.isalpha():
                    if char.lower() in ['A', 'B', 'C']:
                            chars.append('2')
                    elif char.lower() in ['D', 'E', 'F']:
                            chars.append('3')
                    elif char.lower() in ['G', 'H', 'I']:
                            chars.append('4')
                    elif char.lower() in ['J', 'K', 'L']:
                            chars.append('5')
                    elif char.lower() in ['M', 'N', 'O']:
                            chars.append('6')
                    elif char.lower() in ['P', 'R', 'S']:
                            chars.append('7')
                    elif char.lower() in ['T', 'U', 'V']:
                            chars.append('8')
                    else:
                            chars.append('9')
            else:
                    chars.append(char)
    return ''.join(chars)

num(555-“得到” - “食物”)

2 个答案:

答案 0 :(得分:0)

要么接受一个char数组,然后将前三个数字转换为int。另外,你可以输入一个字符串,然后拔出3个数字并转换为int。

答案 1 :(得分:0)

如果您正在接受用户输入,那么您不应该担心5是不正确的,因为它们不是全新的! Python将所有用户输入作为字符串。所以它们是数字,是的,但它们是字符串类型,而不是int。将它们视为代表数字的符号。

如果您像这样修改代码的结尾,它应该可以工作。

                elif char.lower() in ['T', 'U', 'V']:
                        chars.append('8')
                elif char.lower() in ['X', 'Y', 'Z']:
                        chars.append('9')
                else:
                        chars.append(char)
return ''.join(chars)

您还需要使用

n.replace("-", "")

摆脱所有" - ",给你" 555GOTFOOD"而不是" 555-GOT-FOOD"。

另外,我不确定它是否会按原样运行,或者你需要将char.lower()更改为char.upper(),因为你的列表都是大写字母。