Заставить python читать 12 из файла как 12, а не 1 и 2

#python #file #for-loop #numbers #readlines

#python #файл #для цикла #числа #строки чтения

Вопрос:

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

 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 (если это то, что вы хотите), или не перебирать одну строку (это даст вам каждый символ один за другим).

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

Ответ №1:

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

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

с:

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

Ответ №2:

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

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