Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
P
python Rechner
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Martin Roberto Castillo Hund
python Rechner
Commits
c84e94b5
Commit
c84e94b5
authored
4 years ago
by
Martin Roberto Castillo Hund
Browse files
Options
Downloads
Patches
Plain Diff
fast armens app version, angefangen mit tests
parents
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
app.py
+125
-0
125 additions, 0 deletions
app.py
with
125 additions
and
0 deletions
app.py
0 → 100755
+
125
−
0
View file @
c84e94b5
#!/usr/bin/env python3
from
tkinter
import
*
class
Rechner
:
def
__init__
(
self
):
self
.
zahlen
=
[]
self
.
operatoren
=
[]
self
.
lastchar
=
''
def
show_status
(
self
):
print
(
"
zahlen:
"
,
self
.
zahlen
)
print
(
"
operatoren:
"
,
self
.
operatoren
)
print
(
"
letztes zeichen:
"
,
self
.
lastchar
)
def
add_character
(
self
,
char
):
# input: 42
# 1. 4 -> [4]
# 2. 2 -> [] -> [42]
ziffern
=
(
"
0
"
,
"
1
"
,
"
2
"
,
"
3
"
,
"
4
"
,
"
5
"
,
"
6
"
,
"
7
"
,
"
8
"
,
"
9
"
)
# Das aktuelle Zeichen ist eine Ziffer.
if
char
in
ziffern
:
charint
=
int
(
char
)
if
self
.
lastchar
in
ziffern
:
oldint
=
self
.
zahlen
.
pop
()
self
.
zahlen
.
append
(
oldint
*
10
+
charint
)
else
:
self
.
zahlen
.
append
(
charint
)
self
.
lastchar
=
char
self
.
show_status
()
return
# wir lesen einen operator ein.
operatoren
=
tuple
(
"
+-*/
"
)
if
char
in
operatoren
:
# bevor wir diesen operator hinzufügen: überprüfe, ob
# nicht gerade zuvor schon ein operator hinzugefügt wurde.
# falls ja, entferne den vorherigen operator
if
self
.
lastchar
in
operatoren
:
self
.
operatoren
.
pop
()
# wurde überhaupt schon eine Zahl eingegeben?
if
not
self
.
zahlen
:
# die liste ist wohl leer.
self
.
show_status
()
return
self
.
operatoren
.
append
(
char
)
self
.
lastchar
=
char
self
.
show_status
()
return
def
calculate
(
self
):
zahlen
=
self
.
zahlen
operatoren
=
self
.
operatoren
op
=
operatoren
.
pop
()
rechteZahl
=
zahlen
.
pop
()
linkeZahl
=
zahlen
.
pop
()
if
op
==
"
+
"
:
ergebnis
=
linkeZahl
+
rechteZahl
zahlen
.
append
(
ergebnis
)
elif
op
==
"
-
"
:
zahlen
.
append
(
linkeZahl
-
rechteZahl
)
elif
op
==
"
*
"
:
zahlen
.
append
(
linkeZahl
*
rechteZahl
)
elif
op
==
"
/
"
:
#XXX durch 0?
zahlen
.
append
(
linkeZahl
/
rechteZahl
)
else
:
print
(
"
Unerwarteter Operator in Rechner.calculate():
"
,
op
)
class
App
:
def
__init__
(
self
,
master
):
self
.
buffer
=
""
self
.
rechner
=
Rechner
()
tasten
=
(
"
7
"
,
"
8
"
,
"
9
"
,
"
+
"
,
"
4
"
,
"
5
"
,
"
6
"
,
"
-
"
,
"
1
"
,
"
2
"
,
"
3
"
,
"
*
"
,
"
.
"
,
"
0
"
,
"
=
"
,
"
/
"
)
for
i
,
t
in
enumerate
(
tasten
):
# zugehörige zeile bestimmen
row
=
i
//
4
+
1
# zugehörige spalte bestimmen
col
=
i
%
4
Button
(
master
,
text
=
t
,
command
=
self
.
button_cmd
(
t
)).
grid
(
row
=
row
,
column
=
col
,
sticky
=
N
+
S
+
E
+
W
)
Button
(
master
,
text
=
"
cl
"
,
command
=
self
.
clear
).
grid
(
row
=
0
,
column
=
0
,
sticky
=
N
+
S
+
E
+
W
)
self
.
anzeige
=
Label
(
master
,
text
=
"
0
"
)
self
.
anzeige
.
grid
(
row
=
0
,
column
=
1
,
columnspan
=
3
)
for
i
in
range
(
0
,
4
):
Grid
.
columnconfigure
(
master
,
i
,
weight
=
1
)
for
i
in
range
(
0
,
5
):
Grid
.
rowconfigure
(
master
,
i
,
weight
=
1
)
master
.
geometry
(
"
250x150+700+250
"
)
def
button_cmd
(
self
,
t
):
"""
gibt eine funktion zurück, welche eine Button ausführen
kann. Es wird der Text t in self.buffer gespeichert.
"""
def
save
():
self
.
buffer
=
self
.
buffer
+
t
self
.
anzeige
.
config
(
text
=
self
.
buffer
)
self
.
rechner
.
add_character
(
t
)
return
save
def
clear
(
self
):
self
.
buffer
=
""
self
.
anzeige
.
config
(
text
=
""
)
self
.
rechner
=
Rechner
()
if
__name__
==
'
__main__
'
:
root
=
Tk
()
app
=
App
(
root
)
root
.
mainloop
()
#root.destroy()
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment