在Python中使用list和if语句将字符串(用户输入)转换为整数

2024-09-30 18:27:00 发布

您现在位置:Python中文网/ 问答频道 /正文

最近我有一个学校的项目,在这个项目中,我需要把一个用户输入作为1-12(代表一年中的月份)和用户年龄之间的整数,然后做一个数学等式来产生一个数字,这个数字将吐出用户的年龄和出生月份(是的,我知道这是多余的,但我必须做数学等式,而不是吐出用户的输入)。我是一个想要100%输入的孩子,他试图让用户通过字符串输入月份,例如(Jan=1)使用列表和if语句。如果语句不改变birthNum变量,那么下面的代码就不会像用户输入东西时那样工作。所以请帮帮我,因为我几乎什么都试过了,什么都不管用,但我觉得好像我就快成功了。你知道吗

下面是将用户输入(字符串)转换为整数的代码:

birthNum = 0

listOfMonths = ["January", "Jan", "january", "jan", "1", "Febuary", "Feb", "febuary", "feb", "2", "March", "Mar", "march", "mar", "3", "April", "Apr", "april", "apr", "4", "May", "may", "5", "June", "Jun", "june", "jun", "6", "July", "Jul", "july", "jul", "7", "August", "Aug", "august", "aug", "8", "September", "Sept", "september", "sept", "9", "October", "Oct", "october", "oct", "10", "November", "Nov", "november", "nov", "11", "December", "Dec", "december", "dec", "12"]

janList = ["January", "Jan", "january", "jan", "1"]

febList = ["Febuary", "Feb", "febuary", "feb", "2"]

marList = ["March", "Mar", "march", "mar", "3"]

aprList = ["April", "Apr", "april", "apr", "4"]

mayList = ["May", "may", "5"]

junList = ["June", "Jun", "june", "jun", "6"]

julList = ["Jul", "july", "jul", "7"]

augList = ["September", "Sept", "september", "sept", "9"]

septList = ["September", "Sept", "september", "sept", "9"]

octList = ["October", "Oct", "october", "oct", "10"]

novList = ["November", "Nov", "november", "nov", "11"]

decList = ["December", "Dec", "december", "dec", "12"]

(birthMonthInput) = input("Please put in your birth month: ")


if (birthMonthInput == (janList)):
    birthNum = int(1)

if (birthMonthInput == (febList)):
    birthNum = int(2)

if (birthMonthInput == (marList)):
    birthNum = int(3)

if (birthMonthInput == (aprList)):
    birthNum = int(4)

if (birthMonthInput == (mayList)):
    birthNum = int(5)

if (birthMonthInput == (junList)):
    birthNum = int(6)

if (birthMonthInput == (julList)):
    birthNum = int(7)

if (birthMonthInput == (augList)):
    birthNum = int(8)

if (birthMonthInput == (septList)):
    birthNum = int(9)

if (birthMonthInput == (octList)):
    birthNum = int(10)

if (birthMonthInput == (novList)):
    birthNum = int(11)

if (birthMonthInput == (decList)):
    birthNum = int(12)

print (birthNum)

Tags: 项目用户if数学整数janint年龄
2条回答

您的条件是检查字符串是否计算为列表。你要找的是in键工作

if birthMonthInput in augList:

也就是说,代码中还有很多其他问题。你知道吗

为此使用列表是非常不好的。您的解决方案需要大约5*12次查找才能获得与字符串关联的值。你知道吗

可以在O(1)中完成这个用例的一种更快的数据结构是dict。 尝试将代码格式化为以下格式:

dic = {
   "Jan": 1,
   "January": 1,
   "Feb": 2 # and so on
}

然后,您只需执行以下操作即可获得解决方案:

birthNum = dict[birthMonthInput]

阅读python data structures了解一个好的概述。词典见第5.5节

相关问题 更多 >