鱼C论坛

 找回密码
 立即注册
查看: 1909|回复: 4

[已解决]python 关于类型问题 eval 函数问题

[复制链接]
发表于 2018-5-18 22:38:08 | 显示全部楼层 |阅读模式
5鱼币
描述

温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fabrenheit)。

请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。

转换算法如下:(C表示摄氏度、F表示华氏度)

         C = ( F - 32 ) / 1.8

         F = C * 1.8 + 32

要求如下:

(1) 输入输出的摄氏度采用大写字母C开头,温度可以是整数或小数,如:C12.34指摄氏度12.34度;

(2) 输入输出的华氏度采用大写字母F开头,温度可以是整数或小数,如:F87.65指摄氏度87.65度;

(3) 不考虑异常输入的问题,输出保留小数点后两位;

(4) 使用input()获得测试用例输入时,不要增加提示字符串。
输入

示例1:C12.34

示例2:F87.65
输出

示例1:F54.21

示例2:C30.92

我的代码 如下  再输入整数时候正常,输入带小数点的数 刨出异常
  1. temp = input('请输入温度:')
  2. if temp[0:1] in ['C', 'c']:
  3.     num = int(temp[1:])
  4.     F = num * 1.8 + 32
  5.     print('F' + str("%.2f" % F))
  6. elif temp[0:1] in ['F', 'f']:
  7.     num = int(temp[1:])
  8.     C = (num - 32) /1.8
  9.     print('C' + str("%.2f" % C))
复制代码


答案 这么说 如下:
(1) 将输入字符串转换为数字时使用eval()函数,不要用int()函数,因为输入的数字可能不是整数;

(2) 采用{:.2f}将输出数字变成两位小数点表示时,即使数学上该输出值是整数,也会按照小数方式输出,例如,转换后温度为10度,输出为10.00。

请问 这个  eval()  怎么用,为什么
  百度查了下,就说eval函数意思就是 去除最外层引号, 没整明白 求助
最佳答案
2018-5-18 22:38:09
hi 谈下自己的理解哈,举个栗子

>>> a = '1'  # 变量a,b,c 均是字符串
>>> b = '1.1'
>>> c = 'c'

>>> type(eval(a)) #可以看到,通过eval()函数处理后,'' 被去掉了,a b 分别从字符串类型变为 整型、浮点型,字符串c还是字符串;如果用int()进行处理,由于int()只能处理整型,b,c都会报错
<class 'int'>
>>> type(eval(b))
<class 'float'>
>>> type(eval(c))
<class 'str'>



  1. temp = input('请输入温度:')
  2. if temp[0:1] in ['C', 'c']:
  3.     #num = int(temp[1:]) #当输入小数时,由于int无法处理小数,出现报错
  4.     num = eval(temp[1:]) #使用eval()则正常
  5.     print(type(num))
  6.     F = num * 1.8 + 32
  7.     print('F' + str("%.2f" % F))
  8. elif temp[0:1] in ['F', 'f']:
  9.     num = int(temp[1:])
  10.     C = (num - 32) /1.8
  11.     print('C' + str("%.2f" % C))
复制代码

最佳答案

查看完整内容

hi 谈下自己的理解哈,举个栗子 >>> a = '1' # 变量a,b,c 均是字符串 >>> b = '1.1' >>> c = 'c' >>> type(eval(a)) #可以看到,通过eval()函数处理后,'' 被去掉了,a b 分别从字符串类型变为 整型、浮点型,字符串c还是字符串;如果用int()进行处理,由于int()只能处理整型,b,c都会报错 >>> type(eval(b)) >>> type(eval(c))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-18 22:38:09 | 显示全部楼层    本楼为最佳答案   
hi 谈下自己的理解哈,举个栗子

>>> a = '1'  # 变量a,b,c 均是字符串
>>> b = '1.1'
>>> c = 'c'

>>> type(eval(a)) #可以看到,通过eval()函数处理后,'' 被去掉了,a b 分别从字符串类型变为 整型、浮点型,字符串c还是字符串;如果用int()进行处理,由于int()只能处理整型,b,c都会报错
<class 'int'>
>>> type(eval(b))
<class 'float'>
>>> type(eval(c))
<class 'str'>



  1. temp = input('请输入温度:')
  2. if temp[0:1] in ['C', 'c']:
  3.     #num = int(temp[1:]) #当输入小数时,由于int无法处理小数,出现报错
  4.     num = eval(temp[1:]) #使用eval()则正常
  5.     print(type(num))
  6.     F = num * 1.8 + 32
  7.     print('F' + str("%.2f" % F))
  8. elif temp[0:1] in ['F', 'f']:
  9.     num = int(temp[1:])
  10.     C = (num - 32) /1.8
  11.     print('C' + str("%.2f" % C))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-19 09:39:49 | 显示全部楼层
eval 函数 执行字符串表达式,并返回执行结果。
  1. >>> eval('123+25')
  2. 148
  3. >>> eval('print("jack")')
  4. jack
  5. >>> eval('type(lambda x:x**2)')
  6. <class 'function'>
  7. >>> eval('eval("1+2")')
  8. 3
  9. >>> num = 123
  10. >>> eval('num')
  11. 123
  12. >>>
复制代码

从一定程度上来说,确实是去掉外面的引号,变成了一个表达式,但还要执行该表达式。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-5-19 12:08:36 | 显示全部楼层
thexiosi 发表于 2018-5-19 07:08
hi 谈下自己的理解哈,举个栗子

>>> a = '1'  # 变量a,b,c 均是字符串
  1. >>> a = '1'
  2. >>> b = '1.1'
  3. >>> c = 'c'
  4. >>> type(a)
  5. <class 'str'>
  6. >>> type(eval(a))
  7. <class 'int'>
  8. >>> type(eval(b))
  9. <class 'float'>
  10. >>> type(eval(c))
  11. <class 'str'>
  12. >>> type(int(a))
  13. <class 'int'>
  14. >>> type(int(b))
  15. Traceback (most recent call last):
  16.   File "<pyshell#8>", line 1, in <module>
  17.     type(int(b))
  18. ValueError: invalid literal for int() with base 10: '1.1'
  19. >>> type(int(c))
  20. Traceback (most recent call last):
  21.   File "<pyshell#9>", line 1, in <module>
  22.     type(int(c))
  23. ValueError: invalid literal for int() with base 10: 'c'
  24. >>>
复制代码


似乎懂了 谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-5-19 12:09:43 | 显示全部楼层
久疤K 发表于 2018-5-19 09:39
eval 函数 执行字符串表达式,并返回执行结果。

从一定程度上来说,确实是去掉外面的引号,变成了一个表 ...

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 07:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表