输入数据类型错误

时间:2013-02-11 03:41:50

标签: python

我有一个程序,它接受一个字符串并将其转换为如下所示的列表 - ['CTTC', 'CGCT', 'TTTA', 'CATG']。 (它实际上比这长得多)。现在我需要找到有多少这些列表元素的第一个字母C or A or T or G。这需要从终端获取,即使用input功能。

现在我知道,在python 3.2中,输入函数的数据类型默认采用字符串(str)而不是整数(int)(可以通过使用{ {1}})。但是,由于我使用的是大学服务器,因此python版本较旧(我认为2.7或更高版本但低于3.0)。在这种情况下,当我使用输入函数要求用户选择字母isinstance时,当我输入任何字母(A,T,G或C)时,它会给我一个错误{{1} }。当我使用initial = input("Choose a letter:")检查数据类型时,我意识到python版本将输入的数据类型作为NameError: name 'C' is not defined。当我尝试将其转换为字符串时,它会给出相同的错误。这是版本的问题还是我做错了什么。我的代码如下。

isinstance

1 个答案:

答案 0 :(得分:1)

使用raw_input,而不是input。在Python 2.x中,input需要有效的Python代码,而raw_input将输入转换为字符串。在Python 3.x中input的工作方式与raw_input相同。

要解决计算首字母数量的实际问题,您可以使用defaultdictCounterCounter仅在您的Python版本为2.7及更高版本时可用。 2.5中添加了defaultdict

>>> from collections import Counter
>>> i = ['CTTC','CGCT','TTTA','CATG','ABCD']
>>> c = Counter(x[0] for x in i)
>>> c['C']
3

以下是defaultdict方法:

>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> for x in i:
...    d[x[0]] += 1
...
>>> d['C']
3