所以我和我的朋友已经在我们大学的Python入门课上研究这个问题几天了,但是我们有点卡住了,因为我们在课堂上没有花太多时间在这个主题上。我们的问题是这样的:* “每个产品ID必须为六个字符长,并以三个大写字母开头,后跟三位数字。例如,ABE123和PPL334是有效的产品ID,但ABE1.2和P1L3R4不是。拍卖网站的最低出价为5美元,最高出价为500美元。可以接受美元和美分的出价。例如,6.78是有效的出价。下面的代码从提示符读入bids(键盘输入)并将产品ID和投标价格加载到两个列表产品和投标中。不幸的是,代码不包含输入验证,这是您的工作要完成的。"* 我们的老师给了我们代码,我们只需要验证输入。但它必须在她的代码之外完成,就像在它自己的函数中一样。下面是代码:
`def getbids():
products = []
bids = []
answer = "yes"
while answer == "yes":
productid = input("Enter the productID ")
bid = float(input("Enter the bid for one item "))
products.append(productid)
bids.append(bid)
answer = input("Are there more bids? ")
return products, bids`
基本上,我们的工作是在单独的函数中验证productId和bid。我在这里有我们的代码,但我们的代码并不完全正确。下面是productId的代码:
`def validprod(n):
caps="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
nums="0123456789"
m="Error"
if len(n)!=6:
print("Error, productID must be 6 digits,3 capital letters followed by 3 numbers")
return m
else:
while len(n)==6:
for i in range(3):
if n[i] not in caps or n[i+3] not in nums:
print("Error, productID must be 6 digits,3 capital letters followed by 3 numbers")
return m
else:
return n`
下面是一个出价:
`def validbid(x,y):
bid="Error"
while x=="Error":
return bid
while x!="Error":
if y>500 or y<5:
print("Error, bid must be between 5 and 500(do not include a dollar sign with your bid).")
return bid
else:
return y`
我们知道可能有一个更简单的方法来做到这一点,我们只是不知道它。
2条答案
按热度按时间pvabu6sv1#
注意:我需要修复您的
getbids()
函数,因为没有将产品附加到products
列表中。另注:如果你认为我提供一个完整的解决方案是错误的,* 请让我知道 *。我完全开放的反馈,从公众。
x6492ojm2#