# Rounding in Python, but without using int(), if(), round(), ljust(), %, def, or the math module

## Question:

I’m stuck on a beginner level coding problem. Goal is to round a float number and output an integer. So `x = 3.14159`

, output `3`

(not `3.0`

). We’re supposed to be able to do this using only what we’ve learned, and what we’ve learned is only 3 functions: `.find`

, `<string>[:]`

, and converting the given `x = float num`

into a string, via `str()`

.

How should I be thinking about this? When I write out what logically needs to happen, I always find myself needing `if()`

.

I ended up getting partial credit with the following code:

given: `x = 3.14159`

```
x = int(round(x))
print x
```

But I would like to solve it without `int()`

or `round()`

, or `if()`

. My first thought was to use `x[2:3]`

and `x[3:4]`

to check the tenths and hundredths place values, but to proceed I still run into the `if()`

wall.

## Answers:

You should use the built in string format feature:

```
x = 123.35643
rounded = f'{x:.2f}'
print(rounded)
```

Your output would be: `123.36`

Or to get the whole number:

```
rounded = f'{x:.0f}'
print(rounded)
```

This is a poorly constructed string manipulation problem because you’d never actually go about solving this problem this way. But using only what you’ve been taught, you can accomplish the task:

```
x = 3.14159
# 0.5 (optional?) add 0.5 to x so that it will be properly rounded
# when removing the digits after the decimal
x += 0.5
# 1. convert the int to a string
x_str = str(x)
# 2. find the index of the decimal point in the string
decimal_idx = x_str.find('.')
# 3. slice the string from the beginning to the decimal
x_int_str = x_str[:decimal_idx]
# 4. do something with the value
print(x_int_str)
```