鱼C论坛

 找回密码
 立即注册
查看: 3344|回复: 7

python判断奇偶数,我写的这一段代码的结果为什么都是奇数

[复制链接]
发表于 2019-12-2 20:04:43 | 显示全部楼层 |阅读模式

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

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

x
stmp = input('请输入一个整数:')
m = int(stmp)
n = m/2
p = str(n)
if p[-1] != 0:
    print('奇数')
else:
    print('偶数')

思路:用户输入的数字/2,判断余数是否为0,用str先转换为字符串,再取最后一个字符进行判断。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-12-2 20:16:10 | 显示全部楼层
本帖最后由 jackz007 于 2019-12-2 20:27 编辑
  1. p = str(n)      # 把一个浮点数转化成字符串赋值给 p
  2. if p[-1] != 0:  # p 是字符串,p[-1] 是其最后一个字符,如何会等于一个整型数,难道 p[-1] 不为 '0' 就是奇数,什么道理?
复制代码


        判断奇偶数不用那么麻烦,有更加专业的方法:
  1. m = int(input('请输入一个整数:'))
  2. if m % 2 :
  3.     print('奇数')
  4. else:
  5.     print('偶数')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-2 20:40:00 | 显示全部楼层
如果 p 的最后一位不为 0 则这个数为奇数?这显然不对。判断奇数只要这么几行代码就足够了。
  1. stmp = int(input('请输入一个整数:'))
  2. if stmp % 2 == 1:    # 或者这样写:if stmp % 2:
  3.     print(stmp, "是奇数!")
  4. else:
  5.     print(stmp, "不是奇数!")
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-2 21:11:54 | 显示全部楼层
不说你判断方法怎么样,只说为什么永远输出 奇数
  1. stmp = input('请输入一个整数:')
  2. m = int(stmp)
  3. n = m/2
  4. p = str(n)

  5. # 你定义p是字符串,你的判断条件0也要加引号代表字符0,要不然永远都是不等于
  6. if p[-1] != '0':
  7.     print('奇数')
  8. else:
  9.     print('偶数')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-2 21:50:15 | 显示全部楼层
因为p是字符串,不可能等于一个数字
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-3 22:08:30 | 显示全部楼层
嗯?

                               
登录/注册后可看大图
你这哪里来的余数的事情?哪句代码沾了余数?
从你的代码看,你是要让一个字符的值(Ascil码)大于数字 0 ,但是呢,只要这个字符它不是空的,那么值必然大于0,也就不可能为 0 了,自然输入什么都会给判断为奇数。
再一个,字符跟数字作比较,类型都不同,你要它怎么相等?

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-3 22:21:18 | 显示全部楼层
zltzlt 发表于 2019-12-2 20:40
如果 p 的最后一位不为 0 则这个数为奇数?这显然不对。判断奇数只要这么几行代码就足够了。

版主大大,他这个思路好像还真没啥毛病。
奇数:
  1. >>> for i in [2*x+1 for x in range(10)]:
  2.         print(r'%d / 2 = %s'%(i,str(i/2)))

  3.         
  4. 1 / 2 = 0.5
  5. 3 / 2 = 1.5
  6. 5 / 2 = 2.5
  7. 7 / 2 = 3.5
  8. 9 / 2 = 4.5
  9. 11 / 2 = 5.5
  10. 13 / 2 = 6.5
  11. 15 / 2 = 7.5
  12. 17 / 2 = 8.5
  13. 19 / 2 = 9.5
  14. >>>
复制代码

偶数:
  1. >>> for i in [2*x for x in range(10)]:
  2.         print(r'%d / 2 = %s'%(i,str(i/2)))

  3.         
  4. 0 / 2 = 0.0
  5. 2 / 2 = 1.0
  6. 4 / 2 = 2.0
  7. 6 / 2 = 3.0
  8. 8 / 2 = 4.0
  9. 10 / 2 = 5.0
  10. 12 / 2 = 6.0
  11. 14 / 2 = 7.0
  12. 16 / 2 = 8.0
  13. 18 / 2 = 9.0
  14. >>>
复制代码




                               
登录/注册后可看大图
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-21 03:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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