精通正则表达式中,有一个温度转换程序,使用perl写的,现在转换成python来写,也算是对re的一个应用:
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#filename:temperature_exchange.py
import re
def Match():
imply = raw_input("Type you temperature(e.g:32F,100C): ")
re_str = r'([-+]?[0-9]+(\.[0-9]*)?)\s*([CF])$'
match = re.match(re_str,imply,re.I)
if match:
num = re.search(re_str,imply,re.I).group(1)
kind = re.search(re_str,imply,re.I).group(3)
if(kind == 'c' or kind == 'C'):
c = float(num)
f = (c * 9 / 5) + 32
else:
f = float(num)
c = (f - 32) * 5 / 9
print "%.2fC is equal to %.2fF \n" % (c,f)
else:
print "\nExpecting a number followed by C or F "
print "sorry,your type style is out of the regular!\n"
while True:
Match()
运行测试情况如下:
>>> ================================ RESTART ================================
>>>
Type you temperature(e.g:32F,100C): 23f
-5.00C is equal to 23.00F
Type you temperature(e.g:32F,100C): 45F
7.22C is equal to 45.00F
Type you temperature(e.g:32F,100C): 34c
34.00C is equal to 93.20F
Type you temperature(e.g:32F,100C): 23C
23.00C is equal to 73.40F
Type you temperature(e.g:32F,100C): 23
Expecting a number followed by C or F
sorry,your type style is out of the regular!
Type you temperature(e.g:32F,100C): 23.4
Expecting a number followed by C or F
sorry,your type style is out of the regular!
Type you temperature(e.g:32F,100C): 23.45F]
Expecting a number followed by C or F
sorry,your type style is out of the regular!
Type you temperature(e.g:32F,100C): 23.45F
-4.75C is equal to 23.45F
Type you temperature(e.g:32F,100C): -23
Expecting a number followed by C or F
sorry,your type style is out of the regular!
Type you temperature(e.g:32F,100C): -23F
-30.56C is equal to -23.00F
Type you temperature(e.g:32F,100C): -23C
-23.00C is equal to -9.40F
Type you temperature(e.g:32F,100C): +45F
7.22C is equal to 45.00F
Type you temperature(e.g:32F,100C): +34.45f
1.36C is equal to 34.45F
本文来自博客园,作者:{Julius},转载请注明原文链接:https://www.cnblogs.com/bestechshare/p/16447766.html
可微信加我,了解更多,WeChat:{KingisOK}