python print用法制表空格_python中print函数的输出问题(空格,制表符)
前言
在做編程題目時,為什么程序的實際輸出和預期輸出“看上去明明一模一樣”,但是就是提示有誤呢???
在此記錄。
問題描述
最近在看educoder實訓平臺上的一道編程題,題目要求大概是:
educoder中判斷程序是否正確,是通過輸出結果的字符串匹配來判斷的。
然而涉及到這個制表符,空格的輸出問題時,很容易出錯。
比如:
我的程序一開始是這樣:
def day(y, m, d):#計算y年m月d日是星期幾
# 請在下面編寫代碼
y0=y-(14-m)//12
x=y0+y0//4-y0//100+y0//400
m0=m+12*((14-m)//12)-2
d0=(d+x+(31*m0)//12)%7
# 請不要修改下面的代碼
return d0
def isLeapYear(year): #判斷year年是否閏年
# 請在下面編寫代碼
a=year%4
b=year%100
if(a==0 and b!=0):
isLeapYear="True"
else:
isLeapYear="False"
# 請不要修改下面的代碼
return isLeapYear
def calendar(y, m): #打印y年m月日歷
print(' {}年{}月'.format(y,m))
print('Su\tM\tTu\tW\tTh\tF\tSa')
# 請在下面編寫代碼
if(isLeapYear(y) is "True"):
list_1=[31,29,31,30,31,30,31,31,30,31,30,31]
firstday=day(y,m,1)
count=0
while(countlist_1[m-1]):
print("")
else:
list_2=[31,28,31,30,31,30,31,31,30,31,30,31]
firstday=day(y,m,1)
count=0
while(countlist_2[m-1]):
print("")
測評結果是這樣的:
實在讓人崩潰,明明是一模一樣的,為什么會錯呢???
解決方法
1 發現問題
我截取了預期輸出和實際輸出中的一行,進行比較:
import difflib
s1='''
12345
'''
s2='''
1 2 3 4 5
'''
print('s1 is equal to s2 ? The answer is ',s1==s2)
發現輸出為:
果然不一樣。
2 解決問題
通過這個,我終于發現:
原來s2(也就是我的實際輸出)對比s1,是多了一個空格的。
太神奇了,原來空格+制表符 看上去還是和 制表符 一樣!!!
錯誤代碼在:
print(a,'\t',end="")
修改成:
print('%d\t'%a,end="")
這樣就對了。!!!
為什么:
因為print(a,'\t',end="") 中 a和'\t'中間隔了一個逗號,導致二者之間多輸出了一個空格。
比如:
輸入代碼
a=1
b=2
print(a,b)
輸出不是12,而是1 2。
中間是有空格的(原因就在于a和b之間的逗號)
3 程序通過
總結
當教輔實在太花時間了。
總結
以上是生活随笔為你收集整理的python print用法制表空格_python中print函数的输出问题(空格,制表符)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北交大计算机学院复试经验,2014考研复
- 下一篇: 孩子学计算机最佳年龄,孩子学编程最佳年龄