头歌实践平台python实验4:Python字符串处理

第1关:逆序输出字符串

任务描述

本关任务:编写程序,将一个字符串中的字符按逆序打印出来。。

程序分析

先输出字符串的最后一个字符,且不换行,然后输出倒数第2个字符,同样不换行,一直到第1个字符。利用for循环控制字符索引编号,循环赋值目标变量从0变化到字符串的长度。取字符串的长度可以利用len()函数。

编程要求

根据提示,在右侧编辑器补充代码,输入一个字符串,将字符串中的字符逆序输出。

测试说明

平台会对你编写的代码进行测试:

测试输入1:Please enter a string:ABCDEF 预期输出1:FEDCBA

测试输入2:Please enter a string:Pyhon123 预期输出2:321nohyP

# 请在此添加代码
########## Begin ##########
s=input("Please enter a string:")
for i in range(len(s)-1,-1,-1):
    print(s[i],end="")



########## End ##########

第2关:循环输出字符串

任务描述

本关任务:编写程序,输入一个字符串,每次去掉最后面的字符并输出。

程序分析

先求出字符串的长度,使用切片法输出字符串去掉最后一个字符后的字符串;然后对新的字符串采用同样的方法去掉最后一个字符后输出,一直到只剩下原字符串的第1个字符。利用for循环控制字符索引编号,循环赋值目标变量从-1变化到字符串的长度的负数。取字符串的长度可以利用len()函数。

编程要求

根据提示,在右侧编辑器补充代码,输入一个字符串,将字符串中的字符每次去掉最后面的字符并输出。

测试说明

平台会对你编写的代码进行测试:

测试输入1:Please Input:ABCDEF 预期输出1: ABCDE ABCD ABC AB A

测试输入2:Please Input:Pyhon123 预期输出2: Pyhon12 Pyhon1 Pyhon Pyho Pyh Py P

# 请在此添加代码
########## Begin ##########
s=input('Please Input:')
for i in range(-1,-len(s)-1,-1):
    print(s[:i])



########## End ##########

第3关:字符串连接 

任务描述

本关任务:编写程序,从键盘输入5个字符串,将它们连接成一个字符串后输出。

相关知识

为了完成本关任务,你需要掌握:字符串的连接方法。

编程要求

根据提示,在右侧编辑器补充代码,将输入的5个字符串连接后输出。

测试说明

平台会对你编写的代码进行测试:

测试输入: Please enter a string:1 Please enter a string:2 Please enter a string:abc Please enter a string:3 Please enter a string:xyz

预期输出: 12abcxyz

# 请在此添加代码
########## Begin ##########
s=''
for i in range(5):
    s +=input("Please enter a string:")
print(s)




########## End ##########

第4关:挑选以元音字母开头的单词 

 

任务描述

本关任务:编写程序,从键盘输入5个英文单词,输出其中以元音字母开头的单词。

程序分析

分析:输入一个英文单词,并进行判断,用for循环控制重复执行5次。可以将所有元音字母构成一个字符串s='AEIOUaeiou',遍历该字符串中的各个字符,并判断单词的首字母是否在该字符串中。如果首字母在该字符串中,则是元音,输出单词,否则,不输出。

编程要求

根据提示,在右侧编辑器补充代码,输出以元音字母开头的单词。

测试说明

平台会对你编写的代码进行测试:

测试输入与预期输出: Please enter a word:a a Please enter a word:hello Please enter a word:every every Please enter a word:enter enter Please enter a word:key

# 请在此添加代码
########## Begin ##########
s='AEIOUaeiou'
for i in range(5):
    s1=input('Please enter a word:')
    if s1[0] in s:
        print(s1)



########## End ##########

第5关:翻译密码 

任务描述

本关任务:翻译密码。为了保密,常不采用明码电文,而用密码电文,按事先约定的规律将一个字符转换为另一个字符,收报人则按相反的规律转换得到原来的字符。例如,将字母“A”→“F”,“B”→“G”,“C”→“H”,即将一个字母变成其后第5个字母。例如,“He is in Beijing.”应转换为“Mj nx ns Gjnonsl.”。

程序分析

依次取电文中的字符,对其中的字母进行处理,对字母之外的字符维持原样。取字母的ASCII代码,加上5,再按其ASCII码转换为另一个字母。还有一个问题要处理,当字母为“V”时,加5就超过了“Z”,故应使之转换为“A”,同理,“W”→“B”,“X”→“C”,“Y”→“D”,“Z”→“E”。判断一个字符是否为字母可以使用str.isalpha()函数。

相关知识

常见的字符串类型测试函数:字符串类型测试函数返回的都是逻辑值,假设有字符串s,则有: s.isalnum():是否全是字母和数字,并至少有一个字符 s.isalpha():是否全是字母,并至少有一个字符 s.isdigit():是否全是数字,并至少有一个字符 s.isspace():是否全是空格,并至少有一个字符 s.islower()s中的字母是否全是小写 s.isupper()s中的字母是否便是大写 s.istitle()s是否是首字母大写

编程要求

根据提示,在右侧编辑器补充代码,实现对输入的电文加密。

测试说明

平台会对你编写的代码进行测试:

测试输入1:He is in Beijing. 预期输出1:Mj nx ns Gjnonsl.

测试输入2:China 预期输出2:Hmnsf

# 请在此添加代码
########## Begin ##########
text=input()
result=''
for char in text:
    if char.isalpha():
        if char.islower():
            char_ascii=ord(char)+5
            if char_ascii>ord('z'):
                char_ascii=ord('a')+(char_ascii - ord('z')-1)
        else:
            char_ascii=ord(char)+5
            if char_ascii >ord('Z'):
                char_ascii=ord('A')+(char_ascii - ord('Z')-1)
        result+=chr(char_ascii)
    else:
        result+=char
print(result)




########## End ##########

第6关:Python的标识符

任务描述

本关任务:Python的标识符以字母或下划线(_)开头,后接字母、数字或下划线组成,从键盘输入字符串,判断它是否Python的标识符。编写程序实现标识符是否正确的判断,要求至少输入两个字符,否则提示input error

相关知识
Python中的字符串常量

使用字符串常量,应导入string模块,即要使用import string 下面是一些常用的Python字符串常量 string.digits:包含0-9的字符串 string.letters:包含所有大小写字母的字符串 string.lowercase:所有小写字母 string.printable:包含所有可以打印字符的字符串 string.punctuation:包含所有标点的字符串 string.uppercase:包含所有大写字母的字符串

字母字符串常量与地区有关,比如string.letters,也就是说,其具体值取决于python所配置的语言,如果确认自己使用的是ascii,那么可以在签名加上ascii_前缀。例如:string.ascii_letters

使用python内置函数判断字符串是否为关键字

示范代码如下: import keyword keyword.iskeyword("str")

其中: str为要检查的字符串 如果是关键字返回True,不是返回False 例如:int 是整数类型转换函数的函数名,不是关键字所以返回False

任务分析

为了完成本关任务,你可以按如下方式操作:利用string模块中的常量,包括string.digits(数字0~9)、string.ascii_letters(所有大小写字母)、string.ascii_lowercase(所有小写字母)、string.ascii_uppercase(所有大写字母)。先输入字符串,再分别判断首字符和中间字符,并给出提示。判断中间字符利用for循环遍历字符串。

编程要求

根据提示,在右侧编辑器补充代码,对输入的字符串进行判断,显示效果仿照IDLE编辑器的输出效果。

  • 当输入的字符少于2个字符时,输出input error
  • 当输入的字符串是关键字时,则输出*** is a keyword,其中 ***为您输入的字符串,下同
  • 当输入的字符串不是以下划线或字母开头,则输出invalid: first symbol must be alphabetic
  • 当输入的字符串以字母或下划线开头,但是包含字母、数字、下划线以外的字符时(暂不考虑中文等其他字符),则输出invalid:identifier symbols must be alphanumeric
  • 当输入的字符串是合法标识符时,输出*** is a valid identifier
测试说明

平台会对你编写的代码进行测试:

测试输入:Please Input Identifier:a 预期输出:input error

测试输入:Please Input Identifier:_abc 预期输出:_abc is a valid identifier

测试输入:Please Input Identifier:if 预期输出:SyntaxError: if is a keyword

测试输入:Please Input Identifier:123a 预期输出:invalid: first symbol must be alphabetic

测试输入:Please Input Identifier:abc: 预期输出:invalid:identifier symbols must be alphanumeric

# 请在此添加代码
########## Begin ##########
import keyword
import string
n=input("Please Input Identifier:")
digits=string.digits
letters=string.ascii_letters
punctuation=string.punctuation
Underline='_'
lenth=len(n)
if lenth >=2:
    if n[0] in letters or n[0] in Underline:
        for i in range(1,lenth):
            if n[i] in digits or n[i] in letters or n[i] in Underline ==True:
                fact=True
            else:
                fact=False
                break
        if fact==True:
            if keyword.iskeyword(n)==True:
                print('SyntaxError: {} is a keyword'.format(n))
            else:
                print('{} is a valid identifier'.format(n))
        else:
            print('invalid:identifier symbols must be alphanumeric')
    else:
        print('invalid: first symbol must be alphabetic')
else:
    print('input error')




########## End ##########

第7关:求数字之和

任务描述

本关任务:编写程序,实现如下功能:从键盘输入几个数字,用逗号分隔,求这些数字之和。要求输出结果保留2位小数。

程序分析

输入的数字当作一个字符串来处理,首先分离出数字串,再转换成数值,这样就能求和。

相关知识

为了完成本关任务,你需要掌握:str.split()函数的使用。

编程要求

根据提示,在右侧编辑器补充代码,计算并输出输入的字符串中的数字之和。

  • 输入语句建议格式:input('请输入几个数字(用逗号分隔)')
  • 要求输出结果保留2位小数。
    测试说明

平台会对你编写的代码进行测试:

测试输入:4,91,51,2,32 预期输出:sum=180.00

测试输入:5,1,1.51,12.3,22,100.24 预期输出:sum=142.05

# 请在此添加代码
########## Begin ##########
import string
str_num=input('请输入几个数字(用逗号分隔)')
num_list=str_num.split(',')
sum=0.0
for num_str in num_list:
    sum+=float(num_str)
print('sum={:.2f}'.format(sum))



########## End ##########

 

 

 

 

 

 

 

 

 

  • 13
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值