读入一个正整数 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')