《python 语言程序设计》练习题

2019/03/28 python

题目1:货币转换

人民币和美元间汇率固定为:1美元=6.78人民币。程序可以接受人民币或美元输入,转换为美元或人民币输出。人民币采用RMB标识,美元USD标识,符号和数值之间没有空格。

注意:

  1. 获得输入请使用input() ;
  2. 不提示输出格式错误,结果小数点后保留两位。

实现如下:

CoinStr = input("")
if CoinStr[0:3] in ['RMB','rmb']:
    C = eval(CoinStr[3:]) /6.78
    print("USD{:.2f}".format(C))
elif CoinStr[0:3] in ['USD', 'usd']:
    F = eval(CoinStr[3:]) *6.78
    print("RMB{:.2f}".format(F))
else:
    print("输入格式错误")

题目2:温度转换1

编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度

转换算法如下:(C表示摄氏度,F表示华氏度)

C = (F - 32)/1.8

F = C * 1.8 +32

要求如下:

  1. 输入输出的摄氏度采用大写字母C开头,温度可以是整数或小数,如:C12.34指摄氏度12.34度
  2. 输入输出的华氏度采用大写字母F开头,温度可以是整数或小数,如:F87.65指华氏度87.65度
  3. 不考虑异常输入的问题,输出保留小数点后两位
  4. 使用input获得测试用例输入时,不要增加提示字符串

实现如下:

TempStr = input("")
if TempStr[0] in ['F','f']:
    C = (eval(TempStr[1:]) - 32)/1.8
    print("C{:.2f}".format(C))
elif TempStr[0] in ('C','c'):
    F = 1.8 * eval(TempStr[1:]) + 32
    print("F{:.2f}".format(F))
else:
    print("输入格式错误")

题目3:温度转换2

转换算法同上,要求如下:

  1. 输入输出的摄氏度可采用大小写字母C结尾,温度可以是整数或小数,如:12.34C指摄氏度12.34度
  2. 输入输出的华氏度可采用大小写字母F结尾,温度可以是整数或小数,如:87.65F指摄氏度87.65度
  3. 输出保留小数点后两位,输入格式错误时,输出提示:输入格式错误
  4. 使用input()获得测试用例输入时,不要增加提示字符串

实现如下:

TempStr = input("")
if TempStr[-1] in ['F','f']:
    C = (eval(TempStr[0:-1]) - 32)/1.8
    print("{:.2f}C".format(C))
elif TempStr[-1] in ('C','c'):
    F = 1.8 * eval(TempStr[0:-1]) + 32
    print("{:.2f}F".format(F))
else:
    print("输入格式错误")

题目4:数值运算

获得用户输入的一个字符串,格式如下:M OP N

其中,M和N是任何数字,OP代表一种操作,表示为如下四种:+,—,*,/(加减乘除)根据OP,输出M OP N的运算结果,同意保存小数点后2位。

注意:M和OP、OP和N之间可以存在多个空格,不考虑输入错误情况

实现如下:


题目5:turtle正方形绘制

使用turtle库,绘制一个正方形

实现如下:

#PythonDraw.py
import turtle
turtle.pencolor("black")
turtle.pensize(5)
turtle.forward(150)
turtle.left(90)
turtle.forward(150)
turtle.left(90)
turtle.forward(150)
turtle.left(90)
turtle.forward(150)
turtle.done()

题目6:turtle六边形绘制

使用turtle库,绘制一个六边形

实现如下:

#绘制六边形
import turtle
turtle.pencolor("black")
turtle.pensize(5)
turtle.forward(150)
turtle.left(60)
turtle.forward(150)
turtle.left(60)
turtle.forward(150)
turtle.left(60)
turtle.forward(150)
turtle.left(60)
turtle.forward(150)
turtle.left(60)
turtle.forward(150)
turtle.done()

代码优化后:

#绘制六边形
import turtle              
turtle.pensize(5)          
for i in range(6):         
    turtle.forward(150)    
    turtle.left(60)        
turtle.done()               

题目7:天天向上的力量

工作日模式要努力到什么水平,才能与每天努力1%一样?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

-A君: 一年365天,每天进步1%,不停歇 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

-B君: 一年365天,每周工作5天休息2天,休息日下降1% ,要多努力呢?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

每周工作5天休息2天,计算工作日的努力参数是多少才能与每天努力1%一样。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪要求如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

(1) ‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬一年365天,以第0天的能力值为基数,记为1.0;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

(2) ‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬当好好学习时,能力值相比前一天提高1%;当没有学习时,由于遗忘等原因能力值相比前一天下降1%;

输出:

输出结果格式如下:(其中结果保留小数点后三位,冒号后有一个空格)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

工作日的努力参数是: 0.019

分析

A君,一年努力365天,每天进步1%,365天之后进步的值是pow(1.01,365)=37.783,B君:

  1. 枚举法,从A君的基础1%上开始一个个尝试,当不满足条件时,则增加0.01,直到等于37.783
  2. 写一个函数,在里面判断,当周六日,下降1%。否则,上升df

代码实现:

def dayUp(df):
    dayup = 1                        #能力值的初始值为1
    for i in range(365):
        if i % 7 in [6,0]:           #一周有7天,模7,取出周六日
            dayup = dayup * 0.99     #周六日下降
        else:
            dayup = dayup * (1 + df) #df为所求的工作日要多努力
    return dayup

dayfactor = 0.01                     #A君是每天努力1%,因此B君从1%开始试,当不符合的时候,每次增加0.001
while dayUp(dayfactor) < 37.78:      #365每天努力1%,一年下来的结果是37.78
    dayfactor = dayfactor + 0.001
print("工作日努力参数是:{:.3f}".format(dayfactor))

题目8:星号三角形

读入一个整数N,N是奇数,输出由星号字符组成的等边三角形,要求:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬第1行1个星号,第2行3个星号,第3行5个星号,依次类推,最后一行共N的星号。输出如下所示:

代码实现:

num = input("")
a = "*"
for i in range(eval(num)+1):
    if i % 2 != 0:
        r = i * a     #字符串连乘,要写成:数字*变量,其中,字符不能直接*,只能将字符赋值给一个变量后再*
        print(r.center(eval(num), " "))

Search

    Post Directory