光荣之路 Python 课程第一章 初探 22道练习题--前2题

  1. 输入1-127的ascii码并输出对应字符
>>> data=int(input("请输入数字:"))

请输入数字:99

>>> if 1<data<127:

...    ch=chr(data)

...     print(ch)

... else:

...    print("请输入1-127之间的整数")

...

c

>>> 

运行结果:

2.输入a,b,c,d4个整数,计算a+b-c*d的结果

>>> a=1
>>> b=2
>>> c=3
>>> d=4
>>> print(a+b-c*d)
-9
>>>

如果是通过输数字的代码是

#encoding=utf-8
import sys
a=input("请输入第一个数字a:")
b=input("请输入第二个数字b:")
c=input("请输入第三个数字c:")
d=input("请输入第四个数字d:")

if a and b and c and d:
    result=eval(a)+eval(b)-eval(c)*eval(d)
else:
    print("请输入数字")
    sys.exit()

print("a+b-c*d的结果是",result)

这段代码用了eval()函数,这个函数可以直接把字符串类型的对象转换成整型,来看个例子:

>>> type(eval('-1'))
<class 'int'>
>>> type('-1')
<class 'str'>
>>> type(eval('-1'))
<class 'int'>
>>> eval('-1')
-1

如上面所说,我们只能判断是否输入了内容来避免输入空值带来的错误(a,b,c,d有值时为True,无值时为False),那么如果我们输入字符怎么办呢?我们可以通过字符串的内置函数isdigit()来判断输入的是否是数字,但是这个函数也有个弊端,那就是当我们输入负数时也会被判断为没有输入数字(大概是因为有负号),而本题的题意是允许输入负数的,那应该如何避免输入负数不算作数字呢?我们可以使用异常处理try的方法来避免,代码如下:

#encoding=utf-8
a=input("请输入第一个数字a:")
b=input("请输入第二个数字b:")
c=input("请输入第三个数字c:")
d=input("请输入第四个数字d:")

try:
    a=int(a)
    b=int(b)
    c=int(c)
    d=int(d)
    result=a+b-c*d
    print("a+b-c*d的结果是",result)
except (ValueError,TypeError):
    print("请输入数字")

这里写图片描述

那么我们可以对第一道题进行完善,代码如下:

#encoding=utf-8

while True:
    try:
        number=input("请输入1~127的数字来查看相对应的ACSII码:")
        number=int(number)
        if 1<=number<=127:
            ascii_number=chr(number)
        else:
            print("请输入1~127的正整数")
            continue
        break
    except (TypeError,ValueError):
        print("请输入1~127的正整数")

print("对应的ASCII码是:",ascii_number)

程序运行结果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值