第一道題是字串編碼問題,就是輸入gbk格式的中文,和字母,擷取一定的字元,但是不能把中文截成兩半。
python預設的是utf-8的格式,在utf-8中中文和英文一樣處理,都是乙個字元的長度,
>>>s='中文1234編碼5678'
>>>s[:1]
'中文》s[2]
'1'>>>s[6:8]
'編碼'
解決方法:先用encode方法將字串轉換為bytes,encode的作用就是使我們看到的直觀的字元轉換成計算機內的位元組形式,這裡encode的引數encoding='gbk'表示編碼為gbk方案,errors='ignore'表示忽略錯誤。gbk編碼方案中每個中文字編碼為2個位元組,這樣就可以與排版顯示的寬度一致,擷取指定位置字串後再使用decode方法解碼為gbk格式。編碼方案也可以使用其他如utf-8、unicode等,但這樣每個中文字元編碼長度有可能與排版顯示長度不一樣,在格式化輸出時計算長度就有點複雜了:
>>> ss = s.encode(encoding='gbk',errors='ignore')
>>> print(ss)
b'\xd6\xd0\xce\xc41234\xb1\xe0\xc2\xeb5678'
>>> ss[:4].decode(encoding='gbk',errors='ignore')
'中文'
>>> ss[8:12].decode(encoding='gbk',errors='ignore')
'編碼'
第二個是黑色星期五。
import sys
b= input().split()
n=int(b[0])
w=int(b[1])
if(len(b)>2 or len(b)<2):
print("-1")
exit()
if(n<0 or n>400):
print("-1")
exit()
if(w<0 or w>6):
print("-1")
exit()
def get(y,m):
if(y%4==0 and y%100!=0):
i=1
elif(y%400==0):
i=1else:
i=0
if(m==1 or m==3 or m==5 or m==7 or m==8 or m==10 or m==12):
return 31
elif m==2:
if(i==1):
return 29
else:
return 28
return 30
# 輸入n,限定範圍.注意轉化為int型別
a= [0 for i in range(7)]
week=6
for i in range(1900,1900+n):
for j in range(1,13):
a[week%7]+=1
week+=get(i,j)
#print(str(a[6])+" "+str(a[0]))
#for i in range(1,6):
print(str(a[w]))
核心思想就是先手動推斷出第乙個13號是週幾,算出是週六,week=6。然後算出這個月是多少天,加上,然後對7取餘。這個時候可以算出下個月13號是週幾,直到給定的日期,輸出周五的個數。
整體來說不難,但是我的通過率只有87%,不知道是那部分原因,是不是輸入的時候沒有判斷是不是字元?
黑色星期五
在西方,星期五和數字 13都代表著壞運氣,兩個不幸的個體最後結合成超級不幸的一天。所以,不管哪個月的十三日又恰逢星期五就叫 黑色星期五 要求 輸入年份,輸出是 判斷該年是否包含黑色星期五,如包含,給出具體日期 includeint main int b 13 閏年時 int n 0,i,year s...
黑色星期五
13號又是星期五是乙個不尋常的日子嗎?13號在星期五比在其他日少嗎?為了回答這個問題,寫乙個程式來計算在n年裡13日落在星期一,星期二.星期日的次數.這個測試從1900年1月1日到1900 n 1年12月31日.n是乙個非負數且不大於400.這裡有一些你要知道的 1900年1月1日是星期一.4,6,...
黑色星期五
水題 問題描述 有些西方人比較迷信,如果某個月的13號正好是星期五,他們就會覺得不太吉利,用古人的說法,就是 諸事不宜 請你編寫乙個程式,統計出在某個特定的年份中,出現了多少次既是13號又是星期五的情形,以幫助你的迷信朋友解決難題。說明 1 一年有365天,閏年有366天,所謂閏年,即能被4整除且不...