Seite 1 von 1

Betrag

Verfasst: Mittwoch 16. September 2015, 15:07
von rollo70
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ß

Re: Betrag

Verfasst: Mittwoch 16. September 2015, 15:13
von 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()

Re: Betrag

Verfasst: Mittwoch 16. September 2015, 15:17
von MagBen

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)

Re: Betrag

Verfasst: Mittwoch 16. September 2015, 23:13
von snafu
@MagBen: `.strip()` ist hier überflüssig. Sowohn `int()` als auch `float()` entfernen der Leerraum bei Strings rechts und links von der Zahl automatisch.