Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
刚开始学习python编程,我的代码中有一部分被卡住了?_Python - Fatal编程技术网

刚开始学习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