不戴帽子的提莫 发表于 2020-10-11 22:34:06

零基础学习python

零基础学习python

002课后作业动动手第一题:
编写程序:calc.py 要求用户输入1到100之间数字并判断,输入符合要求打印“你妹好漂亮”,不符合要求则打印“你大爷好丑”

代码如下:
number=input("请输入1到100之间的数字:")
number1=int(number)
if 1<=number1<=100:
    print("你妹好漂亮")
else:
    print("你大爷好丑")

输入答案为整数时,代码运行没有问题,但是输入数字为小数就会报错。
想知道如何才能修正?即便输入小数代码也可以正常运行

昨非 发表于 2020-10-11 22:38:12

number=input("请输入1到100之间的数字:")
number1=float(number)#改成float型就好了
if 1<=number1<=100:
    print("你妹好漂亮")
else:
    print("你大爷好丑")

linke.zhanghu 发表于 2020-10-11 23:03:43

因为input() 接收到的都是字符串也就是str
如果是整数的话就是
'1''2''12456'这样的字符串.请注意是字符串
这样的字符串转换成int当然没问题.
但是当输入小数的时候就是
'1.5'   类似的是不能直接转换成int的

可以改成
number=input("请输入1到100之间的数字:")
number1=int(float(number))
if 1<=number1<=100:
    print("你妹好漂亮")
else:
    print("你大爷好丑")

既然小数的字符串不能直接转成int,那么就把字符串小数直接转成小数,然后再把小数转成整数就行了.

昨非 发表于 2020-10-11 23:34:43

linke.zhanghu 发表于 2020-10-11 23:03
因为input() 接收到的都是字符串也就是str
如果是整数的话就是
'1''2''12456'这样的字符串.请注意 ...

没必要转成int了吧

sunrise085 发表于 2020-10-12 09:53:59

之所以出错,是因为你对int和input这两个方法可能有误解
input方法返回值是字符串str类型。
int只能将其他类型数字(float等)或者纯数字字符串(只含有0~9,第一位可以是正/负号)转为int类型数字
你输入小数的话,得到的字符串中有小数点,所以不能用int转为整形int类型数字
int(3.5)#将folat类型数字转为int类型数字,得到3
int("30")#将纯数字字符串转为int类型数字,得到30
int("3.1")#将含有其他字符(.)的字符串转为int类型数字,出错

xubuhao123 发表于 2020-10-12 10:05:27

linke.zhanghu 发表于 2020-10-11 23:03
因为input() 接收到的都是字符串也就是str
如果是整数的话就是
'1''2''12456'这样的字符串.请注意 ...

输入100.x?

昨非 发表于 2020-10-12 11:40:57

xubuhao123 发表于 2020-10-12 10:05
输入100.x?

一百点几强制取整就会出现范围错误

laoyang123 发表于 2020-10-12 14:22:50

int()为整型数据

帅到满街追着砍 发表于 2020-10-12 22:16:05

可以试着用%d强制转化?
页: [1]
查看完整版本: 零基础学习python