2015-12-22 3 views
-2

Я импортирую файл с данными и преобразовываю их в матричную форму, откуда я хочу попросить пользователя ввести число, которое затем будет сравниваться с числами в данных и напечатать, сколько чисел больше входного числа , Но я продолжаю получать ошибку ниже:Как сравнить номер ввода пользователем с данными из импортированного файла?

Traceback (most recent call last): 
    File "C:/Users/Main User/Documents/University work/Engineering Programming and design/test.py", line 14, in <module> 
    if x > i: 
TypeError: unorderable types: float() > list() 

Код:

f = open('results.txt', 'r') 
row=[] 
for line in f: 
    row.append([float(x) for x in line.split()]) 
print('test_data') 
print(row) 
f.close 

counter=0 
x=float(input("Enter a number")) 
for i in row: 
    if x > i: 
     counter=counter+1 

print(counter) 
+1

Я бы не стал упоминать, что вам нужна помощь с заданием, и что вам это нужно как можно скорее. Люди не хотят делать домашнее задание для вас, и они особенно не хотят чувствовать, что они бросились делать это. Они предполагают, что вы просто затягивались (даже если вы этого не сделали). Это, как правило, неправильно втирает людей, и ваш вопрос будет более негативным, чем положительным. – eestrada

+0

спасибо @esstrada, я буду помнить об этом, только что я новичок здесь, поэтому я не знал. спасибо за вашу помощь, я очень оценил :) –

+0

Нет проблем. Переполнение стека может быть отличным сообществом, чтобы быть частью, но, как и любое сообщество, существуют правила этикета. Сначала это может быть сложно, когда вы еще не знаете эти правила. Вот очень хорошая статья о том, как задавать вопрос на форумах, таких как переполнение стека: http://catb.org/~esr/faqs/smart-questions.html. Эта статья очень помогла мне, когда я впервые начал использовать SO. – eestrada

ответ

1

Ваш код предполагает, что он имеет дело только с плоской list чисел. Что вы фактически есть list из list с номерами. Второй цикл for должен быть вложен. Что-то вроде этого:

for line in row: 
    for number in line: 
     if x > number: 
      counter = counter + 1 

Или вам нужно использовать extend, не append, как это:

for line in f: 
    row.extend([float(x) for x in line.split()]) 

Это вместо того, чтобы дать вам плоский список номеров, как ваш код ожидает.

+0

Я устал от первого кода, который вы мне дали, но он действительно не работает так, как я хотел, его номера печати, подобные этому –

+0

@AbrarSajjad Второй бит кода, вероятно, лучше для ваших нужд. Вместо этого я попытаюсь использовать это. Таким образом, вы имеете дело только с плоским списком (с которым легче работать) вместо вложенного списка. – eestrada

+0

@esstrada жаль, что я не понял, что мой комментарий не был полностью опубликован, первый код, который вы мне дали, и он печатал 1,2,3,4,5 до 92, когда я вводил номер 12 .. но то, что я хотел был кодом для печати большего значения, чем номер, который был введен из списка матриц. плюс я попытался преобразовать матричный формат в простой список, используя ваш второй код, но он распечатывается так же, как и первый код, который вы дали ... –

Смежные вопросы