第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 ##########