注册 登录
编程论坛 Python论坛

这个代码有什么问题吗?为什么逻辑不通?

acd2012 发布于 2020-08-09 15:57, 1667 次点击
import random
a=random.randint(0,10) if a>2 else 100
print(a)

今天刚学了一个关于 if 结构的简洁表达式:
表达式1 if 条件 表达式2

以上代码是生成一个随机数 当这个数大于2的时候输出此数,否则输出100
但实际输出结果总是100,没有其他结果
只有本站会员才能查看附件,请 登录

无论输出多少次,a的值都是100,难道a没有小于或等于2的时候吗?好奇怪

而当把代码中a>2改成a>1时
输出的结果又全是随机数,无论刷新多少次都没有输出100
难道没有a小于等于1的时候吗?
自己给自己证懵了!求大神开导!
6 回复
#2
未了的情缘2020-08-09 19:11
程序代码:
import random

s=random.randint(-100, 100)
if s>2:
    print(s)
else:
    print(100)
#3
apull2020-08-09 23:20
a=random.randint(0,10) if (a>2) else 100
比较a>2的时候,a还没有定义初始化
#4
acd20122020-08-10 01:19
太奇怪了
晚上再试这行代码不行了
只有本站会员才能查看附件,请 登录
#5
acd20122020-08-10 11:06
回复 3楼 apull
好像有点明白好像有不明白
是不是说,a>2是不能先于a=random.randint(0,10)判断?
#6
apull2020-08-10 11:23
a=random.randint(0,10) if a>2 else 100
这条语句可以理解为
if a>2 :
    a=random.randint(0,10)
else :
    a=100

#7
acd20122020-08-10 12:26
回复 6楼 apull
明白了,如果写成这样就没问题了吧
import random
a=random.randint(0,10)
a=random.randint(0,10) if a>2 else 100
print(a)

不过奇怪的是昨天那行代码真能运行
今天早上就不行了
1