python作业练习题

1. 编程程序,用于实现两个数的交换。

a = int(input("请输入第一个数字"))
b = int(input("请输入第二个数字"))
a = 10
b = 15
a = a + b
b = a - b
a = a - b
print("a:%d"%a)
print("b:%d"%b)
a = int(input("请输入第一个数字"))
b = int(input("请输入第二个数字"))
print("交换之前a:%d"%a)
print("交换之前b:%d"%b)
c=a
a=b
b=c
print("交换之后a:%d"%a)
print("交换之后b:%d"%b)

2. 编程程序,根据输入的三科成绩值,计算平均值和总和

sum = 0
for i in range(3):
    x = float(input("请输入第%d科成绩"%(i+1)))
    sum +=x*1.0
print("总成绩为:%f"%sum)
print("平均值为:%f"%(sum/3))

3. 用户输入一个三位自然数,计算并输出其百位、十位和个位上的数字。

sum = float(input("请输入一个三位自然数"))
print("百位为%d"%(sum/100))
print("十位为%d"%((sum/10)%10))
print("个位为%d"%(sum%10))

4. 编写程序, 输入任意大的自然数, 输出各位数字之和

x = input("请输入一个自然数")
sum = 0
for i in x:
    sum +=int(i)
print("各位数字之和为%d"%sum)

5. 给定一个只包括字符和空格的句子,将句子中的单词位置反转后输出。输入的句子占一行,各个单词之间以空格分隔。例如,输入this is a test,输出test a is this 。

l1 = str(input("请输入一个字符串"))
l1 = l1.split()
list =str();
for i in l1:
    list = str(i) + " " + list
print(list)

6. 编写程序, 根据输入本金 b、年利率 r 和年数 n 计算最终收益v,v=b*(1+r)**n;然后编写测试代码,提示输入本金、年利率和年数,显示最终收益(保留两位小数)。

b = float(input("请输入本金"))
r = float(input("请输入年利率"))
n = float(input("请输入年数"))
print("最终收益为:%.2f"%(b*(1+r)**n))

7. 创建列表以列表 list1 = ["lift", "is", "short"]和 list2 = ["You", "need", "python"],并完成以下任务:

(1) 输出 listl 中的第一个元素 lift 及其索引(下标)。

(2) 在 short 后面增加一个!

list1 = ["lift", "is", "short"]
list2 = ["You", "need", "python"]
print("list1中的第一个元素是:",list1[0])
print("list1中的lift下标是:",list1.index("lift"))
list1[2] = list1[2] + "!";
print(list1[2])

8. 分别使用 if 和 while 语句删除将列表 x = [1,2,1,2,1,1,1]中的元素“1”全部删除

x = [1,2,1,2,1,1,1]
temp = x[:]
for i in temp:
    if i==1:
        x.remove(i)
print(x)

x = [1,2,1,2,1,1,1]
while i in x:
    if i==1:
        x.remove(i)
print(x)

9. 统计所输入字符串中单词的个数,单词之间用空格分隔。

s1 = str(input("请输入一个字符串"))
print("字符串中的单词个数为:%d"%(s1.count(' ')+1))

10. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

count = 0
for i in range(1, 5):
    for j in range(1, 5):
        if i == j:
            continue
        for k in range(1, 5):
            if (j == k) | (i == k):
                continue
            count += 1
            print(i * 100 + j * 10 + k)
print("总共有%d种" % count)

11. 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

money = float(input("请输入利润"))
sum = 0
sum += money*0.1 if money<=100000 else (10000+(money-100000)*0.075 if money<=200000 else (17500+(money-200000)*0.05 if money<=400000 else(27500+(money-400000)*0.03 if money<=600000 else(23500+(money-600000)*0.015 if money<=1000000 else(29500+(money-1000000)*0.001)))));
print("奖金为:%.2f"%sum)

12. 编写程序,输入字符串,将其每个字符的 ASCI 码形成列表并输出,运行效果如下图所示。

13. 提示:

(1) 使用 ord(s[i])方法(ord()函数主要用来返回对应字符的 ascii码)将字符转换为对应的 Unicode 码。

(2) 使用 s. append(x)方法将对象 x 追加到列表 s 的尾部。

s1 = str(input("请输入字符串"))
o = list()
for i in s1:
    o.append(ord(i))
print(o)

14. 完成字典操作。

(1) 建立字典 dict,包含以下内容:"数学":"LO4","语文":"WO1" ,"英语":"WO2" ,"物理":"LO2" ,"地理":"QO3"。

(2) 向字典中添加键值对"化学":"LO3"。

(3) 修改"数学"对应的值为"LO1"。

(4) 删除"地理"对应的键值对。

(5) 输出字典dict的全部信息。

data = dict(数学="LO4",语文="WO1" ,英语="WO2" ,物理="LO2" ,地理="QO3")
data.update(化学="LO3")
data.update(数学="LO1")
data.pop("地理")
print(data)

15. 创建一个空字典 student,录入学生姓名和成绩,并一一对应,当所有学生的信息录入完之后,输入 1 退出。需要注意的是(学生成绩范围为 0~150)超出范围重新输入。提示:使用 dict 函数和 zip 函数

namelist = []
scorelist = []
while 1:
    name = input("请输入名字(输入1退出)")
    if name == "1":
        break
    namelist.append(name)
    while 1:
        score = int(input("请输入成绩"))
        if (score<0)|(score>150):
            print("请重新输入,成绩大于0,小于150")
        else:
            scorelist.append(score)
            break
student = dict(zip(namelist,scorelist))
print(student)

16. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13,…,计算这个序列的前20项之和。提示:

(1) 采用遍历循环for 语句,循环执行20次,每次循环进行一次分数的累加,最终得到分数序列前20项的和。

(2) 观察这个分数序列的规律,从第﹖个分数开始,分子=前一个分数的分子+前一个数的分母,分母=前一个分数的分子。

f1 = 2
m1 = 1
sum = 0
for i in range(20):
    sum += f1/m1
    f1 +=m1
    m1 +=(i+1)
print(sum)

17. 问题描述:目前,网站要求用户注册的时候,通常要求密码具有高度的保密性,即在密码中必须包含大写字母、小写字母与数字。

str = input("请输入密码")
for i in str:
    if (i>='a') & (i<='z'):
        for i in str:
            if (i>='1') & (i<='9'):
                for i in str:
                    if (i>='A') & (i<='Z'):
                        print("密码正确")
                        exit()
print("密码必须包含大写字母、小写字母与数字")

18. 设计:编写一个程序,能够对用户输入的密码进行如下判断:

1、 两次输入结果一致,才能进行情况的验证

2、 如果不符合密码编写程序给出提示信息要求重新输入

bo = 1
while bo:
    str1 = input("请输入密码")
    str2 = input("请再次输入密码")
    print("密码正确") if str1 == str2 else print("密码不一致,请重新输入")
    if str1 == str2:
        bo = 0

19. 注:对于这一类问题我们进行简化,假设输入的必含有数字,字符中必须包含A,a,其余问题忽略不计,请编写程序

bo = 0
while 1:
    str = input("请输入密码")
    bo = 0 if ((str.count('A') == 0) | (str.count('a') == 0)) else 1
    if bo ==0:
        print("请重新输入密码,密码中包含A,a以及数字")
        continue
    for i in str:
        if (i >= '1') & (i <= '9'):
            print("密码正确")
            exit()
    print("请重新输入密码,密码中包含A,a以及数字")

20. 分别用函数与lambda形式编写比较两个数大小进行输出,其中函数名为maxNum()

def maxNum(a,b):
    return (a if a>b else b)

print("大数为:%d"%maxNum(12,15))

maxNum = lambda a,b: a if a>b else b

print("大数为:%d"%maxNum(15,10))

21. 编写函数change(str1),其功能是对参数str1进行大小写转换,其中的大写字母转换成小写字母;小写字母转换成大写字母;非英文字符不转换。

def change(str1):
    var = []
    for i in str1:
        if (i >= 'a')&(i <= 'z'):
            var.append(chr(ord(i)-32))
        elif (i >= 'A')&(i <= 'Z'):
            var.append(chr(ord(i)+32))
        else:
            var.append(i)
    return str(var)
print(change(input()))

22. 编写程序,根据用户输入的数字转换成相应的中文的大写数字。例如,1.23转换为“壹点贰叁”。

def change(str1):
    table = ''.maketrans('0123456789.','零壹贰叁肆伍陆柒捌玖点')
    return str(str1).translate(table)
print(change("2542.115"))

23. 给定一个字符串s和一个数k,试用正则表达式判断该字符串是否包含长度至少为k的重复子串.例如,输入'allochirally',3,应当返回True,因为 'allochirally'含有重复的 'all'子串。

import re

def search(pattern, string):
    x = re.search(pattern, string)
    if x != None:
        print(True)

str = str(input('输入字符串'))
k = int(input('输入长度'))
for i in range(len(str)-k+1):
    for j in range(i+k,len(str)-k+1):
        search(str[i:i + k], str[j:j+k])

24. 编写一个程序,该程序从控制台接受一个逗号分隔的数字序列,并生成一个列表和一个包含每个数字的元组。假设向该程序提供了以下输入:

l1 = input("请输入一个以,分割的数字序列")
num = l1.split(',')
list1 = list(num)
tuple1 = tuple(num)
print(list1)
print(tuple1)

25. 您需要编写一个程序来按升序对(名称,年龄,分数)元组进行排序,其中名称是字符串,年龄和分数是数字。元组由控制台输入。

str = input("请输入以空格为分隔符的元组")
l = str.split(" ")
t = tuple(sorted(l))
print("元组排序为:",t)

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狗头实习生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值