
上QQ阅读APP看书,第一时间看更新
1.8.4 input结果的类型
前面这个输出结果可能不尽如人意,因为它并没有告诉我们1 + 2等于几。这是因为input会将用户的任何输入都原样转换成字符串。1 + 2被转换成“1 + 2”,当然不会计算出什么结果。如果想要计算结果,还得对程序做一些处理。西西船长说着,又创建了另一个程序,保存在C:\Workspace\1.8\in_out.py,代码如下:
#用户输入 x=int(input("hello,我是kiri,请输入一个整数。(按回车键发送): ")) y=int(input("hello,我是kiri,请再输入一个整数。(按回车键发送): ")) print("%d+%d的结果是%d:"%(x,y,x+y))
int()方法的括号把整个input()部分都包含在内,它表示把input()获取到的用户输入转换成整数类型,然后再将这个整数赋值给变量x。同样的,把另一个用户的输入转换成整数,再赋值给y。这样,在print()中的x + y就会计算两个整数的和了。
运行程序,结果如图1-22所示。
需要注意的是,input()的结果是字符串,而字符串并不能转换成所有类型。比如,如果用户不按照提示信息来输入,可能会出现错误。
hello,我是kiri,请输入一个整数。(按回车键发送): 我偏不 Traceback (most recent call last): File "C:\Workspace\1.8\in_out.py", line 2, in <module> x=int(input("hello,我是kiri,请输入一个整数。(按回车键发送): ")) ValueError: invalid literal for int() with base 10: '我偏不'
IDLE会告诉你“我偏不”这个字符串无法被int()转换。
【练一练】
让用户输入一个代表金额的数字,然后将它格式化并输出,要求以“RMB”字符串开头,左对齐,保留2位小数。