У меня есть программа, которая берет строку и преобразует ее в список, который выглядит следующим образом: ['CTTC', 'CGCT', 'TTTA', 'CATG']
. (на самом деле это намного дольше, чем это). Теперь мне нужно найти, сколько из этих элементов списка имеет C or A or T or G
в качестве его первой буквы. Это необходимо взять с терминала, то есть с помощью функции input
.Ошибка ввода данных datatype
Сейчас, насколько я знаю, в Python 3.2 типа данных функции ввода по умолчанию, принятым в виде строки (str
), а не как целое (int
) (можно увидеть с помощью isinstance
). Однако, поскольку я использую сервер колледжа, версия python старше (я думаю, 2.7 или новее, но ниже 3.0). В этом случае, когда я использую функцию ввода, чтобы попросить пользователя выбрать букву initial = input("Choose a letter:")
, и когда я ввожу любую букву (A, T, G или C), она дает мне ошибку NameError: name 'C' is not defined
. Когда я проверил тип данных с помощью isinstance
, я понял, что версия python принимает тип данных ввода как int
. Когда я пытаюсь преобразовать его в строку, он дает ту же ошибку. Это проблема версии, или это то, что я делаю неправильно. Мой код ниже.
import sys
#import random
file = open(sys.argv[1], 'r')
string = ''
for line in file:
if line.startswith(">"):
pass
else:
string = string + line.strip()
w = input("Please enter window size:")
test = [string[i:i+w] for i in range (0,len(string),w)]
#seq = input("Please enter the number of sequences you wish to read:")
#first = random.sample((test), seq)
print test
l = input("Enter letter for which you wish to find the probability:")
lin = str(l)
print lin
'input' является Python 2 это совершенно другая вещь, чем в Python 3. Используйте' raw_input' вместо этого. –
Я использовал ввод в своей программе и работал без каких-либо проблем. Вы можете видеть, что если вы просматриваете код –
, тем не менее это проблема. –