#python #python-3.x
#python #python-3.x
Вопрос:
Я программист на python начального уровня, и я пытаюсь создать эту короткую программу, которая принимает число и выводит его абсолютное значение. Однако каждый раз, когда я ее запускаю, компилятор сообщает, что переменная, которую я создал для хранения нового номера, не определена. IDK, что я сделал не так.
print("Welcome to the ABSOLUTE-VALUEINATOR")
num=float(input("Enter number to find absolute value: "))
if num<=0:
new_num=num*-1
print("The absolute value is: " str(new_num))
else:
print("The absolute value is: " str(new_num))
Комментарии:
1. Какова точная ошибка?
2. Если
num > 0
,new_num
никогда не определяется.3. В вашем
else
блоке вы пытаетесь распечататьnew_num
, но вы никогда не присваивали ему значение.4. Вы совершенно правы @khelwood, я серьезно сомневался в том, что я узнал, но это имеет смысл. Теперь это работает, спасибо 🙂
Ответ №1:
Самым простым решением было бы избежать определения новой переменной для new_num
. Таким образом, логика будет:
- Преобразуйте пользовательский ввод в float
- Если данное число отрицательное, умножьте его на
-1
- Выведите результат
Таким образом, код будет выглядеть следующим образом:
print("Welcome to the ABSOLUTE-VALUEINATOR")
num = float(input("Enter number to find absolute value: "))
if num < 0:
num *= -1
print("The absolute value is: " str(num))
Однако здесь все еще есть проблема. Если пользователь вводит целое число, эта программа выведет значение с плавающей точкой.
например, ввод: 125 Вывод: 125.0
Если вы просто хотите убрать отрицательный знак, вы можете просто выполнить следующее:
print("Welcome to the ABSOLUTE-VALUEINATOR")
num = input("Enter number to find absolute value: ")
num = num.strip('-')
print("The absolute value is: " num)
Комментарии:
1. Я никогда не видел функцию .strip() в Python, спасибо
Ответ №2:
Просто требуется небольшое изменение. new_num
num
в остальное, и оно должно работать нормально:
print("Welcome to the ABSOLUTE-VALUEINATOR")
num=float(input("Enter number to find absolute value: "))
if num<=0:
new_num=num*-1
print("The absolute value is: " str(new_num))
else:
print("The absolute value is: " str(num))
Это связано с тем, что new_num определяется при условии if, и если условие равно false, оно никогда не определяется. Однако хорошим подходом является использование одной и той же переменной как для измененного числа, так и для фактического ввода, что позволит избежать путаницы:
print("Welcome to the ABSOLUTE-VALUEINATOR")
num=float(input("Enter number to find absolute value: "))
if num<=0:
num=num*-1
print("The absolute value is: " str(num))
else:
print("The absolute value is: " str(num))