练习

初学python,纯粹是个人爱好,放暑假了没事干,想学点有意思的东西。首先声明一点:真正的从0开始,首先,最高学历是中师,没上过大学。第二,英语水平极差,只有初中的一点水平,还不会音标,不会读,只好下载了个有道词典随时查英文。第三是数学,高等代数什么的都没学过。
发现这个地方不错,以后就在这儿安家了,希望大家能帮帮我,不用大神,估计90%的人都比我强,我学这个只是个爱好,不用这个就业。
今天先提个问题,改造温度实例的代码,用eval(input(<提示输入>))改变。结果改成这样:

TemStr=eval(input("请输入带有符号的温度值"))
if TemStr[-1] in['F','f']:
    C=(TemStr[0:-1]-32)/1.8
    print("转换后的温度是{:.2f}C".format(C))
elif TemStr[-1] in ['C','c']:
    F=1.8*TemStr[0:-1]+32
    print("转换后的温度是{:.2f}F".format(F))
else:
    print("输入格式错误")

结果,提示输入内容正常显示,但输入之后一运行,出现错误:

File "<string>", line 1
    20f
      ^

SyntaxError

: unexpected EOF while parsing

英文反正我是看不懂的,大约查了一下,问题在于:输入比如:32F,在经过eval转换后,变成了没有引号的 32F,默认为一个数字,但从数字中查找F或f就出现了错误。
网上找了很长时间,没有找到想对应的答案,只好把官网上给的答案拉出来了:
将原程序改写为两个独立程序,如下:

temp = eval(input("请直接输入华氏温度值: "))
C = (temp - 32)/1.8
print("转换后的温度是{}C".format(int(C)))


temp = eval(input("请直接输入摄氏温度值: "))
F = 1.8*temp + 32
print("转换后的温度是{}F".format(int(F)))

现在把网上找到的答案发出来,它是改进了思路,并不能把如32F这样的字符串变为数字后再把32提取出来,而是改为只输入数字,然后把两种温度值都转换了一下。如下:

TemStr=eval(input("请输入一个温度值:"))
C=round((TemStr-32)/1.8)    #round函数的作用是四舍五入取整数,后面没有参数应该就是取整数吧。
print("{}F转换后的温度是{}C".format(TemStr ,C))  
F=round(1.8*TemStr+32)
print("{}C转换后的温度是{}F".format(TemStr,F)) 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值