2013-10-03 15 views
0

Я пытаюсь сделать эту программу, которая вычисляет объем и площадь поверхности цилиндра; В настоящее время я кодирую его часть. Однако на экране вывода есть два десятичных знака. Он показывает:Два десятичных разряда в Python?

Объем цилиндра is193019.2896193019.2896cm³

Почему существуют два?

После этого я пытаюсь заставить программу спросить пользователя, сколько десятичных знаков (d.p.) пользователь хочет. Как я могу это сделать?

Вот текущий код:

print("Welcome to the volume and surface area cylinder calculator powered by Python!") 
response = input("To calculate the volume type in 'vol', to calculate the surface area, type in 'SA': ") 
if response=="vol" or response =="SA": 
    pass 
else: 
    print("Please enter a correct statement.") 
    response = input("To calculate the volume type in 'vol', to calculate the surface area, type in 'SA': ") 

if response=="vol": 
    #Below splits 
    radius, height = [float(part) for part in input("What is the radius and height of the cylinder? (e.g. 32, 15): ").split(',')] 
    PI = 3.14159 #Making the constant PI 
    volume = PI*radius*radius*height 
    print("The volume of the cylinder is" + str(volume) + "{}cm\u00b3".format(volume)) 

ответ

9

Вы интерполяцией значение дважды:

print("The volume of the cylinder is" + str(volume) + "{}cm\u00b3".format(volume)) 

Только один раз будет делать:

print("The volume of the cylinder is {}cm\u00b3".format(volume)) 

Хорошая вещь о .format() функция заключается в том, что вы можете сказать он должен отформатировать ваш номер до определенного количества десятичных знаков:

print("The volume of the cylinder is {:.5f}cm\u00b3".format(volume)) 

где он будет использовать 5 знаков после запятой. Это число может быть параметрироваться тоже:

decimals = 5 
print("The volume of the cylinder is {0:.{1}f}cm\u00b3".format(volume, decimals)) 

Demo:

>>> volume = 193019.2896 
>>> decimals = 2 
>>> print("The volume of the cylinder is {0:.{1}f}cm\u00b3".format(volume, decimals)) 
The volume of the cylinder is 193019.29cm³ 
>>> decimals = 3 
>>> print("The volume of the cylinder is {0:.{1}f}cm\u00b3".format(volume, decimals)) 
The volume of the cylinder is 193019.290cm³ 

Я уеду с помощью input() и int() просить целое число знаков после запятой от пользователя до вас.

+0

Как Замечание, при вводе значения внутри 'печати()' функция, вам не нужно явно вызвать ' str() ', функция' print() 'делает это автоматически. (Ну, он получает свойство '__str__' объекта, что и вызывает' str() '). EDIT: Только когда НЕ используется строка concat внутри fn. – gos1

+1

@ gos1: не при использовании '+', чтобы сначала соединить значения. –

+0

Это то, что я получаю, когда я делаю слишком много Java и недостаточно Python, спасибо! – gos1

0

Чтобы ответить на ваш вопрос спрашивая пользователя, сколько он хочет десятичное:

#! /usr/bin/python3 

decimals = int (input ('How many decimals? ')) 
print ('{{:.{}f}}'.format (decimals).format (1/7)) 
+0

Не нужно идти на эту длину; вы можете сделать это с помощью * one * '.format()' call напрямую. См. Мой ответ. –

+0

Аккуратно ............ – Hyperboreus

Смежные вопросы