#python #python-3.x #eof
#python #python-3.x #eof
Вопрос:
Я новичок в программировании на Python3, поэтому я надеюсь, что вы согласитесь со мной и моим вопросом. Я нашел похожие вопросы на stackoverflow и других сайтах, но я все еще не смог решить проблему:
Когда я запускаю следующий код в Visual Studio, все в порядке, нет сообщения об ошибке, ничего. С другой стороны, в LeetCode я получаю ошибку EOF, указывающую на самую первую строку ввода.
Сообщение об ошибке: EOFError: EOF при чтении строки num = input(«Введите число: «)
Строка 4 в intToRoman (Solution.py )
ret = Решение().intToRoman(param_1)
Строка 56 в _driver (Solution.py )
_driver()
Строка 67 в (Solution.py )
Код выглядит следующим образом:
class Solution:
num = ""
def intToRoman(self, num: int) -> str:
num = input("Enter a number: ")
while True:
try:
num = int(num)
if num < 0 or num > 3999: # if not a positive int or inout larger than 3999 print message and ask for input again
print("Sorry, input must be a positive integer and smaller than 3999, try again")
continue
break
except ValueError:
return("That's not an int!") # else all is good, number is >= 0 and an integer
Ones = ["I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", ""] # list of single digit roman numbers
Tens = ["X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC", ""] # list of double digit roman numbers
Hundreds = ["C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM", ""] # list of three digit roman numbers
Thousands = ["M", "MM", "MMM", "", "", "", "", "", "", ""] # list of four digit roman numbers
if (len(str((num)))) == 1:
print (Ones[int(repr(num)[-1]) - 1])
if (len(str((num)))) == 2:
print (Tens[int(repr(num)[-2]) - 1] Ones[int(repr(num)[-1]) - 1])
if (len(str((num)))) == 3:
print (Hundreds[int(repr(num)[-3]) - 1] Tens[int(repr(num)[-2]) - 1] Ones[int(repr(num)[-1]) - 1])
if (len(str((num)))) == 4:
print (Thousands[int(repr(num)[-4]) - 1] Hundreds[int(repr(num)[-3]) - 1] Tens[int(repr(num)[-2]) - 1] Ones[int(repr(num)[-1]) - 1])
Спасибо за любые отзывы, в том числе за то, что нужно оптимизировать в этом коде.
Комментарии:
1. Проверьте кодировку файла и окончания строк (Linux LF против Windows CR LF)
2. Я не пытался решить проблему в LeetCode, поэтому я не уверен, как это должно работать. Но проблема в том, что вы запрашиваете ввод, но
sys.stdin
он был закрыт. Вы должны получать данные из стандартного интерфейса? Вы уже читали stdin где-нибудь еще? Вы можете удалить весь код, который вы показали после вызоваinput
. Либо вы не получаете данные таким образом, либо что-то до того, как вы вызвали этот метод, уже использовало его.3. «While True: преобразовать str в int» — это безумие. Было бы достаточно преобразовать данный str только один раз.
4. Спасибо за все ваши отзывы до сих пор.
5. извините, комментарий еще не завершен. Определение класса «решение класса» в строке 1, а также параметры функции в строке 3 были вроде как заданы. Я просто скопировал и вставил остальное из моей macOS Visual Studio. Я посмотрю на окончания строк @Grismar