Python 函数没有返回正确的值
我对函数有问题,也没有返回正确的值。函数根据用户选择返回文件的路径。我已经检查了选项输入,但无论输入什么选项,都只返回一个值Python 函数没有返回正确的值,python,function,python-3.6,filepath,Python,Function,Python 3.6,Filepath,我对函数有问题,也没有返回正确的值。函数根据用户选择返回文件的路径。我已经检查了选项输入,但无论输入什么选项,都只返回一个值 def pick_sql_version(): # might be redundant sql_year = ['2008', '2014', '2016'] for i, val in enumerate(sql_year): print(i + 1, " SQL Server Management Studio ", val)
def pick_sql_version(): # might be redundant
sql_year = ['2008', '2014', '2016']
for i, val in enumerate(sql_year):
print(i + 1, " SQL Server Management Studio ", val)
sql_version = input("Pick the SSMS version: ")
# depending on the sql version path might vary
if sql_version == 1: # SSMS 2008
path = '' # which value to use?
elif sql_version == 2: # SSMS 2014
print (sql_version)
path = '"C:/Program Files (x86)/Microsoft SQL Server/120/Tools/Binn/ManagementStudio/Ssms.exe"'
print (path)
else: # SSMS 2016
print(sql_version)
path = '"C:/Program Files (x86)/Microsoft SQL Server/130/Tools/Binn/ManagementStudio/Ssms.exe"'
print(path)
return path
使用input(“选择SSMS版本:”)
您正在以字符串形式读取输入,这意味着如果您输入1
,您将获得'1'
,如果您输入2
,您将获得'2'
您应该通过检查输入是否为'1'
或'2'
来解决此问题(您也可以将输入转换为int
,正如一些评论中所建议的,但我认为这只会给您带来问题:例如,如果您输入的内容无法转换为int
,则会引发错误):
使用input(“选择SSMS版本:”)
您正在以字符串形式读取输入,这意味着如果您输入1
,您将获得'1'
,如果您输入2
,您将获得'2'
您应该通过检查输入是否为'1'
或'2'
来解决此问题(您也可以将输入转换为int
,正如一些评论中所建议的,但我认为这只会给您带来问题:例如,如果您输入的内容无法转换为int
,则会引发错误):
不得不为你写另一个版本。 使用
字典的强大功能
可以使代码更具可读性
让我们将键“1”
与值“120”
相连,将键“2”
与值“130”
相连。我们使用str.format()
将它们插入到路径中
最后,通过使用dictionary.get()
我们可以传递一个默认值,如果用户输入无效(不是1
或2
),它将使用值120
def pick_sql_version(): # might be redundant
# create an easy list to pick from
sql_year = ['2008', '2014', '2016']
for i, val in enumerate(sql_year, start= 1):
print("{} SQL Server Management Studio {}".format(i, val))
sql_version = input("Pick the SSMS version: ")
# depending on the sql version path might vary
version_d = {
'1': '120',
'2': '130'
}
# If invalid path is chosen fall back to default (120)
t='C:/Program Files (x86)/Microsoft SQL Server/{}/Tools/Binn/ManagementStudio/Ssms.exe'
path = t.format(version_d.get(sql_version, '120'))
return path
不得不为你写另一个版本。 使用
字典的强大功能
可以使代码更具可读性
让我们将键“1”
与值“120”
相连,将键“2”
与值“130”
相连。我们使用str.format()
将它们插入到路径中
最后,通过使用dictionary.get()
我们可以传递一个默认值,如果用户输入无效(不是1
或2
),它将使用值120
def pick_sql_version(): # might be redundant
# create an easy list to pick from
sql_year = ['2008', '2014', '2016']
for i, val in enumerate(sql_year, start= 1):
print("{} SQL Server Management Studio {}".format(i, val))
sql_version = input("Pick the SSMS version: ")
# depending on the sql version path might vary
version_d = {
'1': '120',
'2': '130'
}
# If invalid path is chosen fall back to default (120)
t='C:/Program Files (x86)/Microsoft SQL Server/{}/Tools/Binn/ManagementStudio/Ssms.exe'
path = t.format(version_d.get(sql_version, '120'))
return path
可能重复使用
int(sql_版本)==1
等。输入被读取为字符串。不要使用int
;这里没有使用整数的任何属性,所以只需比较字符串即可<代码>如果sql\u版本==“1”:,等等@chepner谢谢,我犯了一个愚蠢的错误。可能重复使用int(sql\u版本)==1
等等。输入被读取为字符串。不要使用int
;这里没有使用整数的任何属性,所以只需比较字符串即可<代码>如果sql_version==“1”:,等等@chepner谢谢,我犯了个愚蠢的错误。是的,我已经解决了。这是我的疏忽。谢谢。1个映射到2008年,2个映射到2014年,等等,这并不是很直观。你可能想与“2008”、“2014”等进行比较。@BrianHowell这些输入来自一个事先打印的菜单;它并不一定是直观的,因为标签是显式显示的。@chepner哦,是的,我错过了菜单。这样一来,使用我建议的方法可能就不那么直观了。是的,我已经解决了。这是我的疏忽。谢谢。1个映射到2008年,2个映射到2014年,等等,这并不是很直观。你可能想与“2008”、“2014”等进行比较。@BrianHowell这些输入来自一个事先打印的菜单;它并不一定是直观的,因为标签是显式显示的。@chepner哦,是的,我错过了菜单。因此,使用我建议的方法可能不那么直观。谢谢,我将查看词典。只是一个小问题:为什么路径中有反斜杠?@YuryStanev,因为format()的路径太长了。限制为80个标志比较容易。我翻拍的是slighlty。也许这更清楚。谢谢,我会查字典。只是一个小问题:为什么路径中有反斜杠?@YuryStanev,因为format()的路径太长了。限制为80个标志比较容易。我翻拍的是slighlty。也许这更清楚。