在python中没有空格的情况下返回的打印语句

时间:2018-07-16 13:37:50

标签: python string python-3.x

这是我的代码:

class Student(Person):

    def __init__(self, firstName, lastName, idNumber,scores):
        self.firstName = firstName
        self.lastName = lastName
        self.idNumber = idNumber
        self.testscores = scores

    def calculate(self):
        average = sum(self.testscores) / len(self.testscores)
        if average>=90 and average<=100 :
            return'O'
        elif average>=80 and average<90 :
            return'E'
        elif average>=70 and average<80 :
            return'A'
        elif average>=55 and average<70 :
            return'P'
        elif average>=40 and average<55 :
            return'D'
        else:
            return'T'

语句:print("Grade: ", s.calculate())返回Grade: O(两个空格)而不是Grade: O(单个空格)。

由于上面的打印语句处于锁定的存根代码中,因此我无法对其进行修改。

反正我可以从计算函数返回时删除多余的空间吗?

编辑:为了更好地理解问题,请考虑以下内容 image 由于存在额外的空间,其中唯一的区别是我的输出和预期输出的第三条语句。

3 个答案:

答案 0 :(得分:3)

print函数已经在其每个参数中打印了一个空格作为定界符,因此通过在"Grade: "中添加一个空格,就可以使其在冒号和成绩之间打印另一个空格。只需将"Grade: "替换为"Grade:",它将输出而没有多余的空间。

答案 1 :(得分:0)

您可以指定sep='',即空字符串:

print('Grade: ', s.calculate(), sep='')

或者您可以从第一个参数中删除空格:

print('Grade:', s.calculate())

或者,您可以使用字符串格式:

print(f'Grade: {s.calculate()}')          # 3.6+
print('Grade: {}'.format(s.calculate()))  # pre-3.6

要解决此类问题,您可以使用内置的help,它告诉您sep的默认参数是单个空格:

help(print)

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

    ...
    sep:   string inserted between values, default a space.
    ...

有趣的是,official docs弄错了:

  

打印(*对象,sep ='',end ='\ n',file = sys.stdout,flush = False)

     

将对象打印到文本流文件中,用sep分隔,然后跟随   最后。 sep,end,file和flush(如果存在)必须作为关键字给出   争论。

答案 2 :(得分:0)

  

由于上面的打印语句处于锁定的存根代码中,因此我无法对其进行修改。

     

反正我可以从计算函数返回时删除多余的空间吗?

如果我没有误会,您可以更改caculate函数,但不能更改print,并且您只想在输出中看到一个空格,而您在python3中。

然后您可以使用退格键\b,例如从return 'O'return '\bO',其他回报也需要更改。

用于快速测试的简单代码:

def fun():
  return 'O'

def fun2():
  return '\bO'

print("Grade: ", fun())
print("Grade: ", fun2())