python新手题单刷题2

  1. 输出双层金字塔。
while True:
    try:
        n = int(input())
        space = ' '
        xing = '*'
        a = n-1
        b = 1
        for i in range(n):
            print(f'{a*space}{b*xing}{a*space}')
            a -=1
            b +=2
        c = a +2
        d = b-4
        for i in range(n-1):
            print(f'{c*space}{d*xing}{c*space}')
            c +=1
            d -=2
    except:
        break
    

在这里插入图片描述
2.打印数字三角形,从1开始输出,第i行输出i个数,每个数字按4个位置输出
注:c语言中 %4d可以输出一个数,占据四个位置,右对齐。

n = int(input())
a =1
for i in range(1,n+1):
    for j in range(i):
        print(f'{a:4d}',end = '')
        a+=1
    print()

在这里插入图片描述
3.请打印输出一个字符金字塔,字符金字塔的特征请参考样例

row = ord(input())-65
wor = chr(65)
#print(wor)
#print(row)
width = row*2+1
for i in range(row+1):
    wor =chr(65+i)
    for j in range(i,0,-1):
        wor = wor+chr(64+j)
        wor = chr(64+j)+wor
    print(wor.center(width,' '))

在这里插入图片描述
4.涂小天是个画家,他希望有一天他的画能让心仪的她看到。
只是后来她有了他,他却只有他的画,他望着他的画,默默的发呆。
可惜做题的你,画不出他画的她,所以,我们只好画点简单的画,或许有一天,你就会遇到画里她/他吗?
因此我们规定画画的内容:输入一个正整数 n(n为奇数),输出高度为 n 的菱形,例如 n = 5 时,输出

for _ in range(int(input())):
    n = int(input())
    width = n
    space = ' '
    xing = '*'
    a = (n+1)//2
    x = a-1
    y = 1
    for i in range(a):
        print(f'{x*space}{y*xing}')
        x -=1
        y +=2
    b = x+2
    d = y-4
    for i in range(a-1):
        print(f'{b*space}{d*xing}')
        b +=1
        d -=2

在这里插入图片描述
5.KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的箭形图案。

while True:
    try:
        n = int(input())
        w = n*2
        x = 1
        space = ' '
        xing ='*'
        for i in range(n+1):
            print(f'{w*space}{x*xing}')
            w -=2
            x +=1
        a = w+4
        y = x-2
        for i in range(n):
            print(f'{a*space}{y*xing}')
            a +=2
            y -=1
    except:
        break
            

在这里插入图片描述
6.牛牛开始学习数列啦
现在他想知道1-2+3-4…+n的值

n = int(input())
a = 1
for i in range(2,n+1):
    if i%2==0:
        a = a-i
    else:
        a = a+i
print(a)
    

在这里插入图片描述
7.这次牛牛又换了个数列,他想计算:1+1/2+1/3+…+1/N的值。(保留6位小数)

n = int(input())
a = 1
for i in range(2,n+1):
    a = a+1/i    
print(f'{a:.6f}')

在这里插入图片描述
8.牛牛准备继续进阶,计算更难的数列
输入一个整数n,计算 1+1/(1-3)+1/(1-3+5)+…+1/(1-3+5-…((-1)^(n-1))*(2n-1))的值

n=int(input())
m=0
for i in range(1,n+1):
    if i % 2==0:
        m-=1/i
    else:
        m+=1/i
print("%0.3f"%m)

在这里插入图片描述
9. 帮助牛牛计算 1+(1+2)+(1+2+3)+…+(1+2+3+…+n)

n = int(input())
a = 0
for i in range(1,n+1):
    for j in range(1,i+1):
        a +=j
print(a)

在这里插入图片描述
10.求fib数列的第n项,前几项是1,1,2,3,5,每一项都等于前面两项的和

n = int(input())
l = [0,1,1,2,3,5]
if n<=5:
    print(l[n])
else:
    for i in range(6,n+1):
        t = l[i-1]+l[i-2]
        l.append(t)
    print(l[n])

在这里插入图片描述

def fib(n):
    if n==1 or n==2:
        return 1
    else:
        return fib(n-1)+fib(n-2)
print(fib(int(input())))

11.在这里插入图片描述

def func(n):
    if n==1:
        return 0
    elif n==2 or n==3:
        return 1
    else:
        return func(n-3)+2*func(n-2)+func(n-1)
print(func(int(input())))

在这里插入图片描述

  1. 计算a+b多组数据,每组输入两个整数,当两个整数都为0时表示输入结束
while True:
    a,b = map(int,input().split())
    if a==0 and b==0:
        break
    else:
        print(a+b)

在这里插入图片描述
13.凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符?
注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。统计标题字 符数时,空格和换行符不计算在内。

s = input()
n =0 
for i in s:
    if i!=' ' and i != '\n':
        n +=1
print(n)

在这里插入图片描述
14.栗酱在酒桌上玩一个小游戏,第一个人从1开始数数,如果遇到数字中含4或者数字是4的倍数则跳过报下一个,谁数错了就要罚酒一杯。
所以栗酱想让你写个程序把所有数生成出来,这样她就可以作弊直接读了。你一定能解决的吧?

n = int(input())
for i in range(1,n+1):
    if i%4 != 0 and '4' not in str(i):
        print(i)
    else:
        continue

在这里插入图片描述
15.给定一个正整数k( 3 ≤ k ≤ 15 ),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k = 3时,这个序列是:
1,3,4,9,10,12,13,…(该序列实际上就是:30,31,30+31,32,30+32,31+32,30+31+32,…)
请你求出这个序列的第N项的值(用10进制数表示)。例如,对于k = 3,N = 100,正确答案应该是 981。

a,b=map(int,input().split())
print(int(bin(b)[2:],a))

在这里插入图片描述
16.旅行完了的牛牛又胖了,于是他终于下决心要戒掉零食,所以他带着他最爱的土豆回到了牛星,开始了在牛星种土豆和只吃土豆减肥的日子。(吃土豆能减肥么?)经过了辛勤的劳作,牛牛种的土豆奇迹般的收获了,于是他得到了很多很多很多很多的土豆(实在太多,数不过来了,你可以认为是无穷个)。他将这很多很多个土豆按照重量从小到大进行了排序,每个土豆的编号依次为1、2、3……N,然后他就惊奇地发现:由于牛星球的土壤很奇特,第i个土豆的重量正好是3^(i-1) 。
现在牛牛饿了要吃掉其中的若干个土豆。他每次拿的土豆的数目是任意的,选的土豆也是任意的。选中的土豆的总重量即每个土豆重量之和。例如:牛牛这一次拿了第一个土豆和第三个土豆,那么总重量为1+9=10。
牛牛想知道,在所有的选土豆方案里,他可以获得的第k大的“总重量”是多少。

for i in range(int(input())):
    k = int(input())
    print(f'Case #{(i+1)}: {int(bin(k)[2:],3)}')

在这里插入图片描述
17.国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币。
请计算在前K天里,骑士一共获得了多少金币。

k = int(input())
ans =0
c = 0
w = 1
flag = 0
for i in range(k):
    if c==w:
        flag = 1
        c = 0
        w +=1
        
    ans += w
    c += 1
print(ans) 

在这里插入图片描述
18.这天,托米家的电影院门口排起了长队–因为最新的电影"托米历险记"就要上映了!
每个人都有且仅有一张面值为25或50或100元的钞票.一张电影票的价格是25元.
托米想知道售票员能否在初始金钱为0并且按排队顺序售票的情况下完成找零.

n = int(input())
a = list(map(int,input().split()))
sums = 0
for i in a:
    if i==25:
        sums +=25
    else:
        sums =sums-i+25
if sums<0:
    print("NO")
else:
    print("YES")

在这里插入图片描述
19.P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。她发现商店一共有 3 种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起见,P老师决定只买同一种包装的铅笔。
商店不允许将铅笔的包装拆开,因此P老师可能需要购买超过 n 支铅笔才够给小朋友们发礼物。
现在P老师想知道,在商店每种包装的数量都足够的情况下,要买够至少 n 支铅笔最少需要花费多少钱。

math.ceil() # 向上取整函数 导入math包

import math
tal = int(input())
a, ap = map(int, input().split())
b, bp = map(int, input().split())
c, cp = map(int, input().split())
print(min(ap * math.ceil(tal / a),
          bp * math.ceil(tal / b),
          cp * math.ceil(tal / c)))

在这里插入图片描述
20. 给你一个整数n, 判断它是否是素数。注意1不是素数。

def main(n):
    if n == 1:
        return "No"
    elif n == 2:
        return "Yes"
    else:
        for i in range(2, n):
            if n % i == 0:
                return "No"
        return "Yes"
    
for T in range(int(input())):
    print(main(int(input())))

在这里插入图片描述
21. 今天牛牛学到了回文串,他想在数字里面找回文,即回文数,回文数是正着读与倒着读都一样的数,比如1221,343是回文数,433不是回文数。请输出不超过n的回文数。

n = eval(input())
for i in range(1,n):
    s = str(i)
    if s==s[::-1]:
        print(i)

在这里插入图片描述
22. ZWY最近喜欢在下课后喝酒,她说:“喝酒是人类进步的动力”。现在,便利商店推出了兑换活动。
1.两个酒瓶可以兑换1瓶酒
2.四个酒瓶盖子可以兑换1瓶酒
她先知道,在当前她所拥有的资金m和一些空酒瓶k、瓶盖g和当前酒价p已知情况下,她最多可以喝到多少瓶酒。

m,k,g,p = map(int,input().split())
if m >=0:
    ans = m//p #喝的
else:
    ans = 0
x = ans+k #酒瓶
y = ans+g #酒盖
while x >=2 or y>=4:
    a = x//2
    b = y//4
    t= (a+b)
    x =  (x%2)+t
    y =  (y%4)+t
    ans += t
print(ans)

在这里插入图片描述
23.
HtBest的小鲲长大变成了大鹏,大鹏在天际翱翔,看到了一片绵延的山脉,每座山都有自己的高度,大鹏想穿过这片山脉。由于他只能紧贴地面飞行,他想知道他一共要翻越几次大山(上升->平飞->下降,算一次,其中平飞可以没有),初始时,大鹏在山脉的左端。

n=int(input())
up=0
down=0
total=0
ls=list(map(int,input().split()))
for i in range(n-1):
    if ls[i+1]>ls[i]:
        up+=1
    elif ls[i+1]<ls[i] and up>0:
        up=0
        total+=1
print(total)

在这里插入图片描述
24.已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。
现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。

k = int(input())
n = 1
s = 1
while s<=k:
    n += 1
    s += 1/n
print(n)

在这里插入图片描述
25.众所周知,年轻人是不讲5的。作为年轻人,你应该继承这样的“优良传统”。
给定一个数串,输出时将其中的数字’5’替换成字符’*'。

print(input().replace('5', '*'))

在这里插入图片描述
26.在这里插入图片描述

m=0
while True:
    n=input()
    if n=='.':
        break
    m+=n.count('a')
print(m)

在这里插入图片描述
27.有一个不断升温的杆子,上面有若干个蚂蚁,蚂蚁们需要尽快爬出这个杆子,否则就会因为高温而被烧死。这里假设每只蚂蚁行走的最大速度是 1cm/s. 当一只蚂蚁走到杆的尽头时,就会立即从秆上掉落,从而逃离热杆。我们知道每只蚂蚁在杆上的初始位置,但是,不知道蚂蚁向哪个方向前行。你的任务是计算所有蚂蚁都从杆上逃离可能的最短时间。

h,n = map(int,input().split())
a = list(map(int,input().split()))

ans = 0
for i in range(n):
    ans = max(ans,h-a[i] if a[i]>h/2 else a[i])
print(ans)

在这里插入图片描述
28.给出n个数字,请你求出在给出的这n个数字当中,最大的数字与次大的数字之差,最大的数字与次小的数字之差,次大的数字与次小的数字之差,次大的数字与最小的数字之差

n=int(input())
l=list(map(int,input().split()))
s=set(l)
l=list(s)
l.sort(reverse=True)
a = l[0]-l[1]
b = l[0]-l[-2]
c = l[1]-l[-2]
d = l[1]-l[-1]
print(f'{a} {b} {c} {d}')

在这里插入图片描述
29.试计算在区间1 到n 的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?
例如,在1到11 中,即在1、2、3、4、5、6、7、8、9、10、11 中,数字1 出现了4 次。

n,x = map(int,input().split())
ans = 0

for i in range(1,n+1):
    l = list(str(i))
    ans += l.count(str(x))
    
print(ans)

在这里插入图片描述
30.n个人(0,1,2,3,4…n-1),围成一圈,从编号为k的人开始报数,报数报到m的人出队(报数是1,2,…m这样报的)。下次从出队的人之后开始重新报数,循环往复,当队伍中只剩最后一个人的时候,那个人就是大王。现在,给定n,k,m,请你求出大王的编号。

n,k,m=map(int,input().split())
l=list(range(n))
while len(l) >1:
    a=(k+m-1)%len(l)
    del l[a]
    k=a
    #print(l)
print(l[0]) 

在这里插入图片描述


版权声明:本文为weixin_43985824原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。