#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
Полностью удалите цикл.