Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
likorn
/
iax0583
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
f804e60f
authored
Oct 16, 2017
by
likorn
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cought! the errors and fixed the thing with infinite and complex numbers. i hope XD
parent
cf63888d
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
21 additions
and
19 deletions
homework1/main.py
homework1/main.py
View file @
f804e60f
...
...
@@ -2,7 +2,7 @@ import math
def
input_float
(
text
):
# check if the input can be converted to float to prevent errors
# check if the input can be converted to
a
float to prevent errors
inp
=
input
(
text
)
try
:
float
(
inp
)
...
...
@@ -21,19 +21,14 @@ def input_with_conditions(text, operator):
# check if the input fits the conditions listed in the task, i.e.
# H > 0, C >=1
# since we'll need to divide by A I also added A != 0 to prevent the errors
error_msg
=
"The value doesn't fit the conditions, try again "
value
=
input_float
(
text
)
if
(
operator
==
'>'
and
value
<=
0
)
or
(
operator
==
'>='
and
value
<
1
):
return
input_with_conditions
(
error_msg
,
operator
)
elif
operator
==
'!='
and
value
<=
0
:
error_msg
=
"Hey, sorry, we'll have to divide by A and get the square root of it, so all of the values less "
\
"or equal to 0 are unacceptable "
return
input_with_conditions
(
error_msg
,
operator
)
return
input_with_conditions
(
"The value doesn't fit the conditions, try again "
,
operator
)
return
value
def
calculate_x
(
until
):
# calculate x in the necessary point
s
# calculate x in the necessary point
xx
=
a
+
h
for
i
in
range
(
1
,
until
+
1
):
xx
=
xx
+
h
*
math
.
pow
(
c
,
i
)
...
...
@@ -41,9 +36,14 @@ def calculate_x(until):
def
calculate_y
(
xx
):
# calculate y according to the formula and return the (x, y) function in an array
yy
=
float
(
math
.
pow
(
xx
,
2
)
+
20
*
xx
-
14
)
/
math
.
sqrt
(
xx
)
-
(
1
+
xx
)
/
xx
return
round
(
yy
,
3
)
# calculate y according to the formula
if
xx
<
0
:
return
'complex number'
elif
xx
==
0
:
return
'infinite'
else
:
yy
=
float
(
math
.
pow
(
xx
,
2
)
+
20
*
xx
-
14
)
/
math
.
sqrt
(
xx
)
-
(
1
+
xx
)
/
xx
return
round
(
yy
,
3
)
def
print_table
():
...
...
@@ -58,26 +58,28 @@ def print_table():
# input all the values: A, H, C, YM
a
=
input_with_conditions
(
"Enter a starting value A = "
,
'!='
)
# a = input_with_conditions("Enter a starting value A = ", '!=')
a
=
input_float
(
"Enter a starting value A = "
)
h
=
input_with_conditions
(
"Enter a step H = "
,
'>'
)
c
=
input_with_conditions
(
"Enter the step's coefficient C = "
,
'>='
)
ym
=
input_float
(
"Enter function value upper limit YM = "
)
x
=
[]
y
=
[]
if
calculate_y
(
a
)
<=
ym
:
if
calculate_y
(
a
)
==
'complex number'
or
calculate_y
(
a
)
==
'infinite'
or
calculate_y
(
a
)
<=
ym
:
x
.
append
(
round
(
a
,
3
))
y
.
append
(
calculate_y
(
a
))
if
calculate_y
(
a
+
h
)
<=
ym
:
if
calculate_y
(
a
+
h
)
==
'complex number'
or
calculate_y
(
a
+
h
)
==
'infinite'
or
calculate_y
(
a
+
h
)
<=
ym
:
x
.
append
(
round
(
a
+
h
,
3
))
y
.
append
(
calculate_y
(
a
+
h
))
counter
=
1
while
counter
<
14
:
x
.
append
(
calculate_x
(
counter
))
y
.
append
(
calculate_y
(
calculate_x
(
counter
)))
counter
+=
1
if
not
y
[
len
(
y
)
-
1
]
<=
ym
:
y
.
remove
(
y
[
len
(
y
)
-
1
])
if
calculate_y
(
calculate_x
(
counter
))
<=
ym
\
or
calculate_y
(
calculate_x
(
counter
))
==
'complex number'
or
calculate_y
(
calculate_x
(
counter
))
==
'infinite'
:
x
.
append
(
calculate_x
(
counter
))
y
.
append
(
calculate_y
(
calculate_x
(
counter
)))
counter
+=
1
else
:
break
print_table
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment