这是我的代码:
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 由于存在额外的空间,其中唯一的区别是我的输出和预期输出的第三条语句。
答案 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())