Jadi saya punya kode yang berfungsi dengan baik tanpa fungsi. Tetapi saya ingin mengubah ini di dalam fungsi, tetapi itu tidak berfungsi dengan baik. Misalnya, saya memiliki akhir = "". Ini tidak berhasil di ...

-3
The Kingfisher 6 April 2021, 02:11

2 jawaban

Jawaban Terbaik

Fungsi harus ditambahkan ke string alih-alih pencetakan, dan kemudian mengembalikan string. Append \n untuk menambahkan baris baru.

def underscore_hash_staircase(number):
    result = ""
    if number > 0:
        k = 2 * number - 2
        for i in range(0, number):
           for j in range(number-1, k):
                result += "_"
           k = k - 1
           for j in range(0, i + 1):
               result += "#"
           result += "\n"
    else:
        number = -number
        i = number
        while i >= 1:
            j = number
            while j > i:
                result += "_"
                j -= 1
            k = 1
            while k <= i:
                result += "#"
                k += 1
            result += "\n"
            i -= 1
    return result

print(underscore_hash_staircase(8))

Anda juga tidak membutuhkan semua loop batin itu. Anda dapat mengulangi string dengan mengalikannya.

def underscore_hash_staircase(number):
    result = ""
    if number > 0:
        k = 2 * number - 2
        for i in range(1, number + 1):
           result += "_" * (number - i)
           result += "#" * i
           result += "\n"
    else:
        number = -number
        for i in range(number, 0, -1):
            result += "_" * (number - i)
            result += "#" * i
            result += "\n"
    return result

print(underscore_hash_staircase(8))
print(underscore_hash_staircase(-8))
0
Barmar 5 April 2021, 23:29

Karena suatu fungsi hanya dapat mengembalikan satu nilai, alih-alih mencetak, Anda ingin menambahkan ke variabel untuk kembali alih-alih mencetak. Mencoba:

def underscore_hash_staircase(number):
    returnValue = ""  # start as empty string

    if number > 0:
        k = 2 * number - 2
        for i in range(0, number):
            for j in range(number-1, k):
                returnValue += "_"
            k = k - 1
            for j in range(0, i + 1):
                returnValue += "#"
            returnValue += "\n"  # adding a new line
    else:
        number = int(str(number).replace("-", ""))
        i = number
        while i >= 1:
            j = number
            while j > i:
                returnValue += "_"
                j -= 1
            k = 1
            while k <= i:
                returnValue += "#"
                k += 1
            returnValue += "\n"
            i -= 1
            
print(underscore_hash_staircase(8))

Sunting: Missed a Print saat mengganti

1
Scrapper142 5 April 2021, 23:25