s=0 for i in a[5] s=s+1 print(3-3and3<6)s)

视频课程:实用Python程序设计_北京大学本章笔记:实用Python程序设计笔记|第五章、字符串和元组专栏目录:从零开始学python专栏目录032:石头剪刀布32.1、题目描述石头剪刀布是常见的猜拳游戏。石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。一天,小A和小B正好在玩石头剪刀布。已知他们的出拳都是有周期性规律的,比如:“石头-布-石头-剪刀-石头-布-石头-剪刀……”,就是以“石头-布-石头-剪刀”为周期不断循环的。请问,小A和小B比了N轮之后,谁赢的轮数多?输入输入包含三行。第一行包含三个整数:N,NA,NB,分别表示比了N轮,小A出拳的周期长度,小B出拳的周期长度。0 < N,NA,NB < 100。第二行包含NA个整数,表示小A出拳的规律。第三行包含NB个整数,表示小B出拳的规律。其中,0表示“石头”,2表示“剪刀”,5表示“布”。相邻两个整数之间用单个空格隔开。输出输出一行,如果小A赢的轮数多,输出A;如果小B赢的轮数多,输出B;如果两人打平,输出draw。样例输入10 3 4
0 2 5
0 5 0 2样例输出提示对于测试数据,猜拳过程为:A:0 2 5 0 2 5 0 2 5 0B:0 5 0 2 0 5 0 2 0 5A赢了4轮,B赢了2轮,双方打平4轮,所以A赢的轮数多。32.2、我的代码arry=input().split()
N,NA,NB=int(arry[0]),int(arry[1]),int(arry[2])
cycles_A=input().split()
cycles_A=[int(i) for i in cycles_A]
cycles_B=input().split()
cycles_B=[int(i) for i in cycles_B]
def who_win(a,b):#0,2,5分别代表石头剪刀布 0<2<5<0
if a==b:
return 0
elif (a==0 and b==2) or (a==2 and b==5) or (a==5 and b==0):
return 1 #a赢
else:
return -1#b赢
result=0
for i in range(N):
result+=who_win(cycles_A[i%NA],cycles_B[i%NB])
if result>0:
print('A')
elif result<0:
print('B')
else:
print("draw")033:统计数字字符个数33.1、题目描述输入一行字符,统计出其中数字字符的个数。输入一行字符串,总长度不超过255。输出输出为1行,输出字符串里面数字字符的个数。样例输入Peking University is set up at 1898.样例输出33.2、我的代码s=input()
total=0
for i in s:
if i>='0' and i<='9':
total+=1
print(total)034:大小写字母互换34.1、题目描述把一个字符串中所有出现的大写字母都替换成小写字母,同时把小写字母替换成大写字母。输入输入一行:待互换的字符串。输出输出一行:完成互换的字符串(字符串长度小于80)。样例输入If so, you already have a Google Account. You can sign in on the right. 样例输出iF SO, YOU ALREADY HAVE A gOOGLE aCCOUNT. yOU CAN SIGN IN ON THE RIGHT. 34.2、我的代码s=input()
s1=['' for i in s]
distance=ord('a')-ord('A')
for i in range(len(s)):
if s[i]>='a' and s[i]<='z':#小写字母
s1[i]=chr(ord(s[i])-distance)
elif s[i]>='A' and s[i]<='Z':#大写字母
s1[i]=chr(ord(s[i])+distance)
else:
s1[i]=s[i]
print(''.join(s1))035:过滤多余的空格35.1、题目描述一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。输入一行,一个字符串(长度不超过200),句子的头和尾都没有空格。输出过滤之后的句子。样例输入Hello
world.This is
c language.样例输出Hello world.This is c language.35.2、我的代码s=input()
isempty=False#代表上一个位置不是空格
for i in s:
if not isempty:#如果上一个位置不是空格,当前位置要输出
print(i,end="")
if i==' ':
isempty=True
elif isempty:#如果上一个位置是空格,当前位置也是空格就不输出
if i==' ':
continue
else:
print(i,end='')
isempty=False036:找第一个只出现一次的字符36.1、题目描述给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。输入一个字符串,长度小于100000。输出输出第一个仅出现一次的字符,若没有则输出no。样例输入abcabd样例输出36.2、我的代码s=input()
check=[True for i in s]#记录还没检查过的位置
isexist=False
for i in range(len(s)):
if check[i]:#还没检查过
check[i]=False
isexist=True
for j in range(i+1,len(s)):
if s[i]==s[j]:
isexist=False
for k in range(j,len(s)):
if s[i]==s[k]:
check[k]=False
break
if isexist:#存在题目要求的
print(s[i])
break
else:#检查过了,跳过
continue
if not isexist:
print("no")037:判断字符串是否为回文37.1、题目描述输入一个字符串,输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。输入输入为一行字符串(字符串中没有空白字符,字符串长度不超过100)。输出如果字符串是回文,输出yes;否则,输出no。样例输入abcdedcba样例输出37.2、我的代码s=input()
n=len(s)
ispalindroic=True
for i in range(n//2):
if s[i]!=s[n-1-i]:
ispalindroic=False
break
if ispalindroic:
print("yes")
else:
print("no")038:字符串最大跨距38.1、题目描述有三个字符串S,S1,S2,其中,S长度不超过300,S1和S2的长度不超过10。想检测S1和S2是否同时在S中出现,且S1位于S2的左边,并在S中互不交叉(即,S1的右边界点在S2的左边界点的左侧)。计算满足上述条件的最大跨距(即,最大间隔距离:最右边的S2的起始点与最左边的S1的终止点之间的字符数目)。如果没有满足条件的S1,S2存在,则输出-1。例如,S = "abcd123ab888efghij45ef67kl", S1="ab", S2="ef",其中,S1在S中出现了2次,S2也在S中出现了2次,最大跨距为:18。输入三个串:S, S1, S2,其间以逗号间隔(注意,S, S1, S2中均不含逗号和空格);输出S1和S2在S最大跨距;若在S中没有满足条件的S1和S2,则输出-1。样例输入abcd123ab888efghij45ef67kl,ab,ef样例输出38.2、我的代码s=input().split(",")
s,s1,s2=s[0],s[1],s[2]
def find(s,s1):#从头开始找,返回头位置
n = len(s)
n1 = len(s1)
s1exist=False
for i in range(n):
if s[i] != s1[0]:
continue
else:
s1exist = True
for j in range(n1):
if s[i + j] != s1[j]:
s1exist = False
break
if s1exist:
return i
if not s1exist:
return -1
def rfind(s,s1):#从尾部开始找,返回头位置
tmp=find(s[::-1],s1[::-1])
if tmp==-1:
return -1
else:
return len(s)-tmp-len(s1)
result=rfind(s,s2)-find(s,s1)-len(s1)
if result>=0:
print(result)
else:
print(-1)039:找出全部子串位置39.1、题目描述输入两个串s1,s2,找出s2在s1中所有出现的位置两个子串的出现不能重叠。例如'aa'在 aaaa 里出现的位置只有0,2输入第一行是整数n接下来有n行,每行两个不带空格的字符串s1,s2输出对每行,从小到大输出s2在s1中所有的出现位置。位置从0开始算如果s2没出现过,输出 "no"行末多输出空格没关系样例输入4
ababcdefgabdefab ab
aaaaaaaaa a
aaaaaaaaa aaa
112123323 a样例输出0 2 9 14
0 1 2 3 4 5 6 7 8
0 3 6
no39.2、我的代码n=int(input())
for count in range(n):
s=input().split()
s1,s2=s[0],s[1]
isexist=False
i=0
while i<len(s1):
if s1[i]!=s2[0]:
i+=1
else:
isexist=True
for j in range(len(s2)):
if s1[i+j]!=s2[j]:
isexist=False
break
if isexist:
print(i,end=" ")
i+=len(s2)
else:
i+=1
if not isexist:
print("no",end=" ")
print("")040:万年历40.1、题目描述给定年月日,求星期几。已知2020年11月18日是星期三。另外,本题有公元0年,这个和真实的纪年不一样输入第一行是n(n <=30),表示有n组数据接下来n行,每行是一组数据。每行三个整数y,m,d,分别代表年,月,日。(-1000000<=y<=1000000)若今年是2017年,则往前就是2016年,2015年....一直数到2年,1年,再往前就是0年,-1年,-2年.....输出对每组数据,输出星期几,星期几分别用"Sunday","Monday","Tuesday","Wednesday","Thursday", "Friday","Saturday" 表示如果月份和日期不合法,输出"Illegal"样例输入6
2017 2 29
2017 13 2
0 1 1
-2 3 4
2017 10 18
2015 12 31样例输出Illegal
Illegal
Saturday
Wednesday
Wednesday
Thursday40.2、我的代码def cal(y,m,d):#计算给定日期和2020年1月1日的差距
mdays = (-1, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
if y>=2020:
days = 365 * (y - 2020) + (y -1- 2020) // 4 + sum(mdays[1:m]) + d
if m > 2 and ((y % 4==0 and y % 100 != 0) or y % 400==0):
days += 1
days -= (y - 2000 - 1) // 100 - (y - 2000 - 1) // 400
else:
days=365 * (2020-y) + (2020-y) // 4
# days-=(2000-y-1)//100-(2000-y-1)//400
days -= (2000 - y ) // 100 - (2000 - y ) // 400
days=-days
days+=sum(mdays[1:m]) + d-1
if m > 2 and ((y % 4==0 and y % 100 != 0) or y % 400==0):
days += 1
return days
def cal_weekdays(y,m,d):
weekdays = ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
return weekdays[(cal(y,m,d)+3)%7]
def isIllegal(m,d):
if (y % 4==0 and y % 100 != 0) or y % 400==0:
mdays = (-1, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
else:
mdays = (-1, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
if m not in range(1,13):
return True
else:
if d not in range(1,mdays[m]+1):
return True
else:
return False
n=int(input())
for count in range(n):
s=input().split()
y,m,d=int(s[0]),int(s[1]),int(s[2])
if isIllegal(m,d):
print("Illegal")
else:
print(cal_weekdays(y, m, d))40.3、一些测试数据输入:25
2017 13 2
2017 2 29
2017 3 32
-1989 6 4
-2017 10 18
-2012 1 22
-1901 10 1
-1987 1 22
-2089 12 31
-20454 2 28
-1900 1 1
-1901 1 1
2019 12 26
-737347 3 1
-237 2 2
1989 6 4
2017 10 18
2012 1 22
1901 10 1
1987 1 22
2089 12 31
20454 2 28
1900 1 1
1901 1 1
2019 12 26正确输出:Illegal
Illegal
Illegal
Saturday
Tuesday
Friday
Thursday
Tuesday
Sunday
Thursday
Friday
Thursday
Thursday
Tuesday
Wednesday
Sunday
Wednesday
Sunday
Tuesday
Thursday
Saturday
Saturday
Monday
Tuesday
Thursday}

我要回帖

更多关于 print(3-3and3&lt;6) 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信