Class 使用用户输入调用类
我对Python和编程非常陌生。我试图创建一个小程序,告诉你NFL球队的四分卫。我让它工作了,但我想看看是否有一种重复性更少的方法,原因有两个:Class 使用用户输入调用类,class,python-3.x,methods,Class,Python 3.x,Methods,我对Python和编程非常陌生。我试图创建一个小程序,告诉你NFL球队的四分卫。我让它工作了,但我想看看是否有一种重复性更少的方法,原因有两个: 这样我就不用打字了,而且 因为这样可以缩短我的代码 我试着让用户输入插件到类调用中,这样我就不必输入那么多并使用大量的elif命令,例如: x= input("")` print (x.qb,x.num) 这是我到目前为止所拥有的。现在可以了,但我想用一种更简单的方法来完成: class football: def __init__(se
- 这样我就不用打字了,而且
- 因为这样可以缩短我的代码
elif
命令,例如:
x= input("")`
print (x.qb,x.num)
这是我到目前为止所拥有的。现在可以了,但我想用一种更简单的方法来完成:
class football:
def __init__(self,qb,num):
self.qb = qb
self.num = num
Niners = football("Gabbert", "02" )
Bears = football("CUTLER, JAY","06")
Bengals = football ("Dalton, Andy","14")
Bills =football (" Taylor, Tyrod", "05")
Broncos =football ("Sanchez, Mark", "06")
Browns =football ("MCCOWN, JOSH", "13")
Bucaneers =football ("Winston, Jameis", "03")
Cardinals =football ("PALMER, CARSON", "03")
Chargers =football ("RIVERS, PHILIP", "17")
Cheifs =football ("SMITH, ALEX", '11')
Colts =football ("Luck, Andrew",' 12' )
Cowboys =football ("Romo,Tony","09")
Dolphins =football ("Tannehill, Ryan", '17' )
Eagles =football ("Bradford, Sam", '07')
Falcons =football ("RYAN, MATT",' 02' )
Giants =football ("MANNING, ELI", '10' )
Jaguars =football ("Bortles, Blake", '05')
Jets =football ("Smith, Geno",' 07' )
Lions =football ("Stafford, Matthew", '09' )
Packers =football ("RODGERS, AARON", '12')
Panthers =football ("Newton, Cam",' 01' )
Patriots =football ("BRADY, TOM", '12')
Raiders =football ("Carr, Derek",' 04')
Rams =football ("Foles, Nick", '05')
Ravens =football ("FLACCO, JOE",' 05')
Redskins =football ("Cousins, Kirk", '08')
Saints =football ("BREES, DREW",' 09' )
Seahawks =football ("Wilson, Russell", '03')
Steelers =football ("ROETHLISBERGER, BEN",' 07')
Texans =football ("Osweiler, Brock", '17')
Titans =football ("Mariota, Marcus",' 08' )
Vikings=football ("Bridgewater, Teddy", '05' )
def decor(func):
def wrap():
print("===============================")
func()
print("===============================")
return wrap
def print_text():
print("Who\s your NFL Quarterback? ")
decorated = decor(print_text)
decorated()
team= input(" Enter your teams name here:").lower()
if team == "cowboys":
print (Cowboys.qb,Cowboys.num)
elif team == "niners":
print (Niners.qb,Niners.num)
一个好的选择是使用字典来引用
足球的每个实例,这将避免在末尾出现大量if
,elif
结构:
class football:
def __init__(self,qb,num):
self.qb = qb
self.num = num
def __str__(self):
return self.qb + ", " + self.num
teams = {
"Niners" : football("Gabbert", "02" ),
"Bears" : football("CUTLER, JAY","06"),
"Bengals" : football ("Dalton, Andy","14"),
"Bills" : football (" Taylor, Tyrod", "05")} #etc
#I didn't include the whole dictionary for brevity's sake
def decor(func):
def wrap():
print("===============================")
func()
print("===============================")
return wrap
def print_text():
print("Who\s your NFL Quarterback? ")
decorated = decor(print_text)
decorated()
team = input("Enter your teams name here:").capitalize()
print(teams[team])
您将注意到,这些球队现在位于一个字典中,因此可以通过使用球队名称索引字典来轻松访问每个球队的football
实例。这是在最后一行执行的语句print(teams[team])
team[team]
返回与存储在team
中的密钥相关联的值。例如,如果用户输入Chiefs
,字符串'Chiefs'
将存储在团队中。然后,当您尝试使用teams[team]
为词典编制索引时,它将访问'Chiefs'
的词典条目
但是请注意,从teams[team]
返回的是football
对象。通常,当你只是打印一个对象时,它会打印一些看起来有点像正在发生的事情的东西,因为它只是简单地打印一些关于对象的原始信息。让它返回您希望它返回的方法是在类中定义一个\uuu repr\uuu
或\uu str\uuu
方法(有关该方法的更多信息)。这正是我在football
类中所做的,因此当打印类的实例时,它将以所需的格式打印所需的信息
另一种方法是完全取消该类,只需使用一个字典,其值是元组,其中包含四分卫的名称及其数字作为元素。代码看起来有点像这样:
teams = {
"Niners" : ("Gabbert", "02" ),
"Bears" : ("CUTLER, JAY","06"),
"Bengals" : ("Dalton, Andy","14"),
"Bills" : (" Taylor, Tyrod", "05")} #etc
# Again, not including the whole dictionary for brevity's sake
def decor(func):
def wrap():
print("===============================")
func()
print("===============================")
return wrap
def print_text():
print("Who\s your NFL Quarterback? ")
decorated = decor(print_text)
decorated()
team = input("Enter your teams name here:").capitalize()
print(teams[team][0], teams[team][1])
这次teams[team]
是一个元组。最后一行是打印第一个元素(四分卫的名字),然后是第二个元素(数字)
第二个更干净,需要更少的代码,但这确实是个人偏好的问题
中有更多关于词典的信息
此外,为了简洁起见,我缩短了代码示例,但是您可以在上看到完整的代码示例 我认为字典是一种更合适的数据结构。好的,我会仔细阅读我说的那些对所有这些都很陌生的东西。事实上,这是我制作的第一个小程序。我想这个问题会更适合哦,哇,非常感谢Xamuel Schulman,我真的很感激它,而且信息非常丰富。我在读这篇文章之前开始做第二个,但没有意识到我可以把它们放在()中,尽管它们必须放在[]中再次感谢您,这绝对是我一直在寻找的。是的,我是这个网站/应用程序的新用户,我是否可以通过查看left@JesseHinojosa对非常感谢你。