Betrag

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
rollo70
User
Beiträge: 6
Registriert: Donnerstag 16. Juli 2015, 14:03

Hi zusammen,

ich habe eine Textdatei in der entweder eine negative oder eine positive Zahl x steht und möchte von dieser Zahl 2 addiren. Was ich nun möchte ist, dass von der Zahl zunächst der Betrag genommen wird und das Ergebnis dann die Zahl x in eine neue Datei schreibt, also: |x|-2=y

Code: Alles auswählen

with open('quelle.txt') as source:
    with open('ziel.txt', 'w') as aim:
        for line in source:
            |x|-2=y 
            aim.write(y)
leider verstehe ich nicht wie ich die Zahl in der quelldatei dem Parameter x zuornde bzw. wie ich das am besten lösen kann.

Besten Gruß
BlackJack

@rollo70: Den Betrag bildet man mit der `abs()`-Funktion. Bei Zuweisungen muss der Zielname auf der linken Seite vom ``=`` stehen. Und Du musst für das `x` halt den Inhalt der Zeile, was ja eine Zeichenkette ist, in eine Zahl umwandeln. Falls es eine ganze Zahl sein soll eben mit der `int()`-Funktion.

Das sind jetzt aber alles ziemliche Grundlagen die ein Grundlagentutorial vermittelt haben sollte.

Edit: Ungetestet:

Code: Alles auswählen

def main():
    with open('quelle.txt') as source_file:
        new_value = abs(int(source_file.read())) - 2
    with open('ziel.txt', 'w') as target_file:
        target_file.write('{0}\n'.format(new_value))


if __name__ == '__main__':
    main()
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Code: Alles auswählen

with open('quelle.txt') as source:
    with open('ziel.txt', 'w') as aim:
        for line in source:
            x = float(line.strip())
            y = abs(x)-2
            aim.write("%G\n" % y)
a fool with a tool is still a fool, www.magben.de, YouTube
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@MagBen: `.strip()` ist hier überflüssig. Sowohn `int()` als auch `float()` entfernen der Leerraum bei Strings rechts und links von der Zahl automatisch.
Antworten