1005663861 发表于 2021-10-13 21:02:58

if分支里的赋值不算已经定义了吗

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

1005663861 发表于 2021-10-13 21:08:18

from random import randint

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

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)

逃兵 发表于 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,...]

1005663861 发表于 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

逃兵 发表于 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
页: [1]
查看完整版本: if分支里的赋值不算已经定义了吗