1、编程需求
阿萌要开发一个长度单位换算器,帮助学生掌握长度单位的换算。
长度单位换算要求
程序要求学生输入一个带单位的长度数值,程序输出换算后其它单位的长度数值。支持的长度单位有:米、分米、厘米、毫米。
例如学生输入1分米,程序输出如下:
1分米=0.1米
1分米=10厘米
1分米=毫米
2、分割子串
根据编程需求,程序需要识别出学生输入的单位和数值,并进行单位换算。
例如学生输入“3分米”,程序需要分割出数值3和分米,数值3是长度,分米是单位。
input函数返回的是字符串,实际就是对字符串的分割。程序需要编写一个cut函数来分割学生输入的字符串。
函数的功能是传入一个字符串,返回一个列表,该列表有两个元素,第一个元素是识别出的数值,第二个元素是识别出的单位。如果识别失败,返回空列表。
数值和单位分割算法
遍历字符串的所有字符,在遍历过程中,做如下处理:
如果字符是数字字符,且后续是连续数字字符,将该数字字符序列作为整数存入列表,作为列表的第一个元素,将数字字符之后的字符序列作为列表的第二个元素。
程序简化起见,算法假设学生按照程序要求输入了正确的数据,没有对学生的输入错误进行处理。
cut函数流程图如下:
cut函数代码如下:
代码解读
函数的功能是将学生输入的内容分割成两个子串,一个子串是数值,一个子串是单位,将分割出来的两个子串添加到list列表,函数返回list列表。
函数使用for……in……循环结构来遍历传入的字符串instr,循环变量ch是instr的一个字符。在第一轮循环时,ch是instr的第一个字符,在第二轮循环时,ch是instr的第二个字符,以此类推,直至instr遍历完成。
在for循环体中,判断ch是否是数字,如果是数字添加到num字符串中,如果不是数字添加到unit字符串。
str遍历完成后,将num转换为整数后添加到list列表,unit也添加到list列表。
购买专栏解锁剩余82%