我有一个程序,它接受一个字符串并将其转换为如下所示的列表 - ['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
答案 0 :(得分:1)
使用raw_input
,而不是input
。在Python 2.x中,input
需要有效的Python代码,而raw_input
将输入转换为字符串。在Python 3.x中input
的工作方式与raw_input
相同。
要解决计算首字母数量的实际问题,您可以使用defaultdict
或Counter
。 Counter
仅在您的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