找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 191|回复: 9

[求助] 新手...求大佬指点,这段代码。。。。。。。。。。。。...

2

主题

10

帖子

10

积分

贫民

积分
10
敬理想 发表于 2017-11-10 18:02:40 | 显示全部楼层 |阅读模式
本帖最后由 敬理想 于 2017-11-10 18:37 编辑
  1. temp = input()
  2. if temp[0] == 'C':
  3.     temp.lstrip('C')
  4.     eval(temp)
  5.     fabrenheit = temp * 1.8 + 32
  6.     print(fabrenheit)

  7. elif temp[0] == 'F':
  8.     temp.lstrip('F')
  9.     eval(temp)
  10.     celsius = (temp - 32) / 1.8
  11.     print(celsius)
复制代码

请问这种写法有什么问题吗?我想对输入的字符串记性处理的,调试结果(总结如下):------------------------------------------------

复制代码
输入:C123       错误提示:NameError: name 'C123' is not defined
输入:F123       错误提示:NameError: name 'F123' is not defined
输入:ABC或者123 没有错误
-----------------------------------------------
啥情况啊,能不能帮我看一下,不胜感激!!!






回复

使用道具 举报

0

主题

64

帖子

64

积分

新手

积分
64
sheeboard 发表于 2017-11-10 20:35:21 | 显示全部楼层
本帖最后由 sheeboard 于 2017-11-10 20:36 编辑

因为temp.lstrip('C')操作并没改变原来temp的值,后面eval(temp)还是在用'C123',分开写也行,只要改变后的值再赋给temp就可以。
回复 支持 1 反对 0

使用道具 举报

2

主题

405

帖子

405

积分

版主

Rank: 7Rank: 7Rank: 7

积分
405

最佳新人热心会员默默耕耘

whydo1 发表于 2017-11-10 18:19:45 | 显示全部楼层
改成这样
    temp=temp.lstrip('C')
    fabrenheit = eval(temp) * 1.8 + 32
python3.4.4, win10
回复 支持 反对

使用道具 举报

2

主题

10

帖子

10

积分

贫民

积分
10
敬理想  楼主| 发表于 2017-11-10 18:29:02 | 显示全部楼层
whydo1 发表于 2017-11-10 18:19
改成这样
    temp=temp.lstrip('C')
    fabrenheit = eval(temp) * 1.8 + 32

不行,,调试有错误:    fabrenheit = temp * 1.8 + 32
TypeError: can't multiply sequence by non-int of type 'float'
回复 支持 反对

使用道具 举报

2

主题

10

帖子

10

积分

贫民

积分
10
敬理想  楼主| 发表于 2017-11-10 18:38:57 | 显示全部楼层
whydo1 发表于 2017-11-10 18:19
改成这样
    temp=temp.lstrip('C')
    fabrenheit = eval(temp) * 1.8 + 32

我把问题描述修改了一下,您再看看呗
回复 支持 反对

使用道具 举报

2

主题

405

帖子

405

积分

版主

Rank: 7Rank: 7Rank: 7

积分
405

最佳新人热心会员默默耕耘

whydo1 发表于 2017-11-10 18:50:58 | 显示全部楼层
fabrenheit = temp * 1.8 + 32
改为
fabrenheit = eval(temp) * 1.8 + 32
python3.4.4, win10
回复 支持 反对

使用道具 举报

2

主题

10

帖子

10

积分

贫民

积分
10
敬理想  楼主| 发表于 2017-11-10 19:30:34 | 显示全部楼层
本帖最后由 敬理想 于 2017-11-10 19:32 编辑
whydo1 发表于 2017-11-10 18:50
fabrenheit = temp * 1.8 + 32
改为
fabrenheit = eval(temp) * 1.8 + 32

哦哦哦,这个地方是写错了,之前没看出来。
修改后,问题还是没有解决啊!跟之前的状况一样
  1. temp = input()
  2. if temp[0] == 'C':
  3.     temp.lstrip('C')
  4.     temp = eval(temp)
  5.     fabrenheit = temp * 1.8 + 32
  6.     print(fabrenheit)

  7. elif temp[0] == 'F':
  8.     temp.lstrip('F')
  9.     temp = eval(temp)
  10.     celsius = (temp - 32) / 1.8
  11.     print(celsius)
复制代码


回复 支持 反对

使用道具 举报

0

主题

64

帖子

64

积分

新手

积分
64
sheeboard 发表于 2017-11-10 19:57:53 | 显示全部楼层
In [10]: if temp[0]=='C':
    ...:     temp=eval(temp.lstrip('C'))
    ...:     fabrenheit=temp*1.8+32
    ...:     print (fabrenheit)
    ...:     
253.4
回复 支持 反对

使用道具 举报

2

主题

10

帖子

10

积分

贫民

积分
10
敬理想  楼主| 发表于 2017-11-10 20:26:36 | 显示全部楼层
sheeboard 发表于 2017-11-10 19:57
In [10]: if temp[0]=='C':
    ...:     temp=eval(temp.lstrip('C'))
    ...:     fabrenheit=temp*1.8+ ...

可以啦,为什么分开写就不行呢?可否告知一二
回复 支持 反对

使用道具 举报

2

主题

10

帖子

10

积分

贫民

积分
10
敬理想  楼主| 发表于 2017-11-10 20:42:59 | 显示全部楼层
sheeboard 发表于 2017-11-10 20:35
因为temp.lstrip('C')操作并没改变原来temp的值,后面eval(temp)还是在用'C123',分开写也行,只要改变后的 ...

明白了,lstrip函数只是将结果返回 而没有改变字符串。。谢谢您哈~
回复 支持 反对

使用道具 举报

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

本版积分规则

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