Aufgabe

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
d_rose
User
Beiträge: 57
Registriert: Dienstag 30. Oktober 2018, 11:34

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)
Hart mit Bart
User
Beiträge: 25
Registriert: Dienstag 30. Oktober 2018, 12:05

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.
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

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
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
d_rose
User
Beiträge: 57
Registriert: Dienstag 30. Oktober 2018, 11:34

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.
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Du kannst alles hier nachschauen: https://www.python.org/doc/
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
d_rose
User
Beiträge: 57
Registriert: Dienstag 30. Oktober 2018, 11:34

Danke dir Thomas und dir auch Hart mit Bart für den Einsatz und die Lösung.
d_rose
User
Beiträge: 57
Registriert: Dienstag 30. Oktober 2018, 11:34

Danke dir Thomas und dir auch Hart mit Bart für den Einsatz und die Lösung.
Benutzeravatar
__blackjack__
User
Beiträge: 13079
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

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()
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten