鱼C论坛

 找回密码
 立即注册
查看: 3458|回复: 9

[已解决]大佬们,为什么这个运行不了啊

[复制链接]
发表于 2023-1-26 00:53:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
answer = input("请输入数字:")


if answer - int(answer) < 0.5:
    result = int(answer)
else:
    result = int(answer) + 1

print(result)
最佳答案
2023-1-26 17:15:57
本帖最后由 柿子饼同学 于 2023-1-26 17:19 编辑
Hitohito1225 发表于 2023-1-26 16:39
哦哦,还有这样为什么也不行啊
answer = input("请输入数字:")


int 无法转换 类似'3.44' '8.0' 这种用 str 类型表示的小数
你可以先将它转换成小数再转换为整数 :
print(int(float('9.43')))
注意到你想实现四舍五入的功能 , 实际上只需要这样 :
number = float(input('Input : '))

print(int(number + 0.5))
原理是 , 一个小数如果小数部分小于 0.5 , 那么再加 0.5 整数部分也不会改变
而 小数大于 0.5 的 加上 0.5 之后整数部分会加 1
然后因为 int() 对小数采取直接截断小数部分的方法 , 所以小于 0.5 的就保持不变 , 大于 0.5 的就变为五入的形式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-26 01:28:12 From FishC Mobile | 显示全部楼层
本帖最后由 chinajz 于 2023-1-26 08:18 编辑

把首行改成:
answer=eval( input("请输入数字:"))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-1-26 09:57:35 | 显示全部楼层
input 返回的是一个字符串,需要用 float 函数将其转化成小数,所以,要将第一行改成
answer = float(input("请输入数字:"))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-1-26 14:36:26 | 显示全部楼层
answer = float(input("请输入数字:"))

if answer - answer < 0.5:
    result = answer
else:
    result = answer + 1

print(result)
因为input函数返回的是一个字符串,所以要转换成浮点形
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2023-1-26 15:38:36 | 显示全部楼层
元豪 发表于 2023-1-26 14:36
因为input函数返回的是一个字符串,所以要转换成浮点形

那为什么这个就能运行啊

temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")

if temp == 8:
    print("你是小甲鱼心里的蛔虫吗?!")
    print("哼,猜中了也没有奖励!")
else:
    print("猜错啦,小甲鱼现在心里想的是8!")

print("游戏结束,不玩啦^_^")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-26 15:44:15 | 显示全部楼层
Hitohito1225 发表于 2023-1-26 15:38
那为什么这个就能运行啊

temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")

这里你即使输入 8 也会说你猜错了 , 因为 input 函数返回值为 str 类型
你输入的 8 实际上是 '8'
而 '8' 不等于 8 , 所以只会运行 else 下的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-1-26 16:26:03 | 显示全部楼层
Hitohito1225 发表于 2023-1-26 15:38
那为什么这个就能运行啊

temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
temp = int(input("不妨猜一下小甲鱼现在心里想的是哪个数字:"))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2023-1-26 16:39:56 | 显示全部楼层
柿子饼同学 发表于 2023-1-26 15:44
这里你即使输入 8 也会说你猜错了 , 因为 input 函数返回值为 str 类型
你输入的 8 实际上是 '8'
而 '8 ...

哦哦,还有这样为什么也不行啊
answer = input("请输入数字:")

if float(answer) - int(answer) < 0.5:
    result = int(answer)
else:
    result = int(answer) + 1

print(result)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-26 17:10:39 | 显示全部楼层
Hitohito1225 发表于 2023-1-26 16:39
哦哦,还有这样为什么也不行啊
answer = input("请输入数字:")

代码中的int(answer)要改成int(float(answer)),因为int是无法处理带有小数点的字符串的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-1-26 17:15:57 | 显示全部楼层    本楼为最佳答案   
本帖最后由 柿子饼同学 于 2023-1-26 17:19 编辑
Hitohito1225 发表于 2023-1-26 16:39
哦哦,还有这样为什么也不行啊
answer = input("请输入数字:")


int 无法转换 类似'3.44' '8.0' 这种用 str 类型表示的小数
你可以先将它转换成小数再转换为整数 :
print(int(float('9.43')))
注意到你想实现四舍五入的功能 , 实际上只需要这样 :
number = float(input('Input : '))

print(int(number + 0.5))
原理是 , 一个小数如果小数部分小于 0.5 , 那么再加 0.5 整数部分也不会改变
而 小数大于 0.5 的 加上 0.5 之后整数部分会加 1
然后因为 int() 对小数采取直接截断小数部分的方法 , 所以小于 0.5 的就保持不变 , 大于 0.5 的就变为五入的形式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-16 08:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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