Python 3.3:语法错误无效

时间:2013-04-11 19:33:03

标签: python python-3.x syntax-error

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

# 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)

我感谢你对newb的任何帮助。

2 个答案:

答案 0 :(得分: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() method,结合"""三重字符串来一次格式化文本,格式化小数点后两位小数的浮点值。

示例输出:

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

答案 1 :(得分: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)

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