0

我很困惑为什么我在这个程序中得到一个无效的语法错误。我想这很简单,但我对此很陌生。这是整个事情:

# Welcome Message
print ("Hello and welcome to the Plesha EasyTube Wizard!")
print ("Today we will be gathering measurements from you to determine the \
materials and cost of your tubes.")
print ("All measurements should be in centimeters!")
print ()

# Collect user inputs
height = float(input("Let's begin: What is the height of you desired tube? "))
radius = float(input("And what is the radius? "))
count = int(input("How many would you like? "))

# Set Constants
steelPrice = 0.14
rubberPrice = 0.02

# Calculations
import math
singleTubeVol = math.pi * (radius ** 2) * height
allTubeVol = singleTubeVol * count
singleTubeSurface = (2 * math.pi * (radius ** 2)) + (2 * math.pi * radius * height)
allTubeSurface = singleTubeSurface * count
singleTubeRubber = 2 * math.pi * (radius + 0.5) * height
allTubeRubber = singleTubeRubber * count
steelCost = steelPrice * allTubeSurface
rubberCost = rubberPrice * allTubeRubber
totalCost = rubberCost + steelCost

# Output
                                                      V------ here is where the problem is
print ("You wanted ", count " tubes in the dimesions ", height \
   " centimeters by ", radius " centimeters (radius).")
print ("The volume of a single tube of your specifications is: ", singleTubeVol)
print ("The total volume of your tube order will be ", allTubeVol)
print ("You will require ", allTubeSurface " square centimeters of steel. Totalling "\
   , steelCost "in price." )
print ("You will require ", allTubeRubber " square centimeters of rubber. Totalling "\
   , rubberCost " in price." )
print ("Your total cost for this order will be ", totalCost)

我感谢任何对新手的帮助。

4

2 回答 2

4

您忘记了几个逗号:

print ("You wanted ", count, " tubes in the dimesions ", height,
#                     -----^                              -----^

以及下一行的更多内容:

   " centimeters by ", radius, " centimeters (radius).")
#                       -----^
print ("The volume of a single tube of your specifications is: ", singleTubeVol)
print ("The total volume of your tube order will be ", allTubeVol)
print ("You will require ", allTubeSurface, " square centimeters of steel. Totalling "
#                                    -----^
   , steelCost, "in price." )
#        -----^
print ("You will require ", allTubeRubber, " square centimeters of rubber. Totalling "
#                                   -----^
   , rubberCost, " in price." )
#         -----^

如果您使用格式,我会更好:

print("""\
You wanted {count} tubes in the dimesions {height:0.2f} centimeters by {radius:0.2f} centimeters (radius).
The volume of a single tube of your specifications is: {singleTubeVol:0.2f}
The total volume of your tube order will be {allTubeVol:0.2f}
You will require {allTubeSurface:0.2f} square centimeters of steel. Totalling {steelCost:0.2f} in price.
You will require {allTubeRubber:0.2f} square centimeters of rubber. Totalling {rubberCost:0.2f} in price.
Your total cost for this order will be {totalCost:0.2f}""".format(**locals()))

这使用str.format()方法,结合"""三重引号字符串一次性格式化文本,用小数点后两位小数格式化浮点值。

样本输出:

Hello and welcome to the Plesha EasyTube Wizard!
Today we will be gathering measurements from you to determine the materials and cost of your tubes.
All measurements should be in centimeters!

Let's begin: What is the height of you desired tube? 10
And what is the radius? 2.5
How many would you like? 3
You wanted 3 tubes in the dimesions 10.00 centimeters by 2.50 centimeters (radius).
The volume of a single tube of your specifications is: 196.35
The total volume of your tube order will be 589.05
You will require 589.05 square centimeters of steel. Totalling 82.47 in price.
You will require 565.49 square centimeters of rubber. Totalling 11.31 in price.
Your total cost for this order will be 93.78
于 2013-04-11T19:34:36.347 回答
0

您使用的引用可能很棘手,因此您最好尝试格式化打印参数,这样的事情会有所改进:

 # Output ------ here is where the problem is
print ("You wanted %d tubes in the dimesions %d centimeters by %d centimeters (%d)." %(count, height, radius, radius))
print ("The volume of a single tube of your specifications is: ", singleTubeVol)
print ("The total volume of your tube order will be ", allTubeVol)
print ("You will require %d square centimeters of steel. Totalling %d in price." %(allTubeSurface, steelCost))
print ("You will require %d square centimeters of rubber. Totalling %d in price." %(allTubeRubber, rubberCost) )
print ("Your total cost for this order will be ", totalCost)

我仍然确信有一个更好的解决方案。

于 2013-04-11T19:55:43.467 回答