刚开始学习python编程,我的代码中有一部分被卡住了?
错误是:刚开始学习python编程,我的代码中有一部分被卡住了?,python,Python,错误是: ShirtNumber = input('How many shirts would you like to order?') if ShirtNumber >= '12': Discount = '0.70' Shipping = '0' elif ShirtNumber >= '6': Discount = '0.80' Shipping = '8.99' elif ShirtNumber >= '3': Discount
ShirtNumber = input('How many shirts would you like to order?')
if ShirtNumber >= '12':
Discount = '0.70'
Shipping = '0'
elif ShirtNumber >= '6':
Discount = '0.80'
Shipping = '8.99'
elif ShirtNumber >= '3':
Discount = '0.90'
Shipping = '8.99'
TotalCost = (ShirtNumber * Discount) * 12.99 + Shipping
print('Your total cost comes out to:$ ', TotalCost)
我刚开始编程,所以我还没有完全理解,这只是我的第一个任务。我复习了笔记,似乎不明白自己做错了什么
该计划以订购数量较大的衬衫为基础,并提供折扣。如果您有任何建议,我们将不胜感激。ShirtNumber是一个字符串,您不能在两个字符串之间进行数学运算。您可能需要先将其转换为int:
TotalCost = (ShirtNumber * Discount) * 12.99 + Shipping
TypeError: can't multiply sequence by non-int of type 'str'
类似地,代码中的每个数字都应该是数字,没有引号,如
ShirtNumber = int(input('How many shirts would you like to order?'))
您正在混淆字符串和数字 根据经验,你在数学上做的任何事情——加、减、除等——都是一个数字 数字没有引号-
折扣=0.8
大多数其他东西都是字符串,即使它们包含数字。例如,电话号码是字符串-您永远不会添加或减去电话号码
字符串如下所示:phonenumber='095801374'
字符串可以连接在一起(使用“+”符号)-“1”+“2”=“12”
使用input()读取的任何内容都将返回一个字符串(即使您知道它是一个数字)。您可以通过强制转换字符串将其转换为数字,如下所示:
ShirtNumber=int(ShirtNumber)
。请注意,如果在询问衬衫数量时,他们键入了5
(而不是5
),则您将得到一个例外。问题是您试图在算术中使用字符串
函数input()
将返回字符串类型的值。因此,为了对ShirtNumber
进行算术运算,必须将其转换为整数或浮点数。要执行前者,请使用函数int()
。此处的文档:
因此,在您的代码中,您可以
if ShirtNumber >= 12:
Discount = 0.70
Shipping = 0
您不必做,但可能也想考虑的是,首先验证您收到的输入是否为整数形式。为此,您可以使用位于的函数isdigit()
如果输入不是整数形式,您可能希望要求用户重新输入答案。为此,可以使用while循环,如下所示:
ShirtNumber = int(input('How many shirts would you like to order?'))
最后一点注意:通常的做法是将变量名的第一个字符设置为小写。这取决于您,但这是最常见的约定(尽管在某些语言中不太常见,如C#) 许多答案都说输入返回字符串。这不一定是真的 input接受来自用户的数据并尝试对其进行评估。原始输入返回“str” 你的问题是你的折扣变量。那个是“str” 折扣='0.70' 折扣=0.7将是浮动的,然后你可以乘以你的衬衫号码和折扣
answerFound = false
badAnswerGiven = false
while not(answerFound):
if badAnswerGiven:
print('The number of shirts must be an integer. E.g. 6. ')
ShirtNumber = input('How many shirts would you like to order?')
if isdigit(ShirtNumber):
ShirtNumber = int(ShirtNumber)
answerFound = true
else:
badAnswerGiven = true
# rest of the program follows
您可以使用type函数在解释器中检查变量的类型:
input([prompt])
Equivalent to eval(raw_input(prompt)).
在您将代码输入到解释器后,请尝试这样做
如果用户按字面输入,输入将返回字符串
type(Discount)
type(ShirtNumber)
但是如果他们进来
'1'
它将返回“int”另外再看看您的逻辑,并尝试分析如果我尝试订购零件、一件或两件衬衫会发生什么。一些随机的提示、变量和函数名称应该在_scored下,而不是
CamelCased
。只有类应该是CamelCased
。我怀疑OP使用的是Python 3,其中raw\u input()
已重命名为input()
,并且没有raw\u input()
函数。看见
1