鱼C论坛

 找回密码
 立即注册
查看: 1774|回复: 4

[已解决]if分支里的赋值不算已经定义了吗

[复制链接]
发表于 2021-10-13 21:02:58 | 显示全部楼层 |阅读模式

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

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

x
from random import randint

value = 37
#value = randint(0,37)
color = ''
num = ''
a = 0

if value == 1 or 3 or 5 or 7 or 9 or 12 or 14 or 16 or 18 or 19 or 21 or 23 or 25 or 27 or 30 or 32 or 34 or 36:
    color = 'Red'
elif value == 0 or value == 37:
    a = 1
else:
    color = 'Black'

if value % 2 == 0:
    num = 'Even'
else:
    num = 'Odd'

if value >= 1 and value <= 18:
    region = '1 to 18'
else:
    region = '19 to 36'

if a == 1:
    if value == 0:
        print('Pay 0')
    else:
        print('Pay 00')
else:
    print('The spin resulted in %i...' %value)
    print('Pay', value)
    print('Pay', color)
    print('Pay', num)
    print('Pay', region)

这里的a在第一个分支内已经定义了,为什么当随机数是37的时候程序不运行第一个if里面的elif呢,永远显示color = red,a = 0
最佳答案
2021-10-13 21:14:51
1005663861 发表于 2021-10-13 21:12
为什么每次判断都为true

每个or都是独立的
bool类型,0为假,非0为真
if value == 1 or 3:
value == 1 或者实数 3
这里实数3 本身代表的含义是bool(3),即为True,返回为True
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-10-13 21:08:18 | 显示全部楼层
  1. from random import randint

  2. value = 37
  3. #value = randint(0,37)
  4. color = ''
  5. num = ''

  6. if value == 1 or 3 or 5 or 7 or 9 or 12 or 14 or 16 or 18 or 19 or 21 or 23 or 25 or 27 or 30 or 32 or 34 or 36:
  7.     color = 'Red'
  8. elif value == 0 or value == 37:
  9.     a = 1
  10. else:
  11.     color = 'Black'

  12. if value % 2 == 0:
  13.     num = 'Even'
  14. else:
  15.     num = 'Odd'

  16. if value >= 1 and value <= 18:
  17.     region = '1 to 18'
  18. else:
  19.     region = '19 to 36'

  20. if a == 1:
  21.     if value == 0:
  22.         print('Pay 0')
  23.     else:
  24.         print('Pay 00')
  25. else:
  26.     print('The spin resulted in %i...' %value)
  27.     print('Pay', value)
  28.     print('Pay', color)
  29.     print('Pay', num)
  30.     print('Pay', region)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-13 21:08:22 | 显示全部楼层
if value == 1 or 3 or 5 or 7 or 9 or 12 or 14 or 16 or 18 or 19 or 21 or 23 or 25 or 27 or 30 or 32 or 34 or 36:
次判定永远为True
每个or都是独立的判断

修改为if value == 1 or value == 3 or value == 5 ....
或者修改为if value in[ 1,3,5,7,9,...]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-13 21:12:09 | 显示全部楼层
逃兵 发表于 2021-10-13 21:08
if value == 1 or 3 or 5 or 7 or 9 or 12 or 14 or 16 or 18 or 19 or 21 or 23 or 25 or 27 or 30 or 32  ...

为什么每次判断都为true
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-13 21:14:51 | 显示全部楼层    本楼为最佳答案   
1005663861 发表于 2021-10-13 21:12
为什么每次判断都为true

每个or都是独立的
bool类型,0为假,非0为真
if value == 1 or 3:
value == 1 或者实数 3
这里实数3 本身代表的含义是bool(3),即为True,返回为True
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-15 11:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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