鱼C论坛

 找回密码
 立即注册
查看: 1345|回复: 9

[已解决]sos

[复制链接]
发表于 2019-10-21 19:21:54 | 显示全部楼层 |阅读模式

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

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

x
题目:给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。

示例 1:

输入:[1, 1, 1, 1, 2, 2, 2]
输出:1
示例 2:

输入:[1, 1, 1, 2, 2, 2, 2]
输出:2

我的答案
print("======请输入一个数组======(要带[])")
a=input("请输入:")
for each in a:
    b=a.count(each)
    if (b>(len(a))/2):
        
        print(each)
哪错了??
最佳答案
2019-10-21 19:58:18
a 是字符串,要用 eval 函数转换成 list。

  1. print("======请输入一个数组======(要带[])")
  2. a=input("请输入:")
  3. for each in eval(a):
  4.     b=a.count(each)
  5.     if (b>(len(a))/2):
  6.         
  7.         print(each)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-21 19:30:29 | 显示全部楼层
input函数就算输入里面的内容其格式是一个列表的格式(比如两边是[]中间用逗号隔开),实际输入进去的也只是个字符串并且永远是个字符串,因而后面的for循环自然给不出你想要的结果
想要用input输入列表,我现在的水平能给你的答案是用while循环让用户一直输入,每次输入的内容整理后添加到一个设定好的列表里,输入特定字符跳出while循环输入结束。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-21 19:35:58 | 显示全部楼层
danteer 发表于 2019-10-21 19:30
input函数就算输入里面的内容其格式是一个列表的格式(比如两边是[]中间用逗号隔开),实际输入进去的也只 ...

我太难了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-21 19:58:18 | 显示全部楼层    本楼为最佳答案   
a 是字符串,要用 eval 函数转换成 list。

  1. print("======请输入一个数组======(要带[])")
  2. a=input("请输入:")
  3. for each in eval(a):
  4.     b=a.count(each)
  5.     if (b>(len(a))/2):
  6.         
  7.         print(each)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-21 20:04:23 | 显示全部楼层
zltzlt 发表于 2019-10-21 19:58
a 是字符串,要用 eval 函数转换成 list。

大佬还是强啊,while循环对于用户输入的内容适应性差好多,受教了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-21 21:54:35 | 显示全部楼层
zltzlt 发表于 2019-10-21 19:58
a 是字符串,要用 eval 函数转换成 list。

不对啊,报错啊,那个for each in。。。必须是字符串啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-21 21:55:19 | 显示全部楼层
danteer 发表于 2019-10-21 20:04
大佬还是强啊,while循环对于用户输入的内容适应性差好多,受教了

有问题哦,for each in 后面一定要字符串啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-21 22:02:49 | 显示全部楼层
eval()函数里面的参数是一个字符串写成的表达式,刚好input输入的就是个字符串。你只需要按照列表的格式输入就行了啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-22 08:22:36 | 显示全部楼层
danteer 发表于 2019-10-21 22:02
eval()函数里面的参数是一个字符串写成的表达式,刚好input输入的就是个字符串。你只需要按照列表的格式输 ...

你把代码试一下咯,真的报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-22 09:07:42 | 显示全部楼层
本帖最后由 danteer 于 2019-10-22 09:09 编辑
1394116864 发表于 2019-10-22 08:22
你把代码试一下咯,真的报错

  1. a = eval(input('plz input a number list:'))
  2. for each in set(a):
  3.     b = a.count(each)
  4.     if b > len(a)/2:
  5.         print(each)
复制代码

zltzlt的代码确实有错,b = a.count()这行里的a是没有经过eval()函数的,是个字符串,所以报错了。
没想到他会犯这么低级的错误,没看他写的具体代码,抱歉了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 20:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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