Seite 1 von 1

Aufgabe

Verfasst: Dienstag 30. Oktober 2018, 18:22
von d_rose
Hallo, seit Stunden hänge ich an dieser Aufgabe.
3 Viertel des Rechtecks habe ich hinbekommen zu erstellen.
Allerdings fehlt mir nun jeglicher Ansatz wie ich die Höhe auf der rechten Seite darstellen lassen kann. Ich weis das Forum ist nicht dazu da um mir einfach die Lösung vors Gesicht zu schmeissen, deswegen freue ich mich über jegliche Gedankenansätze die man mir gibt.

P.S. Bin noch totaler Anfänger im Programmieren.

Aufgabe : Schreiben sie ein Python-Programm, dass 2 int-Zahlen a und b einliest und ein Rechteck
mit den Seitenlängen a(Höhe) und b(Breite) ausgibt, welches durch - und | umrandet ist.
Ecken bleiben dabei frei.

Beispiel : a= 3 b= 6

------
| |
| |
| |
------

Mein Programm bisher :

a = int(input("Geben sie eine Breite ein: "))
b = int(input("Geben sie eine Höhe ein : "))


höhe = b * "|\n"

breite = a * "-"



while True:
eingabe = input(" " + breite + "\n" + höhe + " " + breite)

Re: Aufgabe

Verfasst: Dienstag 30. Oktober 2018, 18:51
von Hart mit Bart
Ich bin auch Anfänger, daher ist das ein Schuss ins Blaue:

Als ersten Versuch hätte ich wohl folgendes versucht:

Code: Alles auswählen

import sys

a = 5
b = 11

# 5 mal "_" ausgeben
for breite in range(b):
    sys.stdout.write("_") # verhindert Zeilenumbruch
print() # hier ist ein Zeilenumbruch

# gibt einen "|" am Anfang und Ende aus, dazwischen Leerzeichen
for hoehe in range(a):
    sys.stdout.write("|")
    for hoehe in range(b-2): # 2 Leerzeichen werden abgezogen wegen der "|"
        sys.stdout.write(" ")
    sys.stdout.write("|")
    print()
    
# siehe oben
for breite in range(b):
    sys.stdout.write("_")
Ganz bestimmt unsauber und noch ein wenig bestimmter viel einfacher möglich, aber vielleicht kannst du das für dich anpassen.

Re: Aufgabe

Verfasst: Dienstag 30. Oktober 2018, 19:09
von ThomasL
simple, nicht elegant

Code: Alles auswählen

hoehe = int(input('Geben Sie die Höhe ein: '))
breite = int(input('Geben Sie die Breite ein: '))

top_bottom = ' ' + breite * '-' + ' '
sides = 'I' + breite * ' ' + 'I'

print(top_bottom)
for _ in range(hoehe):
    print(sides)
print(top_bottom)

Geben Sie die Höhe ein:  6
Geben Sie die Breite ein:  7
 ------- 
I       I
I       I
I       I
I       I
I       I
I       I
 ------- 
falls ich die Aufgabe falsch verstanden habe und das Quadrat zu groß ist,
von hoehe und breite 2 abziehen, falls jeweils >2

Re: Aufgabe

Verfasst: Dienstag 30. Oktober 2018, 19:15
von d_rose
ich bin schon mal sehr dankbar für die Antworten. allerdings sind das wieder alles neue Befehle mit denen ich noch nichts zu tun hatte scheinbar gibt 1000 verschiedene Varianten zu dieser Aufgabe. mein Problem wäre jetzt ds ich mir stundenlang wieder alles raussuchen muss was die ganzen Befehle heissen, zumal wir diese noch nicht im Unterricht hatten.

Re: Aufgabe

Verfasst: Dienstag 30. Oktober 2018, 19:18
von ThomasL
Du kannst alles hier nachschauen: https://www.python.org/doc/

Re: Aufgabe

Verfasst: Dienstag 30. Oktober 2018, 19:33
von d_rose
Danke dir Thomas und dir auch Hart mit Bart für den Einsatz und die Lösung.

Re: Aufgabe

Verfasst: Dienstag 30. Oktober 2018, 19:33
von d_rose
Danke dir Thomas und dir auch Hart mit Bart für den Einsatz und die Lösung.

Re: Aufgabe

Verfasst: Mittwoch 31. Oktober 2018, 12:48
von __blackjack__
Eine Lösung ohne explizite Schleife:

Code: Alles auswählen

#!/usr/bi/env python3


def create_rectangle(width, height):
    top_bottom_line = f' {"-" * width}\n'
    middle_line = f'|{" " * width}|\n'
    return top_bottom_line + middle_line * height + top_bottom_line


def main():
    width = int(input('Bitte gib die Breite ein: '))
    height = int(input('Bitte gib die Höhe ein: '))
    print(create_rectangle(width, height))


if __name__ == '__main__':
    main()