马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 萧人也 于 2020-7-29 16:30 编辑
H E L P
题目:
以下是本人写的代码:ageTable='''
诸葛亮, 28
刘备, 48
刘琦, 25
赵云, 32
张飞, 43
关羽, 45
'''
ageTable1=[i.strip() for i in ageTable.splitlines() if i !='']
rather30,less30=[],[]
for i in ageTable1:
j=i.split(',')
if j[1]>='30':
rather30.append(j[0])
else:
less30.append(j[0])
print('大于等于30岁的人有:')
for x in rather30:
print(x)
print('小于30岁的人有:')
for y in less30:
print(y)
疑问:该代码打印出来的结果是没有大于等于30岁的人,只有小于30岁的人(不信可以拷贝代码试试)。究其原因是if j[1]>'30'出了问题。将该处代码改成if int(j[1])>30后可以打印出大于等于30岁的人。
但本人有个疑问,字符串不是也能比较大小吗?为什么一开始j[1]>'30'返回的都是FALSE结果,像'48'>'30'在python里返回的是True类型,为什么这边就成了FALSE。
求各位大神能支支招!!!
本帖最后由 Twilight6 于 2020-7-29 16:48 编辑
字符串比较大小的时候比较的是 ASCII 码值的大小,而且是依次比较
只要比较出一个 ASCII 码值的大小的区别就不在进行比较了
你的代码可以稍微改动下如下
正确代码:ageTable='''
诸葛亮, 28
刘备, 48
刘琦, 25
赵云, 32
张飞, 43
关羽, 45
'''
ageTable1=[i.strip() for i in ageTable.splitlines() if i !='']
ageTable1 = [[i.split(',')[0],int(i.split(',')[1].strip())] for i in ageTable1]
rather30,less30=[],[]
for i in ageTable1:
if i[1]>=30:
rather30.append(i[0])
else:
less30.append(i[0])
print('大于等于30岁的人有:')
for x in rather30:
print(x)
print('小于30岁的人有:')
for y in less30:
print(y)
|