1

如果我想要一个让用户输入数字(例如 1、13、4354)的程序,我怎样才能让它打印出来(一、十三、四三五四),这有意义吗?如果它是两位数,则将其打印为已连接(三十一个),但如果超过 2 个,则单独打印它们,同一行用空格连接,我尝试用字典来做到这一点,我认为这是可能的,但我不知道该怎么做?

l = input('Enter the number: ')

if len(l) > 2:
    nums = {'1':'one',
            '2':'two',
            '3':'three',
            '4':'four',
            '5':'five',
            '6':'six',
            '7':'seven',
            '8':'eight',
            '9':'nine'}
elif len(l) == 2:
    tens = {'10'}


for k, v in nums.items():
    print(k, v)

这显然是一个错误的代码,但我希望完成的结果看起来像这样?提前致谢!

4

2 回答 2

3

要访问字典中的项目,您可以执行dictionary[key]. 被value退回。

假设我的输入是"8".

然后你可以做print nums[l](​​在你的条件语句中),这将返回"eight".


此外,如果您在条件结构之外创建字典以防止NameErrors,那么您可以在任何地方访问这两个字典可能会更好。


如果你有一个 input "324",那么你可以使用str.join()和 列表理解的组合:

l = "324"
nums = {'1':'one',
        '2':'two',
        '3':'three',
        '4':'four',
        '5':'five',
        '6':'six',
        '7':'seven',
        '8':'eight',
        '9':'nine'}

print ' '.join(nums[i] for i in l)

解释:

[nums[i] for i in l]是相同的:

returned_list = []
for number in l:
    returned_list.append(d[number])

str.join()将列表中的每个项目连接在一起,用空格分隔。所以' '.join(['one', 'two', 'three'])返回'one two three'

于 2013-08-26T06:47:58.860 回答
1

如果您这样做是为了学习,请继续。如果您要赶飞机,可以尝试PyparsingPyparsing 的一个示例中涵盖了这个练习:

于 2013-08-26T20:49:25.857 回答