Как я могу обрабатывать числа и строки в input ()? - PullRequest
0 голосов
/ 28 марта 2020

Я новичок в Python, так что это, вероятно, глупый вопрос для многих здесь. Я создаю программу, которая читает цифры до тех пор, пока пользователь di git не выполнит. Когда пользователь di git «выполнит», программа отобразит итоговые, счетные и средние значения. Если пользователь не вводит номер, программа должна визуализировать сообщение об ошибке. Я пытался написать код:

while True:
try:
    numbers = input('Enter a number: ')
    if numbers == 'done':
        break

except:
    print ('bad data')

На данный момент я не учел сумму, количество и среднее. Я хочу понять, как обрабатывать «числа» и «строки» в input (). Потому что с моим кодом ошибка примерно "100" *

Ответы [ 3 ]

0 голосов
/ 28 марта 2020

String.isnumeri c () возвращает true, если ваша строка представляет число. Который позволяет фильтровать ваш ввод для чисел.

numbers = '123'
numbers.isnumeric()
-> returns true
numbers = '123asd'
numbers.isnumeric()
-> returns false

После того, как вы определили свой номер, вы можете преобразовать его в число с помощью

float(numbers) // is now of type float (if numbers represents in fact a float)
0 голосов
/ 28 марта 2020

это должно работать для вас. Функция input () возвращает строку, поэтому для вычисления с вашими входными данными вы должны преобразовать их в тип данных нумерация c (например, int или float). Если вы введете что-то, что не может быть преобразовано в этот тип данных, условие исключением ловит ошибку.

sum = 0
count = 0
while True:
    numbers = input('Enter a number: ')
    if numbers == "done":
        break

    try:
        numbers = float(numbers)
        sum += numbers
        count += 1
    except:
        print("bad data, try again.")

# print values after while-loop
print()
print("Total:", sum)
print("You entered", count, "values.")
print("Average:", sum/count)
0 голосов
/ 28 марта 2020

Спасибо за вопрос. Никакой вопрос тупой. Пожалуйста, проверьте ниже фрагмент кода

This code snippet may answer your query

...