回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>当我运行程序并输入值3,1,1时,将一个杯子转换成汤匙,它使用底部的TOtbsp函数。为了排除故障,我让它在最终结果之前打印出四个变量。这些变量都打印出正确的结果</p>
<pre><code>def TOtbsp ():
os.system('cls')
print ('Convert ' + convFROMconv + ' to: tablespoons')
dictEnt = dCallOne['tbsp']
print (dCallOne['tbsp'])
print (dCallOne)
print (dictEnt)
print (convFactor)
calc = convFactor * dictEnt
print(calc)
</code></pre>
<p>^这是TOtbsp函数,结果是:</p>
<p>将杯子转换为:汤匙</p>
<pre><code>16
{'tbsp': 16, 'tsp': 48, 'quart': 0.25, 'floz': 8.32674, 'pint':0.5,'gal':0.0625, 'ml': 236.588, 'liter': 0.236588}
16
1
1111111111111111
</code></pre>
<p>这些都是正确的,除了最后一个<code>calc</code>。我尝试了几种不同的方法:</p>
<pre><code>calc = convFactor * dictEnt
calc = (convFactor * dictEnt)
calc = (convFactor * dCallOne['tbsp'])
calc = (convFactor * (dCallOne['tbsp'])
(convFactor * dictEnt) = calc
(convFactor * (dCallOne['tbsp']) = calc
convFactor * dictEnt = calc
(convFactor * dCallOne['tbsp']) = calc
</code></pre>
<p>据我所知,所有这些,也许是最下面的四个,应该得到正确的答案,因为<code>convFactor</code>,<code>dictEnt</code>,和<code>dCallOne</code>都得到整数。你知道吗</p>
<p>完整代码如下。你知道吗</p>
<pre><code>import os
tbsp = {'tbsp' : 1 ,
'cup' : 0.0625 ,
'tsp' : 3 ,
'quart' : 0.015625 ,
'floz' : 0.5 ,
'pint' : 0.03125 ,
'gal' : 0.00390625 ,
'ml' : 14.7868 ,
'liter' : 0.0147868}
tsp = {'cup' : 0.0208333 , 'tbsp' : 0.333333 , 'quart' : 0.0052083333 , 'floz' : 0.1666666667 , 'pint' : 0.0104166667, 'gal' : 0.00130208323 , 'ml' : 4.92892 , 'liter' : 0.00492892}
dictcups = cups = {'tbsp' : 16 ,
'tsp' : 48 ,
'quart' : 0.25 ,
'floz' : 8.32674 ,
'pint' : 0.5 ,
'gal' : 0.0625 ,
'ml' : 236.588 ,
'liter' : 0.236588}
quart = {'cup' : 4 , 'tsp' : 192 , 'tbsp' : 64 , 'floz' : 32 , 'pint' : 2 , 'gal' : 0.25 , 'ml' : 946.353 , 'liter' : 0.946353}
floz = {'cup' : 0.125 , 'tsp' : 6 , 'quart' : 0.03125 , 'tbsp' : 2 , 'pint' : 0.0625 , 'gal' : 0.0078125 , 'ml' : 29.5735 , 'liter' : 0.0295735}
pint = {'cup' : 2 , 'tsp' : 96 , 'quart' : 0.5 , 'floz' : 16 , 'tbsp' : 32 , 'gal' : 0.125 , 'ml' : 473.176 , 'liter' : 0.473176}
gal = {'cup' : 16 , 'tsp' : 768 , 'quart' : 4 , 'floz' : 128 , 'pint' : 8 , 'tbsp' : 256 , 'ml' : 3785.41 , 'liter' : 3.78541}
ml = {'cup' : 0.0042267571 , 'tsp' : 0.202884 , 'quart' : 0.00105669 , 'floz' : 0.033814 , 'pint' : 0.00211338 , 'gal' : 0.000264172 , 'tbsp' : 0.067628 , 'liter' : 0.001}
liter = {'cup' : 4.226757063 , 'tsp' : 202.884 , 'quart' : 1.05669 , 'floz' : 33.814 , 'pint' : 2.11338 , 'gal' : 0.264172 , 'ml' : 1000 , 'tbsp' : 67.628}
acceptableInputs = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] #This is used to check if what the user entered is one of the eight acceptable units
def takeUnit1 (): #Figure out what unit the user wants to convert
global convFactor
print ('Unit Converter')
print ('')
print ('')
print ('Select the unit you want to convert FROM')
print ('')
print ('1 Tbsp - Tablespoon')
print ('2 Tsp - Teaspoon')
print ('3 C - Cups')
print ('4 qt. - Quart')
print ('5 fl. oz. - Fluid Ounce')
print ('6 gal. - Gallon')
print ('7 ml - Milliliter')
print ('8 L - Liter')
print ('9 P - Pints')
convFROM = input('Unit: ')
convFactor = input('How many?: ')
if convFROM in acceptableInputs: #Check if input is acceptable
global convFROMconv
global dCallOne
if convFROM == '1':
convFROMconv = 'Tablespoons'
dCallOne = tbsp
takeUnit2() # Run the function to figure out what unit to convert to
elif convFROM == '2':
convFROMconv = 'Teaspoons'
dCallOne = tsp
takeUnit2() # Run the function to figure out what unit to convert to
elif convFROM == '3':
convFROMconv = 'Cups'
dCallOne = dictcups
takeUnit2() # Run the function to figure out what unit to convert to
elif convFROM == '4':
convFROMconv = 'Quarts'
dCallOne = quart
takeUnit2() # Run the function to figure out what unit to convert to
elif convFROM == '5':
convFROMconv = 'Fluid Ounces'
dCallOne = floz
takeUnit2() # Run the function to figure out what unit to convert to
elif convFROM == '6':
convFROMconv = 'Gallons'
dCallOne = gal
takeUnit2() # Run the function to figure out what unit to convert to
elif convFROM == '7':
convFROMconv = 'Milliliters'
dCallOne = ml
takeUnit2() # Run the function to figure out what unit to convert to
elif convFROM == '8':
convFROMconv = 'Liters'
dCallOne = liter
takeUnit2() # Run the function to figure out what unit to convert to
elif convFROM == '9':
convFROMconv = 'Pints'
dCallOne = pint
takeUnit2() # Run the function to figure out what unit to convert to
else:
print ('')
else:
print('That is not an acceptable input, please try again')
def takeUnit2 (): #This function is to figure out what unit the user wants to convert TO
os.system('cls')
print ('Select the unit you want to convert TO')
print ('1 Tbsp - Tablespoon')
print ('2 Tsp - Teaspoon')
print ('3 C - Cups')
print ('4 qt. - Quart')
print ('5 fl. oz. - Fluid Ounce')
print ('6 gal. - Gallon')
print ('7 ml - Milliliter')
print ('8 L - Liter')
print ('9 P - Pints')
convTO = input('Unit: ')
if convTO in acceptableInputs: #Checking if it is one of the 8 accepted units
global convTOname #Making convTOconv global
global TOfunc1
if convTO == '1': #This whole statement converts the input number to its corresponding name
convTOname = 'tbsp'
TOfunc1 = 'TOtbsp'
TOtbsp()
elif convTO == '2':
convTOname = 'tsp'
TOfunc1 = 'TOtsp'
TOtsp()
elif convTO == '3':
convTOname = 'cup'
TOfunc1 = 'TOcups'
TOcup()
elif convTO == '4':
convTOname = 'quart'
TOfunc1 = 'TOquarts'
TOquart()
elif convTO == '5':
convTOname = 'floz'
TOfunc1 = 'TOfloz'
TOfloz()
elif convTO == '6':
convTOname = 'gal'
TOfunc1 = 'TOgal'
TOgal()
elif convTO == '7':
convTOname = 'ml'
TOfunc1 = 'TOml'
TOml()
elif convTO == '8':
convTOname = 'liter'
TOfunc1 = 'TOliters'
TOliter()
elif convTO == '9':
convTOname = 'pint'
TOfunc1 = 'TOpint'
TOpint()
else: #Statement requires an else, not intended to ever be used
print ('')
else:
print('That is not an acceptable input, please try again')
def TOtbsp ():
os.system('cls')
print ('Convert ' + convFROMconv + ' to: tablespoons')
dictEnt = dCallOne['tbsp']
print (dCallOne['tbsp'])
print (dCallOne)
print (dictEnt)
print (convFactor)
calc = convFactor * dictEnt
print(calc)
def TOtsp ():
os.system('cls')
print ('Convert ' + convFROMconv + ' to: teaspoons')
print (dCallOne)
calc = dCallOne['tsp']
print(calc)
def TOcup ():
os.system('cls')
print ('Convert ' + convFROMconv + ' to: cups')
print (dCallOne)
calc = dCallOne['cup']
print(calc)
def TOquart ():
os.system('cls')
print ('Convert ' + convFROMconv + ' to: quarts')
print (dCallOne)
calc = dCallOne['quart']
print(calc)
def TOfloz ():
os.system('cls')
print ('Convert ' + convFROMconv + ' to: fluid ounces')
print (dCallOne)
calc = dCallOne['floz']
print(calc)
def TOml ():
os.system('cls')
print ('Convert ' + convFROMconv + ' to: milliliters')
print (dCallOne)
calc = dCallOne['ml']
print(calc)
def TOgal ():
os.system('cls')
print ('Convert ' + convFROMconv + ' to: gallons')
print (dCallOne)
calc = dCallOne['gal']
print(calc)
def TOpint ():
os.system('cls')
print ('Convert ' + convFROMconv + ' to: pints')
print (dCallOne)
calc = dCallOne['pint']
print(calc)
def TOliter ():
os.system('cls')
print ('Convert ' + convFROMconv + ' to: liters')
print (dCallOne)
calc = dCallOne['liter']
print(calc)
takeUnit1()
</code></pre>