我有一个包含一个单词和三个不同数字的列表。我想找到一种方法来选择这三个数中最大的一个,但每当我使用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。
答案 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');