这是我的代码:
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
(一个空格(。
由于上面的打印语句在锁定的存根代码中,我无法修改它
在从计算函数返回时,是否可以删除多余的空间?
编辑:为了更好地理解问题,请考虑形象其中唯一的区别是我的输出和预期输出的第三条语句,因为有额外的空间。
print
函数已经用一个空格作为分隔符打印了它的每个参数,所以通过在"Grade: "
中添加一个空格,可以使它在冒号和等级之间打印另一个空格。只需将"Grade: "
替换为"Grade:"
,它就可以在没有额外空间的情况下输出。
您可以指定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.
...
有趣的是,官方文件搞错了:
打印(*对象,sep='',end='n',file=sys.stdout,flush=False(
将对象打印到文本流文件中,用sep分隔,后跟最后。sep、end、file和flush(如果存在(必须作为关键字给定论点。
由于上面的打印语句在锁定的存根代码中,我无法修改它。
在从计算函数返回时,是否可以删除多余的空间?
如果我没有误解的话,你可以更改caculate
函数,但不能更改print
,你只想在输出中看到一个空格,你就在python3中。
然后您可以使用退格b
,将例如return 'O'
更改为return 'bO'
,其他返回也需要更改。
快速测试的简单代码:
def fun():
return 'O'
def fun2():
return 'bO'
print("Grade: ", fun())
print("Grade: ", fun2())