python课程编程题汇总(上)

python编程题汇总

众所周知,由于疫情的原因,大家都在上网课,我也不例外啦~
用这个贴子来记录也和大家分享一下我们课上的编程讨论题
中篇在此→python课程编程题汇总(中)
下篇在此→python课程编程题汇总(下)

1、货币转换

编写货币转换程序
描述:
人民币和美元是世界上通用的两种货币之一,写一个程序进行货币间币值转换,其中:
人民币和美元间汇率固定为:1美元 = 6.78人民币。
程序可以接受人民币或美元输入,转换为美元或人民币输出。人民币采用RMB表示,美元USD表示,符号和数值之间没有空格。
注意:获得输入请使用input()

MoneyStr = input("请输入带有符号的数值:")
if MoneyStr[-1] in['B','b']:
    USD=eval(MoneyStr[0:-3])/6.78
    print("转换后的金额为{:.2f}USD".format(USD))
elif MoneyStr[-1] in['D','d']:
    RMB=eval(MoneyStr[0:-3])*6.78
    print("转换后的金额为{:.2f}RMB".format(RMB))
else:
    print("输入格式错误")

2、超市买苹果

需求:收营员输入苹果价格单位为元/斤,用户购买苹果的重量,单位为斤,计算并且输出付款金额
注意:用户输入用input()函数
转换函数int(x)、float(x)

DJ = eval(input("请输入苹果单价(元/斤):"))
ZL = eval(input("请输入苹果重量(斤):"))
print("付款金额为:{:.2f}".format(DJ*ZL))

3、随机数的产生

编写程序:
随机产生一个8位数,每位数字可以是1到6中的任意一个整数
提示:查阅random库使用,字符串拼接作用

>>> import random
>>> for i in range(8):
    a=random.randint(1,6)
    print(a,end='')

4、字符串截取

思考与练习
str = ‘hellopython’
1、截取第一位到第四位的字符           
2、截取第二位到第八位之前的字符           
3、截取字符串的全部字符         
4、截取第六个字符到结尾        
5、截取从头开始到倒数第五个字符之前        
6、截取第三个字符       
7、截取倒数第一个字符         
8、逆序截取          
9、截取倒数第三位与倒数第一位之前的字符          
10、截取倒数第三位到结尾        
11、逆序截取,步长为3

>>> str = 'hellopython'
>>> str[0:4]
'hell'
>>> str[1:7]
'ellopy'
>>> str[:]
'hellopython'
>>> str[5:]
'python'
>>> str[:-5]
'hellop'
>>> str[2]
'l'
>>> str[-1]
'n'
>>> str[::-1]
'nohtypolleh'
>>> str[-3:-1]
'ho'
>>> str[-3:]
'hon'
>>> str[::-3]
'ntoe'

5、表达式计算

python表达式

>>>a=2
>>>b=4
>>>x=6
>>>y=5
>>>c=1
>>>e=2.759
>>>import math
>>>(math.sin(a)+math.sin(b))/(a+b)
0.025415821919625586
>>> 1/3*((a**3+b**3+c**3)**(1/3))
1.3931130654604105
>>> (e**abs(x-y))/(3**x+(6**0.5)*math.sin(y))
0.03128093849812538

6、写出表达式

按要求写出Python表达式。
(1)将整数k转换成实数。
(2)求实数x的小数部分。
(3)求正整数m的个、十、百位数字。

//1
float(k)
//2
x-int(x)
//3
m%10  //个位
m%100//10  //十位
m%1000//100  //百位

7、if-elif-else多分支结构

思考与练习
利用if-elif-else多分支结构
用户输入一个x的值,编写一段程序,利用format输出x和分段函数的值
if-elif-else多分支结构

x=eval(input("请输入x:"))
if x>2:
    y=4*x-5
elif -1<=x and x<=2:
    y=x*x+3
else :
    y=-x+10
print("x为{0:.2f},得分段函数的值y={1:.2f}".format(x,y))

8、if-else 二分支结构

思考与练习
利用if-else 二分支结构编写程序
输入三条边长如果能构成三角形就计算周长和面积

a=eval(input("请输入a边边长:"))
b=eval(input("请输入b边边长:"))
c=eval(input("请输入c边边长:"))
triangle=(a+b)>c and (a+c)>b and (b+c)>a and abs(a-b)<c and abs(a-c)<b and abs(c-b)<a
if triangle:
    C=a+b+c
    p=C/2
    S=(p*(p-a)*(p-b)*(p-c))**0.5
    print("可构成三角形,该三角形的周长为{0:.2f},面积为{1:.2f}".format(C,S))
else:
    print("不可构成三角形")

9、蒙特卡罗方法

思考
1、 蒙特卡罗方法的基本思想是什么?
2、 如何利用蒙特卡罗方法求解π?

//1.基本思想:利用概率模型及随机过程解决一系列实际问题。
//2.构造一个单位正方形和一个单位圆的1/4,计算机随机产生两个0-1之间的数作为
//点的横纵坐标,从点到原点的距离判断是否在圆内,统计落在1/4圆的个数以及落在
//单位正方形的个数,二者相除再乘以四得到最终结果为 π。
from random import random
from time import perf_counter
DARTS=1000*1000
hits=0.0
start=perf_counter()
for i in range(1,DARTS+1):
    (x,y=random(),random())
    dist=pow(x**2+y**2,0.5)
    if dist<=1.0:
        hits=hits+1
pi=4*(hits/DARTS)
print("圆周率的值是:{}".format(pi))
print("运行时间是:{:.5f}s".format(perf_counter()-start))

10、常见的异常错误

列举一些常见的异常错误

1、SystemExit:解释器请求退出
2、Keyboardlnterrupt:用户请求中断执行(通常输入Ctrl + C)
3、Stoplteration:迭代器没有更多的值
4、StandardError:所有的内建标准异常的基类
5、GeneratorExit:生成器(generator)发生异常来通知退出
6、ArithmeticError:所有数值计算错误的基类
7、FloatingPointError:浮点数计算错误
8、OverflowError:数值运算超出最大限制
9、ZeroDivisionError:除零错误
10、AssertionError    :断言语句失败
11、AttributeError:对象没有这个属性
12、EOFError:没有内建输入,到达EOF标记
13、EnvironmentError:操作系统错误的基类
14、IOError:输入/输出操作失败
15、OSError:操作系统错误
16、WindowsError:系统调用错误
17、ImportError:导入模块/对象失败
18、LookupError:无效数据查询的基类
19、IndexError:序列中没有此索引(index)
20、KeyError:映射中没有这个键
21、MemorryError:内存溢出错误
22、NameError:未声明/初始化对象(没有属性)
23、UnboundLocalError    :访问未初始化的本地变量
24、ReferenceError:弱引用(weak reference)试图访问已经回收的对象
25、RuntimeError:一般运行时错误
26、NotlmplementedError:尚未实现的方法
27、SyntaxError:python语法错误
28、IndentationError:缩进错误
29、TabError:Tab和空格混用
30、SystemError:一般解释器系统错误
31、TypeError:对类型无效的操作
32、ValueError:传入无效的参数
33、UnicodeError:Unicode相关的错误
34、UnicodeDecodeError:Unicode 解码时错误
35、UnicodeEncodeError:Unicode 编码时错误
36、UnicodeTranslateError :Unicode转换时错误

11、if中判断的条件

思考与讨论
if中判断的条件是否只有bool类型表达式?能否是str类型,或者其他?

不是,可以是任意数值,例如list类型、str类型、set类型、dict类型,但编译系统会把这个表达式强制转成逻辑值

12、循环输出等腰三角形

使用循环输出等腰三角形,打印下面图形
等腰三角形

for i in range(1,5):
    for j in range(4-i):
        print(" ",end="")
    for a in range(2*i-1):
        print("*",end="")
    print("\n")

13、猴子吃桃问题

思考与练习
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少?
要求:利用递归编写代码

N=10
n=0
def taozi(n):
    n=(n+1)*2
    return n
for i in range(N):
    if i==0:
        n=1
    else:
        n=taozi(n)
print("第一天摘了{}个桃子".format(n))

14、九九乘法表

思考与练习
利用for循环语句 打印输出九九乘法表

for i in range(1,10):
    for j in range(1,i+1):
        print("{}*{}={}".format(i,j,i*j),end=" ")
    print("\n")

15、实例“身体质量指数BMI”讨论

思考与讨论
1、 观察实例5.1或5.2中的条件区间范围划分,思考划分的规则是什么?
2、 观察实例代码5.1中的第8行和第10行,思考为何代码不按照注释方式写全变量的最小边界?
3、 Python中判断条件24<=28<25是否合法?其值是什么?
4、 实例代码5.1中第2行最后的反斜杠\有什么作用?
5.1
5.2

15.1是分别根据不同的范围标准来划分,一个是国际BMI标准,一个是国内的标准;5.2是将两个标准整理后,编写在同一个程序中的。
2、因为第一个判断条件中“bmi=18.5不是偏瘦,所以当程序运行时,第一个判断为Falses时,可得此时的bmi>=18.5,就会进入到第二个判断条件“bmi<25”,此时的判断条件就相当于是“18.5<=bmi<25”;第10行同理。
3、合法,值为False
4、作用是分行,避免一行代码过长

16、各种循环的应用场景

思考与讨论
单分支(if语句)、二分支(if-else语句)、多分支(if-elif-else)、if嵌套的应用场景?

1、单分支语句一般应用于只有一个选项,满足条件时执行,不满足则不执行的场景
2、二分支语句一般应用于有两个方案,选择其中一种执行的场景
3、多分支语句则一般应用于多条件分类执行的场景,如”对不同分数分级的问题“
4if嵌套语句一般应用于一个条件判断完后还需判断条件的问题场景

17、进度条反映了软件的执行速度,请思考并给出至少2种提高软件执行速度的方法。

1.尽可能优化算法
2.善于使用函数,使程序变的模块化
等等

18、猜数字游戏

预设一个0-9之间的整数,让用户通过键盘输入所猜的数字,如果大于预设的数,显示“遗憾,太大了”;小于预设的数,显示“遗憾,太小了”,如此循环,知道猜中该数,显示“预测N次,你猜中了!”,其中N是用户输入数字的次数。

import random as r
n=r.randint(0,9)
t=eval(input("请输入你猜测的数字:"))
count=0
while(n!=t):
    if t>n:
        print("遗憾,太大了")
        count=count+1
    else:
        print("遗憾,太小了")
        count=count+1
    t=eval(input("请输入你猜测的数字:"))
print("预测{}次,你猜中了!".format(count))

19、猜数字游戏2.0

让计算机能够随机产生一个预设数字,范围在0-100之间,其他游戏规则不变。
要求将代码封装到函数中。

def caishuzi():
    import random as r
    n=r.randint(0,100)
    t=eval(input("请输入你猜测的数字:"))
    count=0
    while(n!=t):
        if t>n:
            print("遗憾,太大了")
            count=count+1
        else:
            print("遗憾,太小了")
            count=count+1
        t=eval(input("请输入你猜测的数字:"))
    print("预测{}次,你猜中了!".format(count))
caishuzi()

20、货币转换2.0

汇率计算问题
人民币和美元间汇率固定为:1美元 = 6.78人民币
格式要求:20USD 或20RMB
增加如下新功能,完成编写程序
功能1:根据输入判断是人民币还是美元,进行相应的转换计算
功能2:程序可以一直运行,直到用户选择退出

while(True):
    MoneyStr=input("请输入带有符号(UBD或RMB)的数值(break)退出:")
    if MoneyStr=="break":
        break
    elif MoneyStr[-1] in ['B','b']:
        print("输入货币为人民币")
        USD=eval(MoneyStr[0:-3])/6.78
        print("转换后的金额为{:.2f}USD".format(USD))
    elif MoneyStr[-1] in ['D','d']:
        print("输入货币为美元")
        RMB=eval(MoneyStr[0:-3])*6.78
        print("转换后的金额为{:.2f}RMB".format(RMB))
    else:
        print("输入的格式错误")

以上只是我个人解法和理解,如果有不同的想法欢迎大家一起讨论~
都看到这里了,给我点个赞呗~

  • 33
    点赞
  • 305
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值