Ошибка ValueError: invalid literal for int() with base 10: '6.56' на python
https://pastebin.com/dkKZx3PS - код
import math
from colorama import init
from colorama import Fore, Back, Style
init()
print( Fore.BLACK )
print( Back.RED )
print('Добро пожаловать в дебильный калькулятор V5.3!')
print('После вопроса пробелы ставить не нужно, а сразу писать что у Вас спрашивают!')
print( Back.CYAN )
print('+ - сложение')
print('- - вычитание')
print('* - умножение')
print('/ - деление')
print('** - возведение в степень')
print('% - деление по модулю')
print('S - пропустить и перейти к округлению и числу ПИ')
print( Back.GREEN )
what = input( "Что делаем? (+, -, *, /, **, %): " )
print( Back.YELLOW)
if what == "+":
a = float( input("Введи первое число: ") )
b = float( input("Введи второе число: ") )
c = a + b
print("Результат: " + str(c))
if what == "*":
a = float( input("Введи первое число: ") )
b = float( input("Введи второе число: ") )
c = a * b
print("Результат: " + str(c))
if what == "/":
a = float( input("Введи первое число: ") )
b = float( input("Введи второе число: ") )
c = a / b
print("Результат: " + str(c))
if what == "**":
a = float( input("Введи первое число: ") )
b = float( input("Введи второе число: ") )
c = a ** b
print("Результат: " + str(c))
if what == "%":
a = float( input("Введи первое число: ") )
b = float( input("Введи второе число: ") )
c = a % b
print("Результат: " + str(c))
if what == "-":
a = float( input("Введи первое число: ") )
b = float( input("Введи второе число: ") )
c = a - b
print("Результат: " + str(c))
print( Back.GREEN )
if what == "S":
print('1 - обычное округление')
print('2 - округление к меньшему числу')
print('3 - округление к большему числу')
print('4 - число ПИ')
vibor2 = input('Ваш выбор? (1, 2, 3, 4): ')
if vibor2 == "1":
d = input('Число для округления?: ' )
k = int(d)
print( 'Результат: ' + round(k) )
if vibor2 == "2":
d = input('Число для округления?: ' )
k = int(d)
print( 'Результат: ' + math.floor(d) )
if vibor2 == "3":
d = input('Число для округления?: ')
k = int(d)
print( 'Результат: ' + math.ceil(d) )
if vibor2 == "4":
print('Число ПИ: ' + str(math.pi) )
print()
Пробовал разные варианты:
Изменял на fload, int, bool.
Потом добавил "k = int(d)" и тоже также изменял. Ошибка просто менялась, но нормально программа не запускалась.
Код оставил с "k = int(d)", но если что уберу.
Не работают только три округления, всё остальное работает.
Помогите, пожалуйста.
Ответы (3 шт):
int('34.4') не будет работать, потому что нужно делать, например, так: int(float('34.4'))
В вашем случае, если вы хотите округлять, то вы делаете, допустим,
if vibor2 == "1":
d = input('Число для округления?: ' )
k = float(d)
print( 'Результат: ' + round(k) )
Вот так:
import numpy
d = input('Число для округления?: ' )
k = numpy.float64(d)
Вместо функции int() в командах
k = int(d)
примените функцию float():
k = float(d)
(как вы это сделали для переменных a и b выше.)
Обьяснение:
Не возможно выражениемint(k) конвертировать строку k, когда в ней что-то другое чем целое число (с возможными пробелами перед и за, но нет во внутри числа).
В каких-то других языках это допустимо, но в Питоне нет.
Кроме того, вам все-таки нужно в переменной k десятичное число, потому что вы хотите округлить его разными образами (что для целых чисел даст онин и тот-же результат).