通过PTA刷题快速掌握Python基础语法(2/2)

7-11 分段计算居民水费

问题描述:
为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关:当x不超过15吨时,y=4x/3;超过后,y=2.5x−17.5。请编写程序实现水费的计算。

输入格式:
输入在一行中给出非负实数x

输出格式:
在一行输出应交的水费,精确到小数点后2位。

参考代码

x=int(input())
if x<=15 :
    y=4*x/3
else :
    y=2.5*x-17.5
print("%.2f"%y)

新语法点

7-12 两个数的简单计算器

问题描述:
本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。

输入格式:
输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。操作数的数据类型为整型,且保证除法和求余的分母非零。

输出格式:
当运算符为+-*/%时,在一行输出相应的运算结果。若输入是非法符号(即除了加、减、乘、除和求余五种运算符以外的其他符号)则输出ERROR

参考代码

x,op,y=input().split(' ')
x=int(x)
y=int(y)
if op=='+' :
    print(x+y)
elif op=='-' :
    print(x-y)
elif op=='*' :
    print(x*y)
elif op=='/' :
    print(int(x/y))
elif op=='%' :
    print(x%y)
else :
    print("ERROR")

新语法点

  1. 涉及负数的整数除法修正:print(int(x/y))

7-13 日K蜡烛图

问题描述:
股票价格涨跌趋势,常用蜡烛图技术中的K线图来表示,分为按日的日K线、按周的周K线、按月的月K线等。以日K线为例,每天股票价格从开盘到收盘走完一天,对应一根蜡烛小图,要表示四个价格:开盘价格Open(早上刚刚开始开盘买卖成交的第1笔价格)、收盘价格Close(下午收盘时最后一笔成交的价格)、中间的最高价High和最低价Low。
如果Close<Open,表示为“BW-Solid”(即“实心蓝白蜡烛”);如果Close>Open,表示为“R-Hollow”(即“空心红蜡烛”);如果Open等于Close,则为“R-Cross”(即“十字红蜡烛”)。如果Low比Open和Close低,称为“Lower Shadow”(即“有下影线”),如果High比Open和Close高,称为“Upper Shadow”(即“有上影线”)。请编程序,根据给定的四个价格组合,判断当日的蜡烛是一根什么样的蜡烛。

输入格式:
输入在一行中给出4个正实数,分别对应Open、High、Low、Close,其间以空格分隔。

输出格式:
在一行中输出日K蜡烛的类型。如果有上、下影线,则在类型后加上with 影线类型。如果两种影线都有,则输出with Lower Shadow and Upper Shadow

参考代码

Open,High,Low,Close=map(float,input().split(' '))
if Close<Open :
    print("BW-Solid",end=(''))
elif Close>Open :
    print("R-Hollow",end=(''))
else :
    print("R-Cross",end=(''))
if (Low<min(Open,Close)) :
    L=True
else :
    L=False
if (High>max(Open,Close)) :
    U=True
else :
    U=False
if L and U :
    print(" with Lower Shadow and Upper Shadow")
elif L :
    print(" with Lower Shadow")
elif U:
    print(" with Upper Shadow")

新语法点

7-14 求整数段和

问题描述:
给定两个整数AB,输出从AB的所有整数以及这些数的和。

输入格式:
输入在一行中给出2个整数AB,其中−100≤AB≤100,其间以空格分隔。

输出格式:
首先顺序输出从AB的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X

参考代码

A,B=map(int,input().split(' '))
cnt=sum=0
for i in range(A,B+1) :
    cnt+=1
    sum+=i
    print("%5d"%i,end=(''))
    if cnt==5 :
        print()
        cnt=0
if (cnt) :
    print()
print("Sum = %d"%sum)

新语法点

  1. for循环语句:for i in range(A,B+1) :
  2. 占位控制与右对齐:print("%5d"%i,end=(''))

7-15 计算圆周率

问题描述:
根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。
\frac{\pi}{2}=1+\frac{1}{3}+\frac{2!}{3\times5}+\frac{3!}{3\times5\times7}+...+\frac{n!}{3\times5\times7\times...\times(2n+1)}+...
输入格式:
输入在一行中给出小于1的阈值。

输出格式:
在一行中输出满足阈值条件的近似圆周率,输出到小数点后6位。

参考代码

l=float(input())
item=sum=t=1
while item>=l :
    item=item*t/(2*t+1)
    sum+=item
    t+=1
print("%.6f"%(sum*2))

新语法点

7-16 求符合给定条件的整数集

问题描述:
给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。

输入格式:
输入在一行中给出A。

输出格式:
输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。

参考代码

A=int(input())
cnt=0
for i in range(A,A+4) :
    for j in range(A,A+4) :
        for k in range(A,A+4) :
            if i!=j and j!=k and k!=i :
                cnt+=1
                item=i*100+j*10+k
                print("%d"%item,end=(''))
                if cnt%6==0 :
                    print()
                else :
                    print(' ',end=(''))

新语法点

7-17 爬动的蠕虫

问题描述:
一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?
这里要求不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。初始时,蠕虫是趴在井底的(即高度为0)。

输入格式:
输入在一行中顺序给出3个正整数N、U、D,其中D<U,N不超过100。

输出格式:
在一行中输出蠕虫爬出井的时间,以分钟为单位。

参考代码

N,U,D=map(int,input().split())
time=0
while N>0 :
    if U>=N :
        time+=1
        N-=U
        break
    else :
        time+=2
        N-=U-D
print(time)
exit(0)

新语法点

7-18 二分法求多项式单根

问题描述:二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f(r)=0。

二分法的步骤为:

  • 检查区间长度,如果小于给定阈值,则停止,输出区间中点(a+b)/2;否则
  • 如果f(a)f(b)<0,则计算中点的值f((a+b)/2);
  • 如果f((a+b)/2)正好为0,则(a+b)/2就是要求的根;否则
  • 如果f((a+b)/2)与f(a)同号,则说明根在区间[(a+b)/2,b],令a=(a+b)/2,重复循环;
  • 如果f((a+b)/2)与f(b)同号,则说明根在区间[a,(a+b)/2],令b=(a+b)/2,重复循环。

本题目要求编写程序,计算给定3阶多项式f(x)=a_3x^3+a_2x^2+a_1x+a_0在给定区间[a,b]内的根。

输入格式:
输入在第1行中顺序给出多项式的4个系数a3、a2、a1、a0,在第2行中顺序给出区间端点ab。题目保证多项式在给定区间内存在唯一单根。

输出格式:
在一行中输出该多项式在该区间内的根,精确到小数点后2位。

参考代码

global L
L=[0,0,0,0]
def f(x) :
    return L[0]+x*(L[1]+x*(L[2]+x*L[3]))
L[3],L[2],L[1],L[0]=map(float, input().split())
a,b=map(float,input().split())
l=a;r=b
while r-l>0.0001 :
    fl=f(l)
    fr=f(r)
    if fl==0 :
        r=l
        break
    elif fr==0 :
        l=r
        break
    if fl*fr<0 :
        mid=(r+l)/2
        fm=f(mid)
        if fm==0 :
            l=r=mid
            break
        elif fm*fl<0 :
            r=mid
        else :
            l=mid
print("%.2f"%l)

新语法点

  1. 全局变量:global L
  2. 列表(list)数据类型:L=[0,0,0,0]
  3. 自定义函数:def f(x) :

7-19 支票面额

问题描述:
一个采购员去银行兑换一张yf分的支票,结果出纳员错给了fy分。采购员用去了n分之后才发觉有错,于是清点了余额尚有2y元2f分,问该支票面额是多少?

输入格式:
输入在一行中给出小于100的正整数n

输出格式:
在一行中按格式y.f输出该支票的原始面额。如果无解,则输出No Solution

参考代码

n=int(input())
y=f=-1
for i in range(0,100) :
    if (199*i+n)%98==0 :
        y=i
        f=(199*y+n)//98
        break
if y==-1 or f>=100:
    print("No Solution")
else :
    print("%d.%d"%(y,f))

新语法点

7-20 打印九九口诀表

问题描述:下面是一个完整的下三角九九口诀表:

1*1=1   
1*2=2   2*2=4   
1*3=3   2*3=6   3*3=9   
1*4=4   2*4=8   3*4=12  4*4=16  
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81   

本题要求对任意给定的一位正整数N,输出从1*1N*N的部分口诀表。

输入格式:
输入在一行中给出一个正整数N(1≤N≤9)。

输出格式:
输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。

参考代码

n=int(input())
for i in range(1,n+1) :
    for j in range(1,i+1) :
        print("%d*%d=%-4d"%(j,i,i*j),end=(''))
    print()

新语法点

  1. 占位控制与左对齐:print("%d*%d=%-4d"%(j,i,i*j),end=(''))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容