刚开始学习python编程,困在代码的某个部分?

2024-05-14 00:44:29 发布

您现在位置: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 = '0.90'
    Shipping = '8.99'

TotalCost = (ShirtNumber * Discount) * 12.99 + Shipping


print('Your total cost comes out to:$ ', TotalCost)

错误是:

TotalCost = (ShirtNumber * Discount) * 12.99 + Shipping
TypeError: can't multiply sequence by non-int of type 'str'

我刚开始编程,所以我还没有完全理解,这只是我的第一个任务。我复习了笔记,似乎不明白自己做错了什么。你知道吗

该计划是基于订购衬衫与较大的数字是订购折扣。如果您有任何建议,将不胜感激。你知道吗


Tags: toyouinputiforderdiscountmanylike
3条回答

ShirtNumber是一个字符串,不能在两个字符串之间进行数学运算。您可能需要先将其转换为int:

ShirtNumber = int(input('How many shirts would you like to order?'))

类似的,代码中的每个数字都应该是数字,没有引号,比如

if ShirtNumber >= 12:
    Discount = 0.70
    Shipping = 0

问题是您试图在算术中使用字符串。你知道吗

函数input()将返回string类型的值。因此,为了对ShirtNumber进行算术运算,必须将其转换为整数或浮点数。要实现前者,可以使用函数int()。这里的文档:https://docs.python.org/2/library/functions.html#int。你知道吗

所以在你的代码里

ShirtNumber = int(input('How many shirts would you like to order?'))

您不必做,但也可能需要考虑的是,首先验证您收到的输入是否为整数形式。为此,可以使用https://docs.python.org/2/library/stdtypes.html中的函数isdigit()。你知道吗

如果输入的是而不是的整数形式,您可能需要要求用户重新输入他们的答案。为此,可以使用while循环,如下所示:

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

最后一点注意:通常的做法是将变量名的第一个字符设置为小写。这取决于您,但这是最常见的约定(尽管在某些语言中不太常见,如C#)。http://en.wikipedia.org/wiki/Naming_convention_%28programming%29#Letter_case_and_numerals

你把字符串和数字搞混了。你知道吗

根据经验法则,你做的任何数学运算-加、减、除等等-都是一个数字。你知道吗

数字没有引号-discount = 0.8

大多数其他东西都是字符串,即使它们包含数字。例如,电话号码是字符串-你永远不会增加或减少电话号码。你知道吗

字符串如下:phonenumber='095801374'。你知道吗

字符串可以连接在一起(使用“+”符号)-“1”+“2”=“12”。你知道吗

使用input()读取的任何内容都将返回一个字符串(即使您知道它是一个数字)。您可以将字符串转换为数字,只需将其强制转换为:ShirtNumber=int(ShirtNumber)。请注意,如果在询问衬衫数量时,他们键入了five(而不是5),那么您将得到一个异常。你知道吗

相关问题 更多 >