Python编码-自动售货机-如何让用户只输入某些硬币?

Python编码-自动售货机-如何让用户只输入某些硬币?,python,Python,我正在对python进行受控评估。其中一项任务是根据特定标准创建自动售货机。我是一条非常糟糕的蟒蛇,我可能是一个白痴,而且做得不对 我希望用户只输入10,20,50,1.00个硬币。如果用户输入的不是这些硬币,我希望它打印“机器不接受这些硬币” 这就是我到目前为止所做的: inp = input("Enter Coins, Note: Machine only accepts 10, 20, 50 and 100 coins: ") value = [10,20,50,100] if inp !

我正在对python进行受控评估。其中一项任务是根据特定标准创建自动售货机。我是一条非常糟糕的蟒蛇,我可能是一个白痴,而且做得不对

我希望用户只输入10,20,50,1.00个硬币。如果用户输入的不是这些硬币,我希望它打印“机器不接受这些硬币”

这就是我到目前为止所做的:

inp = input("Enter Coins, Note: Machine only accepts 10, 20, 50 and 100 coins: ")
value = [10,20,50,100]
if inp != value:
    print("Machine doesn't accept these coins")
else:
    print("What would you like to buy?")
在这里,您需要:

if any(int(coin) not in value for coin in inp.split()):
    print("Machine doesn't accept these coins")
这基本上是将输入值转换成单独的硬币,将它们转换成整数(因为
值中的项目是整数),然后检查它是否是
而不是值中的项目,这当然意味着它是无效的


最后,直到找到一枚无效硬币为止(请看一看)。此时,将
打印出硬币无效。如果没有,则将继续执行
else

inp!=value
比较
inp
value
的值。您需要检查
value
inp
input
是否返回字符串,而不是整数,因此请注意比较类型的方式。@dirn那么我该怎么做呢?它必须输入(int(?您可以使用
inp=int(input(…)
(如果用户的输入不能转换为整数,并且只对一个值有效,那么这可能会引发
ValueError
),或者您可以在
values=['10',20',…]中使用字符串
。谢谢兄弟,它起作用了:)我唯一不明白的是,coin怎么不是一个无效语法?@SteveS当我们检查
inp
中的每个值时,coin只是表示我们正在分析的当前值,它不是作为一个全局变量存在的,它只是一个表示。这就是没有错误的原因。这是一段使用生成器表达式的非常漂亮的代码表示“取由
inp.split()
创建的列表,并将该列表中的每个值依次分配给
coin
。对于
coin
中的每个值,我们计算表达式
int(coin)not in value
(意思)
true
如果硬币的值不在数组中
value
false
如果不在数组中);结果布尔值列表被传递到
any()
,如果列表中的任何值为
true
,则其值为
true
,否则为
false
。一个表达式中的一段漂亮的代码。@JoeMcMahon非常正确,感谢您给出比我更好的解释。然而,这不是一个列表理解,而是一个生成器表达式。你可以看出我主要不是一个Python程序员谢谢你的更正。固定的。