Я пытаюсь решить проблему techgig с поиском наибольшего из трех чисел. проблема в следующем
You just need to take three number as input from stdin and you need to find greatest of them.
Input Format
You will be taking three numbers as an input from stdin one on each line respectively.
Constraints
-100000 <= N <= 100000
Output Format
You need to print the greatest of the three numbers to the stdout.
Sample TestCase 1
Input
902 100 666
я сделал это
''' Read input from STDIN. Print your output to STDOUT '''
#Use input() to read input from STDIN and use print to write your output to STDOUT
import sys
def main():
s=sys.stdin.read()
s=s.split("\n")
a=int(s[0])
b=int(s[1])
c=int(s[2])
temp=0
e=[a,b,c]
for i in e:
if i > temp:
temp=i
print(temp)
'''if (a>b) and (a>c):
temp = a
elif (b>a) and (b>c):
temp = b
else:
temp = c
print(temp)'''
main()
Он имеет предопределенный ввод 902, 100, 666. Мой код показывает вывод 902, и ожидаемый также показывает 902, но его отображение не удалось, почему? В приведенном выше коде, прокомментированном или не прокомментированном, оба показа не удались.
temp
инициализируется как 0, но ввод допускает отрицательные числа. Однако 0 будет считаться большим, чем любой отрицательный ввод. Это означает, что ваш алгоритм не сработает для тестовых случаев с отрицательным входом.
Инициализируйте temp
до значения меньше минимально допустимого ввода:
temp = -100001 # One less than the minimum
Carcigenicate это для общего случая, но здесь все входные данные положительные, тогда почему код не удался?
@briangrey В остальном ваш алгоритм выглядит нормально. Я думаю, что это не работает для случаев, отличных от того, что вы упомянули. Вероятно, у него есть скрытые тестовые случаи, в которых он не работает. Внесите изменения и повторите попытку.
Carcigenicate Итак, я взял temp -1000001, но тоже не получается, тогда какая должна быть temp или какая-то другая ошибка?
Carcigenicate Я взял значение temp a, т.е. первое значение, затем оно не должно выдавать ошибку, но также выдает ошибку
@briangrey Лучшее, что я могу сказать, это то, что их проверка нарушена (что не является чем-то неслыханным), или есть нишевый угловой случай, в котором она не работает. Какая ссылка на инструкцию? Я по-прежнему считаю, что ваш код выглядит нормально после того, как вы внесете изменения, которые я рекомендовал; по крайней мере хорошо по спецификациям, которые вы здесь указали.
Carcigenicate там особняк для вывода вывода на STDOUT, так что это такое, это вызывает ошибку?
@briangrey print
печатает на стандартный вывод, если вы не укажете иное. Может попробовать print(temp, end = "")
; хотя это было бы глупо, если бы они не терпели новые строки.
Carcigenicate Эта проблема есть на сайте techgig. Можете ли вы попробовать зарегистрировать, а затем Практика-Python-Greatest из 3 с проблемой Python. Веб-сайт techgig.com/practice/question/greatest-of-3-with-python/…
@briangrey Их сайт, к сожалению, не работает на мобильных устройствах; он просто отправляет меня на главную страницу.
@briangrey Убедитесь, что вы установили его на Python 3, так как по умолчанию используется Python 2. Если у вас установлено значение 2, он будет печатать кортежи с тем, что у вас есть сейчас.
Carcigenicate NOW показывает успешное выполнение с print(temp, end = " "); НО я открыл ту же проблему в другом браузере с другим логином, и он показывает ошибку !!! Кстати, вы можете попробовать войти в систему по ссылке выше, а затем перейти к Практика-Python-Greatest из 3 с проблемой Python.
@briangrey Я нашел тренировочный вопрос. Однако редактор не работает на мобильных устройствах. Я не могу ввести в него.
Carcigenicate print(temp, end = ""); работает везде с разными браузерами и разными логинами. Но не могли бы вы сказать мне, почему он не работал с 'print (temp)' и работает с 'print (temp, end = ""); '
@briangrey print
по умолчанию вставляет новую строку в конце. end = ""
говорит ничего не добавлять в конце. Это действительно глупо со стороны сайта, запрещать новые строки и не сообщать вам об этом в спецификации.
Carcigenicate Ха-ха, спасибо!!.
Я могу ошибаться, но в выводе говорится, что нужно печатать с использованием стандартного вывода: вам нужно напечатать наибольшее из трех чисел в стандартный вывод. Печать в python такая же, как sys.stdout.write(str(99) + '\n'). Попробуйте использовать стандартный вывод для печати результата.
sys.stdout.write(str(temp))
print
по умолчанию печатает sys.stdout
, если файл не указан: docs.python.org/3/library/functions.html#print Единственная разница здесь в том, что я не верю, что это вставляет новую строку, но это можно сделать с помощью print
, передав аргумент end
.
ваш ответ или ответ Carcigenicate, т.е. 'print (temp, end = " "); оба работают, спасибо.
Что произойдет, если эти три числа равны -1, -2, -3?