question :
"Три переменные - x, y и z - предположительно содержат строки цифр, подходящие для преобразования в целые числа. Напишите код, который преобразует их в целые числа, и напечатайте сумма этих трех целых чисел. Однако, если какая-либо переменная имеет значение, которое не может быть преобразовано в целое число, выведите строку «bad value (s) in:», за которой следуют имена переменных, имеющих неправильные значения (разделенные через пробелы, в алфавитном порядке возрастания).
Например, если значения x, y и z были соответственно «3», «9» и «2», то число 14 будет напечатано С другой стороны, если бы значения были «ab c», «15» и «boo», то результат был бы: неверные значения в: x z. "
Примечание: Этот вопрос из Craft CodeLab компании Turing, который, кажется, требует определенного стандартного ввода c, чтобы получить правильный ответ. Я включил «анализ ошибок», который CodeLab предоставлял мне после каждой попытки, чтобы дать вам представление о формате, который он ищет.
Попытка # 1 :
error_output = "Bad values in:"
numeric_output = 0
inputs = input().strip().split(" ")
try:
x = int(inputs[0])
numeric_output += x
except ValueError:
error_output += " x"
try:
y = int(inputs[1])
numeric_output += y
except ValueError:
error_output += " y"
try:
z = int(inputs[2])
numeric_output += z
except ValueError:
error_output += " z"
if error_output != "Bad values in:":
print(error_output)
else:
print(numeric_output)
Хотя этот код работает без проблем на Idle и Pycharm, это неправильный ответ на CodeLab ... Вот анализ ошибок CodeLab из моего первая попытка :
- В каждом тестовом случае : а) стандартный вывод неверен и б) ничего не было напечатано на стандартный вывод
- Вы почти наверняка должны использовать: +
- Я еще не видел правильное решение, которое использует: ""
- Я еще не видел правильное решение, которое использует: "x"
- Я еще не видел правильное решение, которое использует: "y"
- Я еще не видел правильное решение, которое использует: "z"
- Мы думаем, что вы могли бы рассмотреть возможность использования: ==
- Мы худеем k Вы можете рассмотреть возможность использования: sum
- Решения с вашим подходом обычно не используют: ! =
- Решения с вашим подходом don обычно не используют: . (период)
- Решения с вашим подходом обычно не используют: 1
- Решения с вашим подходом обычно не используют: 2
- Решения с вашим подходом обычно не используют: []
- Решения с вашим подходом обычно не используют: input
- Решения с вашим подходом обычно не используют: strip
- Мы думаем, что вы могли бы рассмотреть возможность использования: not
Моя вторая попытка :
try:
print(int(x) + int(y) + int(z))
except ValueError:
print("bad value(s) in:")
if not x.isdigit():
print(' x')
if not y.isdigit():
print(' y')
if not z.isdigit():
print(' z')
' Анализ ошибок ' из Попытка # 2:
- В некоторых тестовых случаях : стандартный вывод неверен
- Вы почти наверняка должны использовать: =
- Я еще не видел правильное решение, которое использует: "неверные значения в:"
- Я еще не видел правильное решение, которое использует: 'x'
- Я еще не видел правильное решение, которое использует: * 11 33 * 'y'
- Я еще не видел правильное решение, которое использует: 'z'
- Вы почти наверняка должны использовать: str
- Мы думаем, что вы можете рассмотреть возможность использования: , (запятая)
- Решения с вашим подходом обычно не используют: ValueError
Наконец, вот моя третья попытка (которая, согласно CodeLab, является наиболее точной):
try:
print(int(x) + int(y) + int(z))
except ValueError:
print("bad value(s) in:",end='')
if not x.isdigit():
print('x',end='')
if not y.isdigit():
print('y',end='')
if not z.isdigit():
print('z',end='')
' Анализ ошибок ' из Попытка # 3:
- В некоторых тестовых случаях : стандартный вывод неправильный
- Я еще не видел правильное решение, которое использует: "неверные значения в:"
- Решения с вашим подходом обычно не используют: ''
- Решения с вашим подходом обычно не используют: ValueError
Что мне здесь не хватает?