2016-10-15 1 views
-2

Попытка сделать программу, которая дает цену на разные количества этапов. В «trips.txt» третья строка - это номер 12, python интерпретирует ее как 1 и 2 вместо нее и дает цену для каждого, а не как число в целом, и любой способ исправить ее до того, что она читается как 12 ?.Сделать python читать 12 из файла как 12 not 1 и 2

infile = open("tripss.txt","r") 
customer_one= infile.readline().strip("\n")  
customer_two= infile.readline().strip("\n") 
customer_three= infile.readline().strip("\n")  
one_to_three_stages="euro 1.55" 
four_to_seven_stages="euro 1.85" 
seven_to_eleven_stages="euro 2.45" 
more_than_eleven_stages="euro 2.85" 
cheapest = ["1","2","3"]  
cheap = ["4","5","6","7"]  
expensive = ["7","8","9","10","11"]  
    for number in customer_three:  
    if number in cheapest: 
     print one_to_three_stages  
    elif number in cheap:  
     print four_to_seven_stages  
    elif number in expensive:  
     print seven_to_eleven_stages 
    else:   
     print more_than_eleven_stages  
+1

Отпечаток в сломанной области. И вам, вероятно, нужно преобразовать строку в int (если это то, что вы хотите), или не перебирать одну строчку (которая даст вам каждый символ один за другим). –

+0

Пожалуйста, введите пример ввода. Я думаю, например, что строка 3 является только «12 \ n» из ваших комментариев, но я не уверен. – tdelaney

ответ

0

В вашем коде кажется, что вы хотите рассматривать customer_three как список строк. Однако в вашем коде это строка, а не список строк, и поэтому цикл for повторяется на символах строки («1» и «2»).
Поэтому я предлагаю вам заменить:

customer_three= infile.readline().strip("\n") 

с:

customer_three= infile.readline().strip("\n").split() 
0

Вы говорите, третья линия номер 12 так после customer_three= infile.readline().strip("\n"), customer_three будет строка "12". Если вы затем запустите цикл for for number in customer_three:, number будет назначен каждый элемент строки - сначала "1", а затем "2".

Решение прост. customer_three уже есть нужная вам строка. Полностью удалите петлю for.