如何在Python中找到包含数字和字符串的列表中的最大数字?

时间:2015-10-29 11:55:09

标签: python arrays list

我有一个包含一个单词和三个不同数字的列表。我想找到一种方法来选择这三个数中最大的一个,但每当我使用max函数时,它会选择该单词。这有什么解决方案吗?

我的部分代码如下:

myList = list()
userName1 = input('What is your name?')
myList.append(userName1)
score1 = input('User 1 score 1')
myList.append(score1)
score2 = input('User 1 score 2')
myList.append(score2)
score3 = input('User 1 score 3')
myList.append(score3)

print(max(myList))

对于这些,我输入了我的名字(Daisy)和三个数字(6,9和4)。我希望max函数会选择9,而是打印Daisy。

2 个答案:

答案 0 :(得分:1)

input()返回一个包含用户输入的字符串。您需要将字符串转换为整数(可以是整数),这样您就可以构建这些数字的新列表并找到该数字的最大值。这是对try...except子句的良好使用:如果您尝试将pass之类的内容转换为数字,则忽略('Daisy')您获得的异常。

In [1]: myList = ['one', 1, 'foo', '4', '5', '2']

In [2]: numbers = []

In [3]: for item in myList:
   ...:     try:
   ...:         numbers.append(int(item))
   ...:     except ValueError:
   ...:         # ignore items which aren't integers
   ...:         pass
   ...:     

In [4]: max(numbers)
Out[4]: 5

当你正在比较字符串值时,即使字符串可以转换为整数(例如'10'是“小于”'9'),也不会给你必要的最大值。

答案 1 :(得分:0)

未经改进的改进整体代码的建议:

CREATE TABLE IF NOT EXISTS `amazon` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `a_upc` varchar(50) DEFAULT NULL,
  `a_sku` varchar(50) DEFAULT NULL,
  `a_title` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Dumping data for table `amazon`
--

INSERT INTO `amazon` (`id`, `a_upc`, `a_sku`, `a_title`) VALUES
(1, 'upc_a', 'sku1', 'title_a'),
(2, 'upc1', 'sku_a', 'title_a_1');

CREATE TABLE IF NOT EXISTS `jet` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `j_upc` varchar(50) DEFAULT NULL,
  `j_sku` varchar(50) DEFAULT NULL,
  `j_title` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Dumping data for table `jet`
--

INSERT INTO `jet` (`id`, `j_upc`, `j_sku`, `j_title`) VALUES
(1, 'upc1', 'sku_j', 'title_j'),
(2, 'upc_j', 'sku_j_1', 'title1');

CREATE TABLE IF NOT EXISTS `ebay` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `e_upc` varchar(50) DEFAULT NULL,
  `e_sku` varchar(50) DEFAULT NULL,
  `e_title` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Dumping data for table `ebay`
--

INSERT INTO `ebay` (`id`, `e_upc`, `e_sku`, `e_title`) VALUES
(1, 'upc_e', 'sku1', 'title_e'),
(2, 'upc1', 'sku_e', 'title_e_1'),
(3, 'upc_e_1', 'sku2', 'title1');


CREATE TABLE IF NOT EXISTS `opencart` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `o_upc` varchar(50) DEFAULT NULL,
  `o_sku` varchar(50) DEFAULT NULL,
  `o_title` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Dumping data for table `opencart`
--

INSERT INTO `opencart` (`id`, `o_upc`, `o_sku`, `o_title`) VALUES
(1, 'upc_a', 'sku1', 'title_o'),
(2, 'upc1', 'sku_o', 'title1');

CREATE TABLE IF NOT EXISTS `sears` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `s_upc` varchar(50) DEFAULT NULL,
  `s_sku` varchar(50) DEFAULT NULL,
  `s_title` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Dumping data for table `sears`
--
INSERT INTO `sears` (`id`, `s_upc`, `s_sku`, `s_title`) VALUES
(1, 'upc1', 'sku_s', 'title_s'),
(2, 'upc_s', 'sku_s_1', 'title_s_1');