刷题之路,冲

读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字,在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。

n = input()#输入一个正整数
num= 0#定义数字和为num
for i in n:#遍历输入的正整数
    num = num + int(i)#由于输入的正整数是str(字符串)类型,所以要有int()转换成int类型进行各位数字的加减
temp = ['ling', 'yi', 'er', 'san', 'si', 'wu', 'liu', 'qi', 'ba', 'jiu']#建立一个0~9的拼音的列表
res = str(num)#将num转换为str类型,方便下面做遍历和下标的匹配
for i in res[:-1]:#由于题目要求最后的没有空格,所以这次遍历不包括num最后一位
    print(temp[int(i)], end = ' ')#下标和temp进行匹配,end=' '代表拼音用空格隔开
print(temp[int(res[-1])])#补上最后没有遍历的最后一位

让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。

n=int(input())
B=n//100#百位数为B
S=n//10%10#十位数为S
C=n%10#个位数为C
print('B'*B+'S'*S,end='')#先输出百位和十位
for i in range(1,C+1):#遍历个位
    print(i,end='')#输出个位
print()#换行

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出,字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。

a=list(input().split())#键盘输入一句英语,默认用空格隔开,并将它转换成列表
b=a[::-1]#将a倒序
print(' '.join(b))#输出,使用join函数将列表里面的用空格合并

 给定区间 [−231,231] 内的 3 个整数 A、B 和 C,请判断 A+B 是否大于 C。输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。对每组测试用例,在一行中输出 Case #X: true 如果 A+B>C,否则输出 Case #X: false,其中 X 是测试用例的编号(从 1 开始)。

i=int(input())
r=0
while i>0:
    r+=1
    a,b,c=list(input().split())
    a=int(a)
    b=int(b)
    c=int(c)
    if a+b>c:
        print('Case #'+str(r)+': true')
    else:
        print('Case #' + str(r) + ': false')
    i-=1

部分A+B:

正整数 A 的“DA​(为 1 位整数)部分”定义为由 A 中所有 DA​ 组成的新整数 PA​。例如:给定 A=3862767,DA​=6,则 A 的“6 部分”PA​ 是 66,因为 A 中有 2 个 6。

现给定 A、DA​、B、DB​,请编写程序计算 PA​+PB

输入在一行中依次给出 A、DA​、B、DB​,中间以空格分隔,其中 0<A,B<109

在一行中输出 PA​+PB​ 的值。

A=input().split()
PA=A[0].count(A[1])
PB=A[2].count(A[3])
if(PA>0):PA=int(A[1]*PA)
else:PA=0
if(PB>0):PB=int(A[3]*PB)
else:PB=0
print(PA+PB)

本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。

输入格式:

输入在一行中依次给出 A 和 B,中间以 1 空格分隔。

输出格式:

在一行中依次输出 Q 和 R,中间以 1 空格分隔。

输入样例:

123456789050987654321 7

输出样例:

17636684150141093474 3

代码:

A,B=list(input().split())
A=int(A)
B=int(B)
Q=A//B
R=A%B
print(Q,R)

1018 锤子剪刀布 (20 分)

大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:

现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。

输入格式:

输入第 1 行给出正整数 N(≤105),即双方交锋的次数。随后 N 行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C 代表“锤子”、J 代表“剪刀”、B 代表“布”,第 1 个字母代表甲方,第 2 个代表乙方,中间有 1 个空格。

输出格式:

输出第 1、2 行分别给出甲、乙的胜、平、负次数,数字间以 1 个空格分隔。第 3 行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有 1 个空格。如果解不唯一,则输出按字母序最小的解。

输入样例:

10
C J
J B
C B
B B
B C
C C
C B
J B
B C
J J

输出样例:

5 3 2
2 3 5
B B

 我写的超长代码,有待优化的:

n=int(input())
a1=b1=c1=0
c2=j2=b2=c3=j3=b3=0
while n>0:
    a,b=input().split()
    if a=='C' and b=='J':
        a1+=1
        c2+=1
    elif a=='C' and b=='B':
        b1+=1
        b3+=1
    elif a=='C' and b=='C':
        c1+=1
    elif a=='J' and b=='J':
        c1+=1
    elif a=='J' and b=='C':
        b1+=1
        c3+=1
    elif a=='J' and b=='B':
        a1+=1
        j2+=1
    elif a=='B' and b=='J':
        b1+=1
        j3+=1
    elif a=='B' and b=='B':
        c1+=1
    elif a=='B' and b=='C':
        a1+=1
        b2+=1
    n=n-1
print(a1,c1,b1)
print(b1,c1,a1)
if c2>=j2:
    if c2>b2:
        print('C',end=' ')
if j2>c2:
    if j2>b2:
        print('J',end=' ')
if b2>=j2:
    if b2>=c2:
        print('B',end=' ')
if c3>=j3:
    if c3>b3:
        print('C')
if b3>=j3:
    if b3>=c3:
        print('B')
if j3>c3:
    if j3>b3:
        print('J')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值