Hilfe bei Skript
Verfasst: Sonntag 29. November 2020, 14:52
Hallo ich bräuchte dringend hilfe bei einer Uni Aufgabe. Ich bin leider kompletter Programmier Neuling. Es geht um das folgende Programm:
# Beginn der Funktion index_von_variable
def index_von_variable(text, variable):
"""
Gibt den Index des ersten Auftretens der
Variable >>variable<< im Programmtext
>>text<< zurueck.
Ist die Variable nicht in >>text<< enthalten,
wird -1 zurueckgegeben.
"""
pass
# Hier fehlt Deine Loesung!
# Ende der Funktion index_von_variable
#######################################
####### AUFGABE b) #######
#######################################
## Beginn der Funktion 'ersetze_variable'
def ersetze_variable(programmtext, alt, neu):
"""
In einem Programmtext wird - wenn moeglich -
die Variable alt durch die Variable neu
ersetzt.
"""
pass
# Hier fehlt Deine Loesung!
# Ende der Funktion 'variablen_ersetzen'
# =======================================================
###### TESTUMGEBUNG (HAUPTPROGRAMM) ######
DATEI = 'programm.py' # Beispiel, kann geaendert werden
VARIABLENNAME_ALT = 'x' # Beispiel, kann geaendert werden
VARIABLENNAME_NEU = 'y' # Beispiel, kann geaendert werden
# -------------------------------------------------------
# Ab hier bitte nichts veraendern!
try:
#Öffnen der Datei 'DATEI'
datei = open(DATEI)
# Anlegen der neuen Datei
DATEI_NEU = name_neu(DATEI)
datei_neu = open(DATEI_NEU,'w')
# Einlesen des Inhalts der Datei
text = datei.read()
# Kontrollausdruck vorher
print(text)
# Aufruf der Funktion 'index_von_variable'
print(index_von_variable(datei, VARIABLE_ALT))
# Aufruf der Funktion 'ersetze_variable'
text_neu = ersetze_variable(text, VARIABLE_ALT, VARIABLE_NEU)
# Kontrollausdruck nachher
print(text_neu)
# Schreiben in neue Datei bei Veraenderungen
if text != text_neu:
datei_neu.write(text)
datei.close()
datei_neu.close()
except:
print('Da hat was nicht geklappt.')
##################### ENDE DER TESTUMGEBUNG ######################
#### START Hilfsfunktion zur Bestimmung des neuen Dateinamens ####
def name_neu(datei):
"""
Erweiterung des Dateinamens um den Suffix '_NEU'
Die Kennung wird beibehalten.
"""
temp = datei.find('.')
punkt = temp
while temp > -1:
temp = datei[punkt+1:].find('.')
if temp > -1:
punkt += temp+1
if punkt > -1:
return datei[:punkt] + '_NEU' + datei[punkt:]
else:
return datei + '_NEU'
#### ENDE Hilfsfunktion zur Bestimmung des neuen Dateinamens ####
Und ich soll zwei Aufgaben dazu erledigen:
a) eine Funktion schreiben die Variablen im Text sucht
Dis soll die Funtkion index von variable(text:str, variable:str) ! int
erledigen, die den Index des ersten Zeichens für das erste Vorkommen der Variablen
im Text zurückgibt. Ist die Variable nicht enthalten, wird -1 zurückgegeben.
Beachte, dass '\n' den Zeilenwechsel darstellt und wie ein einziges Zeichen gezahlt
wird.
Hier einige Beispiele:
>>> text = 'a1 = 2\na = a1 + 3\na2 = a + a1'
>>> index_von_variable(text, 'a1')
0
>>> index_von_variable(text, 'a')
7
>>> index_von_variable(text, 'b')
-1
b) eine zweite Funktion: ersetze variable(text:str, alt:str, neu:str) ! str
Die Funktion ersetzt jedes Vorkommen einer Variablen in
einem Programmtext durch einen neuen Bezeichner. Das geht natürlich nur, wenn
der neue Bezeichner noch nicht im Programm verwendet wurde.
Auch hier zwei Minimalbeispiele:
>>> ersetze_variable('a = 2\n b= 3*a\n c = a * b', 'a', 's')
's = 2\n b= 3*s\n c = s * b'
>>> ersetze_variable('a = 2\n b= 3*a\n c = a * b', 'b', 'c')
'a = 2\n b= 3*a\n c = a * b'
Falls mir jemand helfen könnte wäre ich sehr dankbar. Ich verzweifele schon dabei die Datei in Python zu Öffnen.
# Beginn der Funktion index_von_variable
def index_von_variable(text, variable):
"""
Gibt den Index des ersten Auftretens der
Variable >>variable<< im Programmtext
>>text<< zurueck.
Ist die Variable nicht in >>text<< enthalten,
wird -1 zurueckgegeben.
"""
pass
# Hier fehlt Deine Loesung!
# Ende der Funktion index_von_variable
#######################################
####### AUFGABE b) #######
#######################################
## Beginn der Funktion 'ersetze_variable'
def ersetze_variable(programmtext, alt, neu):
"""
In einem Programmtext wird - wenn moeglich -
die Variable alt durch die Variable neu
ersetzt.
"""
pass
# Hier fehlt Deine Loesung!
# Ende der Funktion 'variablen_ersetzen'
# =======================================================
###### TESTUMGEBUNG (HAUPTPROGRAMM) ######
DATEI = 'programm.py' # Beispiel, kann geaendert werden
VARIABLENNAME_ALT = 'x' # Beispiel, kann geaendert werden
VARIABLENNAME_NEU = 'y' # Beispiel, kann geaendert werden
# -------------------------------------------------------
# Ab hier bitte nichts veraendern!
try:
#Öffnen der Datei 'DATEI'
datei = open(DATEI)
# Anlegen der neuen Datei
DATEI_NEU = name_neu(DATEI)
datei_neu = open(DATEI_NEU,'w')
# Einlesen des Inhalts der Datei
text = datei.read()
# Kontrollausdruck vorher
print(text)
# Aufruf der Funktion 'index_von_variable'
print(index_von_variable(datei, VARIABLE_ALT))
# Aufruf der Funktion 'ersetze_variable'
text_neu = ersetze_variable(text, VARIABLE_ALT, VARIABLE_NEU)
# Kontrollausdruck nachher
print(text_neu)
# Schreiben in neue Datei bei Veraenderungen
if text != text_neu:
datei_neu.write(text)
datei.close()
datei_neu.close()
except:
print('Da hat was nicht geklappt.')
##################### ENDE DER TESTUMGEBUNG ######################
#### START Hilfsfunktion zur Bestimmung des neuen Dateinamens ####
def name_neu(datei):
"""
Erweiterung des Dateinamens um den Suffix '_NEU'
Die Kennung wird beibehalten.
"""
temp = datei.find('.')
punkt = temp
while temp > -1:
temp = datei[punkt+1:].find('.')
if temp > -1:
punkt += temp+1
if punkt > -1:
return datei[:punkt] + '_NEU' + datei[punkt:]
else:
return datei + '_NEU'
#### ENDE Hilfsfunktion zur Bestimmung des neuen Dateinamens ####
Und ich soll zwei Aufgaben dazu erledigen:
a) eine Funktion schreiben die Variablen im Text sucht
Dis soll die Funtkion index von variable(text:str, variable:str) ! int
erledigen, die den Index des ersten Zeichens für das erste Vorkommen der Variablen
im Text zurückgibt. Ist die Variable nicht enthalten, wird -1 zurückgegeben.
Beachte, dass '\n' den Zeilenwechsel darstellt und wie ein einziges Zeichen gezahlt
wird.
Hier einige Beispiele:
>>> text = 'a1 = 2\na = a1 + 3\na2 = a + a1'
>>> index_von_variable(text, 'a1')
0
>>> index_von_variable(text, 'a')
7
>>> index_von_variable(text, 'b')
-1
b) eine zweite Funktion: ersetze variable(text:str, alt:str, neu:str) ! str
Die Funktion ersetzt jedes Vorkommen einer Variablen in
einem Programmtext durch einen neuen Bezeichner. Das geht natürlich nur, wenn
der neue Bezeichner noch nicht im Programm verwendet wurde.
Auch hier zwei Minimalbeispiele:
>>> ersetze_variable('a = 2\n b= 3*a\n c = a * b', 'a', 's')
's = 2\n b= 3*s\n c = s * b'
>>> ersetze_variable('a = 2\n b= 3*a\n c = a * b', 'b', 'c')
'a = 2\n b= 3*a\n c = a * b'
Falls mir jemand helfen könnte wäre ich sehr dankbar. Ich verzweifele schon dabei die Datei in Python zu Öffnen.