Python Hilfe Programmcode?

2 Antworten

Dim, Sub, For...Next ? Der Quellcode den du da hast ist Basic, nicht Python

Der FS stellt doch einige solche Fragen. Mal ist es Java und soll Python sein, dann eben eine andere Sprache.

Vermutlich bekommt er alle möglichen Sprachen (inklusive Pseudocode) vorgesetzt und soll sagen was der Code tut.

Das soll wohl dazu dienen die Gemeinsamkeiten der verschiedenen Sprachen zu zeigen.

Ist man bei einer Sprache sattelfest, dann kann man auch andere einigermaßen gut lesen (sofern nicht komplett andere Paradigmen genutzt werden).

Gruß

0

Hallo,

wie wäre es mit:

i = 0
j = 0
n = 0

while i < 20:
    for j in range(1, 3):
        n = i + j

        if i < j:
            i = i + n

        else:
            i = i + n

print(n)

Ich weiß nur nicht ob bei

For j = 1 To 3

die 3 inklusiv, oder exclusiv sein soll.

Ist die 3 inklusiv, dann ist das Ergebnis: 51

Ist die 3 exclusiv, dann ist das Ergebnis: 11

Übrigens ist der Teil hier ziemlich seltsam:

 If i < j Then
            i = i + n
        Else 
            i = i+n
        End If

Egal ob i < j ist oder nicht, in jedem Fall gilt i=i+n. Man kann also die gesamte Bedingung streichen.

Willst du sehen was das Programm genauer tut, dann empfehle ich ein paar Ausgaben, oder einfach den Debugger zu benutzen. Wie wäre es damit:

i = 0
j = 0
n = 0

while i < 20:
    for j in range(1, 3):
        n = i + j

        if i < j:
            i = i + n
        else:
            i = i + n

        print("i:" + str(i) + " j:" + str(j) + " n:" + str(n))

print(n)

Gruß

Woher ich das weiß:
Berufserfahrung

könntest du mir den rechnevorgang aufschreiben wie du auf die 51 gekommen bist

0
@Marc1738

Klar:

i:1 j:1 n:1
i:4 j:2 n:3
i:11 j:3 n:7
i:23 j:1 n:12
i:48 j:2 n:25
i:99 j:3 n:51

jede Zeile ist die, die nach einem Durchlauf der for-Schleife zu sehen ist.

Gruß

0
@AldoradoXYZ

Ich vermute ganz stark, dass es an einer Stelle

i = i * n heißen muss. Ist allerdings eine Vermutung.

Gruß

0
@AldoradoXYZ

ich verstehe es nicht ganz könntest du es mir noch genauer erklären

0
@Marc1738

Klar, hier in Einzelschritten:

Betrete die for Schleife. i ist 0
In der Schleife ist j = 1
Rechne n = i + j also: n=0 + 1
Prüfe nun ob i < j ist, also ob 0 < 1 leider wird in jedem Fall i = i + n gerechnet, also:
i = 0 + 1
Damit ergibt sich jetzt i:1 j:1 n:1


In der Schleife ist j = 2
Rechne n = i + j also: n=1 + 2
Prüfe nun ob i < j ist, also ob 1 < 2 leider wird in jedem Fall i = i + n gerechnet, also:
i = 1 + 3
Damit ergibt sich jetzt i:4 j:2 n:3


In der Schleife ist j = 3
Rechne n = i + j also: n=4 + 3
Prüfe nun ob i < j ist, also ob 4 < 3 leider wird in jedem Fall i = i + n gerechnet, also:
i = 4 + 7
Damit ergibt sich jetzt i:11 j:3 n:7


Betrete die for Schleife. i ist 11
In der Schleife ist j = 1
Rechne n = i + j also: n=11 + 1
Prüfe nun ob i < j ist, also ob 11 < 1 leider wird in jedem Fall i = i + n gerechnet, also:
i = 11 + 12
Damit ergibt sich jetzt i:23 j:1 n:12


In der Schleife ist j = 2
Rechne n = i + j also: n=23 + 2
Prüfe nun ob i < j ist, also ob 23 < 2 leider wird in jedem Fall i = i + n gerechnet, also:
i = 23 + 25
Damit ergibt sich jetzt i:48 j:2 n:25


In der Schleife ist j = 3
Rechne n = i + j also: n=48 + 3
Prüfe nun ob i < j ist, also ob 48 < 3 leider wird in jedem Fall i = i + n gerechnet, also:
i = 48 + 51
Damit ergibt sich jetzt i:99 j:3 n:51


Letztendlich ist n = 51

Gruß

0
@AldoradoXYZ
In der Schleife ist j = 2
Rechne n = i + j also: n=1 + 2
Prüfe nun ob i < j ist, also ob 1 < 2 leider wird in jedem Fall i = i + n gerechnet, also:
i = 1 + 3
Damit ergibt sich jetzt i:4 j:2 n:3

warum wird das so gerchnet also warum nehme ich else und nicht gewohnt die ander If

0
@Marc1738

Sagte ich ja schon,

Im if-Block und dem else-Block steht beide male i = i + n

Die Bedingung ist also völlig überflüssig.

Du musst eigentlich gar nicht prüfen ob i < j ist. Du kannst einfach bei jedem Durchlauf i = i + n rechnen.

Gruß

0
@Marc1738

Wenn ich bei "i < j" i = i + n rechne und ansonsten auch i = i + n. Dann ist es völlig egal ob i<j oder i>=j. In jedem Fall wird i = i + n gerechnet.

Keine Ahnung warum das jemand in den Code einbaut, evtl. um zu verwirren?

Gruß

1

Ich habe einen Code in Excel der in der If Funktion mir sagt das er einen Audruck erwartet.. Ab If ist alles rot markiert.?

Sub Tabellen_ausblenden()

Dim wks As Worksheet

For Each wks In ThisWorkbook.Worksheets  

If wks.Name = "Tabelle1" Then     wks.Visible = xlVeryHidden   End If Next wks

End Sub

...zur Frage

Python Programmcode?

Hallo,

könnte mir jemand bei einer Python aufgabe mit Erklärung bitte helfen ?

Vielen Dank

Dim z, n, j, As Long

   If k < 5 Then

       z = (z+1) * k

       

   Else

        j=k

        While j > 0

            z = z + j

            j = j - k

       Wend

   End If

Next k

Debug.Print "Das Ergebnis lautet: " & z

End Sub

...zur Frage

Hilfe bei VBA Code, FilePicker geht nicht?

Hallo Leute,

ich habe hier einen Code. der funktioniert soweit aber nur mit msoFileDialogFolderPicker.

Wie bekomme ich den Code mit msoFileDialogFilePicker zum funktionieren? Ich bekomme fehler "Dateiname oder Nummer falsch"...

Code siehe unten!

Option Explicit
Sub Dateiimport()
Dim xRow As Long
Dim xDirect$, xFname$, InitialFoldr$
InitialFoldr$ = "C:\"
Range("M2").Value = 1
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = Application.DefaultFilePath & "\"
.Title = "Bitte den Pfad auswählen"
.InitialFileName = InitialFoldr$
.Show
If .SelectedItems.count <> 0 Then
xDirect$ = .SelectedItems(1) & "\"
xFname$ = Dir(xDirect$, 7)
Do While xFname$ <> ""
ActiveCell.Offset(xRow) = xFname$
xRow = xRow + 1
If xRow = 12 Then
xRow = 0
ActiveCell.Offset(0, 3).Select
End If
xFname$ = Dir

Dim d As Double d = Range("M2").Value

Range("M2") = d + 1 If Range("M2").Value = 36 Then MsgBox "Maximum erreicht!." End If If Range("M2").Value = 37 Then End Loop End If End With End Sub

...zur Frage

Was möchtest Du wissen?