Python程序设计与应用-课后作业3

Python程序设计与应用-课后作业3

1.编写程序,实现下述功能:

1)创建字符串’My favorate sport is baseketball.’,赋给变量str1。

①查找字符串str1中是否含有子串’baseketball’;

②查找字符串str1中是否含有子串’football’。

str1="My favorate sport is baseketball."
print(str1.find("baseketball"))
print(str1.find("football"))

2.编写程序,实现下述功能:

创建字符串’ithema and ithemaApp.’,赋给变量str2。

①将字符串str2中的子串’ithema’替换为’ithe’(全部替换);

②将字符串str2中的子串’ithema’替换为’ithe’(只替换第一个)。

str2="ithema and ithemaApp."
print(str2.replace("ithema","ithe"))
print(str2.replace("ithema","ithe",1))

3.编写程序,实现下述功

创建字符串’ithema and ithemaApp’,赋给变量str3;将字符串str3按照空格进行分割。

str3="ithema and ithemaApp"
ls=str3.split(" ")
print(ls)

4.编写程序,实现下述功能

创建字符串’  Hello word!   ’(前面两个空格,后面三个空格),赋给变量str4,将字符串str4中首尾的空格删除。

str4="  Hello word!   "
print(str4.strip(" "))

5.编写程序,实现下述功能

创建字符串’My favorate book.’,赋给变量str5;

①将字符串str5中所有单词的首字母变成大写;

②将字符串str5中第一个字母变成大写;

③将字符串str5中所有字母变成小写;

④将字符串str5中所有字母变成大写。

str5="My favorate book."
print(str5.title())
print(str5.capitalize())
print(str5.lower())
print(str5.upper())

6.编写程序,实现下述功能

月球上物体的体重是在地球上的16.5%,小明现在的体重是40kg,假如他在地球上每年增长0.5kg,编写程序格式化输出未来8年小明在地球和月球上的体重情况。

格式:

1年后,小明在地球上的体重是:XXX,在月球上的体重是XXX。

2年后,小明在地球上的体重是:XXX,在月球上的体重是XXX。

...

8年后,小明在地球上的体重是:XXX,在月球上的体重是XXX。

for i in range(1,9):
    k_地球=40+0.5*i
    k_月球=k_地球*0.165
    print("{}年后,小明在地球上的体重是:{:.2f},在月球上的体重是{:.2f}。".format(i,k_地球,k_月球))

7.编写程序,实现下述功能

.编写程序,计算“十佳歌手”大赛每位选手的最后得分。

1)让用户输入一位选手的评委打分(提示用户:请输入5位评委的打分,各分数之间用空格分隔);

2)去掉一个最高分、去掉一个最低分,计算剩下得分的平均分作为选手的最后得分;

3)按如下格式输出“该选手的最后得分为:XX(保留到小数点后第二位)。”

n=input("请输入5位评委的打分,各分数之间用空格分隔:")
##n="3 4 5 7 9"     #调试
ls=n.split(" ")
##print(ls)
a=eval(max(ls))
b=eval(min(ls))
##print(a,b)       #调试
sum=0
for i in ls:
    sum+=eval(i)
avg=(sum-a-b)/3
##print(avg)       #调试
print("该选手的最后得分为:{:.2f}".format(avg))

一、作业要求速览

任务:编写程序实现以下功能:

  1. 输入一个任意长度的字符串(包含字母、数字、特殊字符)
  2. 统计并输出:
    • 大写字母个数
    • 小写字母个数
    • 数字字符个数
    • 其他字符(非字母数字)个数
  3. 输出结果格式清晰,例如:

    plaintext

    大写字母:X个  
    小写字母:X个  
    数字字符:X个  
    其他字符:X个  
    

二、解题思路拆解

1. 核心处理逻辑

  • 字符分类:利用字符串方法 isupper()islower()isdigit() 判断字符类型
  • 计数实现:初始化 4 个计数器,遍历字符串逐个字符判断并累加计数
  • 边界处理:考虑空字符串输入(计数均为 0)

2. 数据流向

三、核心代码实现

1. 输入与初始化

python

s = input("请输入任意字符串:")  
upper_count = 0  
lower_count = 0  
digit_count = 0  
other_count = 0  

2. 字符遍历与计数

python

for char in s:  
    if char.isupper():  
        upper_count += 1  
    elif char.islower():  
        lower_count += 1  
    elif char.isdigit():  
        digit_count += 1  
    else:  
        other_count += 1  

3. 结果输出

python

print("\n字符统计结果:")  
print(f"大写字母:{upper_count}个")  
print(f"小写字母:{lower_count}个")  
print(f"数字字符:{digit_count}个")  
print(f"其他字符:{other_count}个")  

4. 完整可运行代码

python

s = input("请输入任意字符串:")  
upper_count = lower_count = digit_count = other_count = 0  

for char in s:  
    if char.isupper():  
        upper_count += 1  
    elif char.islower():  
        lower_count += 1  
    elif char.isdigit():  
        digit_count += 1  
    else:  
        other_count += 1  

print("\n字符统计结果:")  
print(f"大写字母:{upper_count}个")  
print(f"小写字母:{lower_count}个")  
print(f"数字字符:{digit_count}个")  
print(f"其他字符:{other_count}个")  

四、踩坑记录与解决方案

1. 方法调用错误

  • 问题:误将 isupper() 写成 isUpper()(Python 方法名小写)
  • 解决:牢记 Python 字符串方法均为小写,如 islower()isdigit()

2. 特殊字符漏判

  • 错误逻辑:未考虑空格、标点符号等非字母数字字符
  • 修正:直接将不满足前三个条件的字符归为 “其他字符”,无需额外判断

3. 空字符串处理

  • 潜在问题:输入空字符串时输出负数(实际应为 0)
  • 预防:初始化计数器为 0,遍历空字符串时循环不执行,结果正确

五、代码优化建议

  1. 使用字典简化计数

    python

    stats = {  
        "大写字母": 0,  
        "小写字母": 0,  
        "数字字符": 0,  
        "其他字符": 0  
    }  
    for char in s:  
        if char.isupper():  
            stats["大写字母"] += 1  
        # 其他条件类似...  
    print(stats)  
    
  2. 封装为函数

    python

    def count_chars(s):  
        # 计数逻辑  
        return upper_count, lower_count, digit_count, other_count  
    # 调用:count_chars("Hello 123!")  
    
  3. 处理中文等多语言字符
    • 若需统计中文字符,可增加 char.isalpha() 判断(但会包含字母,需结合业务调整)

六、总结:从字符到字符串处理

通过本次作业,掌握了:

  1. 字符串遍历的基本方法(for char in s
  2. 字符类型判断函数(isupper()/islower()/isdigit())的应用
  3. 条件判断语句的逻辑组合
  4. 基础计数功能的实现技巧

延伸思考:若需要统计每个字符的出现频率(不分类别),如何用 collections.Counter 优化?(提示:去除类型判断,直接统计所有字符)

完整代码可直接复制运行,适合 Python 初学者巩固字符串处理与条件判断逻辑~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小红花大酒店

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

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

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

打赏作者

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

抵扣说明:

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

余额充值