Проверка min max без использования функции или списка в python - PullRequest
1 голос
/ 26 апреля 2020
min1=0
max1=0

while True:
    num=input("enter a number")
    if (num=='done'):
        break
    elif (num.isdigit()==False):
        print("sorry enter integers or done")
    elif (int(num)>max1):
        max1=num
    elif (int(num)<min1):
        min1=num
print(max1)
print(min1)

Это ошибка «>» не поддерживается между экземплярами int и str. Я не могу взять целочисленный ввод, так как мне нужно прервать, когда пользователь входит в готово. Кроме того, я должен учитывать нецелые значения, введенные пользователем. Как исправить этот код.

Ответы [ 2 ]

2 голосов
/ 26 апреля 2020

Предположим num='5'. Затем elif (int(num)>max1): удерживается, и вы присваиваете '5' для max1. На следующей итерации max1 является строкой, и поэтому вы получаете ошибку. Решение - max1=int(num) (и то же самое для min1).

1 голос
/ 26 апреля 2020

Другой способ решить эту проблему - преобразовать входные данные в целое число один раз, а не использовать int(num) несколько раз по всему коду. Это облегчает чтение в дальнейшем.

Примером этого является изменение

elif (num.isdigit()==False):

на

elif (num.isdigit()==True): или elif (num.isdigit()) (они делают то же самое).

Затем вы можете преобразовать строку в целое число с помощью num = int(num)

Пример:

min1=0
max1=0

while True:
    num=input("enter a number")
    if (num=='done'):
        break
    if num.isdigit():
        num = int(num)
    else:
        print("sorry enter integers or done")
        continue
    if (num>max1):
        max1=num
    elif (num<min1):
        min1=num
print(max1)
print(min1)
...