#python
Вопрос:
Я новичок в программировании, использую Python 3.9. Итак, я делаю простую математическую программу из того, что я понимаю в чтении и учебниках.
вот код:
print('n Simple Math ')
def num():
if choice == 1:
sum = first_num second_num
print('Sum is: ', sum)
elif choice == 2:
diff = first_num - second_num
print('Difference is: ', diff)
elif choice == 3:
mul = first_num * second_num
print('Product is: ', mul)
elif choice == 4:
div = first_num / second_num
print('Quotient is: ', div)
while True:
print('n 1. Add: n 2. Subtract: n 3. Multiply: n 4. Divide: n')
choice = int(input('Select an operator: '))
if choice > 4 or choice < 1:
choice = int(input('Input only valid selection from above! nSelect again: '))
first_num = float(input('Enter first number: '))
second_num = float(input('Enter second number: '))
num()
break
Моя проблема выше заключается в том, что, когда я добавил часть «Ввод только допустимого выбора сверху!», если пользователь вводит данные за пределами номера выбора, он ничего не делает, когда я пытаюсь ввести от 1 до 4. Но если я введу 5, это будет хорошо работать.
Я уже пытался поместить first_num и second_num за пределы цикла while или выше def, пытался поместить num() перед while, но все равно выдает ошибку. Я сомневаюсь в части «если выбор > 4 или выбор > Хотя я вроде как застрял и не знаю, что делать дальше.
Буду признателен за любую помощь… спасибо
Простите, я действительно абсолютный новичок… 😅
Комментарии:
1. Передайте значения функции в качестве аргументов.,
2. У вас есть все внутри
if
. Посмотрите на заявление. Если вы введете юридическое значение, ничего не запустится. Вам нужна строкаelse:
после строки «Ввод только допустимого выбора».3. Здесь есть много вопросов, связанных с базовыми знаниями. Просмотрите множество руководств по функциям и утверждениям if, они, как правило, гораздо более высокого качества, чем комментарии и ответы на stackoverflow, и вам даже не нужно ждать.
Ответ №1:
Ваш код был довольно хорошим началом. Однако было несколько недостатков.
- вам нужно передать переменные для использования в вашу
num
функцию - вы должны индивидуализировать логику ввода 3 чисел (я использовал здесь отдельную функцию).
Ниже приведена рабочая версия.
Теперь вы можете попытаться улучшить его, например, добавив проверки значений first_num/second_num (скажем, запретить 0 i second_num для деления). Вы также можете попытаться переместить проверки в validate_input
функцию.
print('n Simple Math ')
def num(choice, first_num, second_num):
if choice == 1:
sum = first_num second_num
print('Sum is: ', sum)
elif choice == 2:
diff = first_num - second_num
print('Difference is: ', diff)
elif choice == 3:
mul = first_num * second_num
print('Product is: ', mul)
elif choice == 4:
div = first_num / second_num
print('Quotient is: ', div)
def validate_input(prompt='?: ', input_type=int):
while True:
try:
return input_type(input(prompt))
except ValueError:
print('Incorrect input')
while True:
print('n 1. Add: n 2. Subtract: n 3. Multiply: n 4. Divide: n')
choice = -1
while choice > 4 or choice < 1:
choice = validate_input('Select an operator: ')
first_num = validate_input('Enter first number: ', float)
second_num = validate_input('Enter second number: ', float)
num(choice, first_num, second_num)
Комментарии:
1. так мило… спасибо за понимание. Кстати, о «подсказке=»? «»в разделе проверка, это тот, который содержит значение ввода в целом?
2. Это значение по умолчанию в приглашении, если вы можете использовать функцию, не устанавливая ее
Ответ №2:
Не нужно извиняться, вы сказали, что вы новичок, ошибки случаются с продвинутыми программистами. Вы должны передать эти числа в функцию, чтобы использовать ее. Также в условии if его лучше использовать while
, потому что, как только вы введете неверный ввод, он покажет ошибку, а затем снова запросит ввод. Теперь, даже если вы введете неверный ввод, он будет принят, потому что он не будет снова проверять, правильно ли он введен. Попробуйте сделать это:
print('n Simple Math ')
def num(first_num, second_num):
if choice == 1:
sum = first_num second_num
print('Sum is: ', sum)
elif choice == 2:
diff = first_num - second_num
print('Difference is: ', diff)
elif choice == 3:
mul = first_num * second_num
print('Product is: ', mul)
elif choice == 4:
div = first_num / second_num
print('Quotient is: ', div)
while True:
print('n 1. Add: n 2. Subtract: n 3. Multiply: n 4. Divide: n')
choice = int(input('Select an operator: '))
while choice > 4 or choice < 1:
choice = int(input('Input only valid selection from above! nSelect again: '))
first_num = float(input('Enter first number: '))
second_num = float(input('Enter second number: '))
num(first_num,second_num)
break
Комментарии:
1. спасибо за это… похоже, что while лучше, так как каждый раз, когда я использую if, я всегда зацикливаюсь на том, как я должен зацикливать его, когда ввод неверен…
2. Точно. If проверит условие только один раз, в то время как будет проверять каждый раз, когда вы вводите ввод