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))
一、作业要求速览
任务:编写程序实现以下功能:
- 输入一个任意长度的字符串(包含字母、数字、特殊字符)
- 统计并输出:
- 大写字母个数
- 小写字母个数
- 数字字符个数
- 其他字符(非字母数字)个数
- 输出结果格式清晰,例如:
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,遍历空字符串时循环不执行,结果正确
五、代码优化建议
- 使用字典简化计数:
python
stats = { "大写字母": 0, "小写字母": 0, "数字字符": 0, "其他字符": 0 } for char in s: if char.isupper(): stats["大写字母"] += 1 # 其他条件类似... print(stats)
- 封装为函数:
python
def count_chars(s): # 计数逻辑 return upper_count, lower_count, digit_count, other_count # 调用:count_chars("Hello 123!")
- 处理中文等多语言字符:
- 若需统计中文字符,可增加
char.isalpha()
判断(但会包含字母,需结合业务调整)
- 若需统计中文字符,可增加
六、总结:从字符到字符串处理
通过本次作业,掌握了:
- 字符串遍历的基本方法(
for char in s
) - 字符类型判断函数(
isupper()
/islower()
/isdigit()
)的应用 - 条件判断语句的逻辑组合
- 基础计数功能的实现技巧
延伸思考:若需要统计每个字符的出现频率(不分类别),如何用 collections.Counter
优化?(提示:去除类型判断,直接统计所有字符)
完整代码可直接复制运行,适合 Python 初学者巩固字符串处理与条件判断逻辑~