CS50 mario python менее удобная функция .rstrip - PullRequest
1 голос
/ 13 июля 2020

Я прохожу курс CS50, и сейчас я использую pset6, python код Mario.

Для функции rstrip () предполагается удалить новую строку в конце код. Я не знаю, что происходит, и это меня действительно беспокоит (я думаю, это синтаксическая ошибка, но я не уверен).

Пожалуйста, если бы вы могли помочь, это было бы здорово!

Примечание. Я использую символ «+» для обозначения «» только для личного понимания.

Мой код:

def input_number(message):
    while True:
        try:
            user_input = int(input(message))
        except ValueError:
            continue
        else:
            return user_input



height = input_number("Height: ")
while height < 1 or height > 8:
    height = int(input("Height: "))


i = 0
while i < height:
    print("\n")
    x = height-1
    a = 0
    while x>=i:
        print("+".rstrip("\n"))
        x-=1

    while a<=i:
        print("#".rstrip("\n"))
        a+=1

    i+=1
#print("\n")

что печатается:

Height: 5


+
+
+
+
+
#


+
+
+
+
#
#


+
+
+
#
#
#


+
+
#
#
#
#


+
#
#
#
#
#

ожидаемый результат:

    #
   ##
  ###
 ####
#####

Спасибо!

Ответы [ 2 ]

3 голосов
/ 13 июля 2020

Используйте end="" в методе печати, а не rstrip.

def input_number(message):
    while True:
        try:
            user_input = int(input(message))
        except ValueError:
            continue
        else:
            return user_input



height = input_number("Height: ")
while height < 1 or height > 8:
    height = int(input("Height: "))


i = 0
while i < height:
    x = height-1
    a = 0
    while x>=i:
        print(" ", end="")
        x-=1
    while a<=i:
        print("#", end="")
        a+=1
    print("")
    i+=1

Вывод:

Height: 5
     #
    ##
   ###
  ####
 #####

Пояснение:

rstrip is используется для удаления пробелов в конце строки. Например, когда мы хотим удалить нежелательные пробелы из введенной пользователем строки, мы можем использовать для этого rstrip. Другой вариант использования rstrip - опускание пробелов в строках при чтении файла.

С другой стороны, для форматирования выходной строки в желаемом формате мы манипулируем методом print. По умолчанию метод print выводит значения в отдельной строке.

Например,

print("some string") 
print("another string") 

Он покажет:

some string
another string

Согласно документация метода печати , мы можем использовать строку в аргументе end, чтобы перезаписать значение по умолчанию end='\n'.

Например,

print("some string", end="......") 
print("another string", end="!!!!!!") 

Будет показано:

some string......another string!!!!!!

Ссылка:

1 голос
/ 13 июля 2020

Похоже, вы хотите удалить \n в конце строки.

Вместо rstrip используйте print("whatever you want to output in here like # or +", end = "").

Причина, по которой rstrip не работает Работа в этом сценарии использования заключается в том, что он удаляет строку, которую вы ему передали, которая является «#» или «+». Там нет \n, который добавляется как конечный символ печати. ​​

def input_number(message):
    while True:
        try:
            user_input = int(input(message))
        except ValueError:
            continue
        else:
            return user_input



height = input_number("Height: ")
while height < 1 or height > 8:
    height = int(input("Height: "))


i = 0
while i < height:
    print("")
    x = height-1
    a = 0
    # while x>=i:
    #     print("+", end = "")
    #     x-=1

    while a<=i:
        print("#", end = "")
        a+=1

    i+=1

Вывод:

#
##
###
####
#####
...