大家好,给大家分享一下Python怎么安装第三方库,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!
描述
石头剪刀布是常见的猜拳游戏。石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。
一天,小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。
通过码文件:bc035ecb44fb395bb7018d240c98cf8deff9f69efcf3da17f2b049d297021091
代码:
def result(a,b):
if a == b:
return 0
if a == 5 and b == 0:
return 1
if a == 0 and b == 5:
return -1
if a < b:
return 1
else:
return -1
s = input().split()
n,na,nb = int(s[0]),int(s[1]),int(s[2])
sa = input().split() # A的规律
sb = input().split() # B的规律
winA = winB = 0 # A和B赢的次数
ptrA = ptrB = 0 # A和B打平的次数
for i in range(n):
r = result(int(sa[ptrA]), int(sb[ptrB])) # 比赛结果
if r == 1:
winA += 1
elif r == -1:
winB += 1
ptrA = (ptrA + 1) % na
ptrB = (ptrB + 1) % nb
if winA > winB:
print("A")
elif winA < winB:
print("B")
else:
print("draw")
032:统计数字字符个数
总时间限制:
1000ms
内存限制:
65536kB
描述
输入一行字符,统计出其中数字字符的个数。
输入
一行字符串,总长度不超过255。
输出
输出为1行,输出字符串里面数字字符的个数。
样例输入
Peking University is set up at 1898.
样例输出
4
通过码:867e9d67dfc2070cbae928920048e8c98647b4bb3dedaca8d19bf81786e9b435
代码
str1 = input()
sum=0
i=0
while i < len(str1):
if str1[i].isdigit():
sum += 1
i += 1
print(sum)
通过码:6a6c69b9b32f69a457b648716762ab9d887d9d9feba348d6051cc0844a9dbb3d
033:大小写字母互换
总时间限制:
1000ms
内存限制:
65536kB
描述
把一个字符串中所有出现的大写字母都替换成小写字母,同时把小写字母替换成大写字母。
输入
输入一行:待互换的字符串。
输出
输出一行:完成互换的字符串(字符串长度小于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.
代码:
s = input()
for i in s:
if i.isupper():
print(i.lower(),end="")
elif i.islower():
print(i.upper(),end="")
else:
print(i,end='')
034:过滤多余的空格
描述
一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。
输入
一行,一个字符串(长度不超过200),句子的头和尾都没有空格。
输出
过滤之后的句子。
样例输入
Hello is c language.
样例输出
Hello is c language.
通过码:9a05d95a008fb8f44f14e6a98e7d13c90ecf671cadb6dbcad610a649ddb37e92
代码:
tmpStr = input()
flag = False #前面一个字符是空格的标识符,False表示前面的字符不是空格
for i in range(len(tmpStr)):
if tmpStr[i]==' ' and tmpStr[i-1]==' ':
print('', end='')
else:
print(tmpStr[i], end='')
035:找第一个只出现一次的字符
描述
给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
输入
一个字符串,长度小于100000。
输出
输出第一个仅出现一次的字符,若没有则输出no。
样例输入
abcabd
样例输出
c
通过码: c3a82ff4f04e8bd3720c9ded1dfe9608008542da39745b90f6855afbb6752f1a
s=input()
fl=1
for i in range(len(s)):
if s.count(s[i])==1:
print(s[i])
fl=0
break
if fl==1:
print('no')
036:判断字符串是否为回文
描述
输入一个字符串,输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。
输入
输入为一行字符串(字符串中没有空白字符,字符串长度不超过100)。
输出
如果字符串是回文,输出yes;否则,输出no。
样例输入
abcdedcba
样例输出
yes
通过码:06546b0aaa0d23293177f440a0e9c1ada5a1a99fd0b961ffff02cf421dc36d82
tmpStr = input()
if tmpStr == tmpStr[::-1]:
print('yes')
else:
print('no')
037:字符串最大跨距
描述
有三个字符串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。
通过码: d6b9270b63bf981c401a2fbef999171fac0dd3bad3d4c8d0c7632173d968b5e3
tmpStr = input().split(',')
if tmpStr[0].count(tmpStr[1])!=0 and tmpStr[0].count(tmpStr[2])!=0 and \
(tmpStr[0].rfind(tmpStr[1]) + len(tmpStr[1]) -1)<tmpStr[0].find(tmpStr[2]):
print(tmpStr[0].rfind(tmpStr[2]) - tmpStr[0].find(tmpStr[1]) - len(tmpStr[1]))
else:
print(-1)
038:找出全部子串位置
描述
输入两个串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 no
通过码: c8037a247d336fdd727961c49fd8e7a0022a29bbc3382c94322dcebdb8bd4cf2
n = int(input())
for i in range(n):
s = input().split()
m = 0
total = 0
for j in s[0]:
a = s[0].find(s[1],m)
if a == -1:
if total == 0:
print('no',end='')
break
else:
total += 1
m = a + len(s[1])
print(a,"",end='')
print("")
039:万年历
描述
给定年月日,求星期几。已知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", "GPT CSDN","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 Thursday
通过码: 3c9ca2444b354e311952bf63a4e5740d6f3777d77fad499a21712a06c427c634
n = int(input())
def days_of_week(year, mon, day):
list1 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] #闰年2月份为29天
list2 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] #平年2月份为28天
date = 0
years = 0
lst_days = [
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "GPT CSDN",
"Saturday"
]
if (year % 4 == 0) & (year % 100 != 0) or year % 400 == 0:
if mon in [1, 3, 5, 7, 8, 10, 12]:
if day < 1 or day > 31:
print('Illegal')
return
elif mon == 2:
if day < 1 or day > 29:
print('Illegal')
return
elif mon in [4, 6, 9, 11]:
if day < 1 or day > 30:
print('Illegal')
return
else:
print('Illegal')
return
else:
if mon in [1, 3, 5, 7, 8, 10, 12]:
if day < 1 or day > 31:
print('Illegal')
return
elif mon == 2:
if day < 1 or day > 28:
print('Illegal')
return
elif mon in [4, 6, 9, 11]:
if day < 1 or day > 30:
print('Illegal')
return
else:
print('Illegal')
return
#输入的年份大于等于2018年的判断过程如下:
if year >= 2018:
for j in range(2018, year):
if (j % 4 == 0) & (j % 100 != 0) or j % 400 == 0: #闰年
years += 366
else: #平年
years += 365 #闰年天数加366天,平年加365天
if ((year % 4) == 0) & ((year % 100) != 0) or ((year % 400) == 0):
for i in range(mon - 1):
date += list1[i] #闰年月份按list1相加
days = date + day
else:
for i in range(mon - 1):
date += list2[i] #平年月份按list2相加
days = date + day
total = days + years
ji = total % 7 #参考日期是2018年1月1号是星期一
#由于"ji=0"时,输出的结果是"星期0",因此对"ji"进行了判断,使"ji=0"时输出的结果为"星期7"
print(lst_days[ji])
#输入的年份小于2018年的判断过程如下:
else:
for j in range(year + 1, 2018):
if (j % 4 == 0) & (j % 100 != 0) or j % 400 == 0:
years += 366
else:
years += 365
if ((year % 4) == 0) & ((year % 100) != 0) or ((year % 400) == 0):
for i in range(mon - 1, 12):
date += list1[i]
days = date - day + 1
else:
for i in range(mon - 1, 12):
date += list2[i]
days = date - day + 1
total = days + years
ji = total % 7
print(lst_days[(8 - ji)%7])
for i in range(n):
year, mon, day = map(int, input().split())
days_of_week(year, mon, day)
040:成绩排序
描述
给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
输入
第一行为n (0 < n < 20),表示班里的学生数目; 接下来的n行,每行为每个学生的名字和他的成绩, 中间用单个空格隔开。名字只包含字母且长度不超过20,成绩为一个不大于100的非负整数。
输出
把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。
样例输入
4 Kitty 80 Hanmeimei 90 Joey 92 Tim 28
样例输出
Joey 92 Hanmeimei 90 Kitty 80 Tim 28
通过码: 22dfe349d41fba121c8da151525cd8a13381dc3778b94197ec272e20eaeeaa9a
n = int(input())
a = []
for i in range(n):
s = input().split()
a.append((s[0],int(s[1])))
a.sort(key = lambda x:(-x[1],x[0]))
for x in a:
print(x[0],x[1])
原文地址1:https://blog.csdn.net/qq_54159731/article/details/127568719
参考资料:python中用turtle画一个圆形 https://blog.csdn.net/SXIAOYAN_/article/details/140061099