第一个用户输入被忽略 python
first user input being ignored python
在下面的代码中,要求用户输入项目。然而,用户的第一个输入被忽略了。为此,我不知道为什么。有什么想法吗?
def stupidFacebookPost():
interger = int((input("Enter a Interger Value")))
Product = int((input("Enter a Product Value")))
intergerValues = []
productValues = []
commonValue = []
while interger != '' and Product != '':
try:
interger = int((input("Enter a Interger Value")))
intergerValues.append(interger)
print(intergerValues) #testing
Product = int((input("Enter a Product Value")))
productValues.append(Product)
print(productValues) #testing
except ValueError:
break
for intergers in intergerValues:
for products in productValues:
commonValue.append(int(products) // int(intergers))
print(commonValue) #test
intergerValues.pop([0])
productValues.pop([0])
print('the Common Value is {}'.format((commonValue)))
#testInterger = input("Enter a test value Interger")
输出仅供测试
stupidFacebookPost()
Enter a Interger Value1
Enter a Product Value1
Enter a Interger Value2
[2]
Enter a Product Value4
[4]
Enter a Interger Value3
[2, 3]
Enter a Product Value6
[4, 6]
第 2 行和第 3 行的结果永远不会附加到相应的列表中。
所以你可以用这些值初始化列表:
interger = int((input("Enter a Interger Value")))
Product = int((input("Enter a Product Value")))
intergerValues = [interger,]
productValues = [Product,]
#...
但这不是最好的解决方案。它迫使我们复制代码(输入行)。
此外,循环的构造有点偏离,因为无论内容如何,值都会附加到列表中,而且我们永远不会中断,因为输入是立即转换为整数(因此 integer != ''
将始终为真)
在本例中,我们 "really want" 是一个 do-while 循环。 做某事(提示用户输入),满足某些条件(输入不是空字符串)。
在 python 中,我们没有 do-while 循环,但我们可以使用无限循环 + break 语句来完成相同(甚至更多)的功能。
所以一个 do while 循环可以这样写:
do:
do_something1
do_something2
while(<some condition>)
可以写成python为:
while True: # Infinite loop
do_something1
do_something2
if not(<some condition>): break
请注意,我们在条件处反转了逻辑。为了在 do/while 循环中继续循环,我们希望条件为真,在 while/break 构造中,条件必须为假。
考虑一个稍微不同的结构:
def stupidFacebookPost():
integerValues = []
productValues = []
commonValue = []
while True:
try:
integer = input("Enter a Integer Value ")
if integer == '': break
Product = input("Enter a Product Value ")
if Product == '': break
integerValues.append(int(integer))
productValues.append(int(Product))
print(integerValues) #testing
print(productValues) #testing
except ValueError:
break
for integers in integerValues:
for products in productValues:
commonValue.append(int(products) // int(integers))
print(commonValue) #test
integerValues.pop([0])
productValues.pop([0])
print('the Common Value is {}'.format((commonValue)))
stupidFacebookPost()
如果您使用 Python 2 -- 您的 input
函数应该是 raw_input
.
请注意,您的第二个循环中的逻辑似乎仍然存在问题,但至少您现在得到了可靠的结果。
编辑 编写以上代码是为了说明如何在 python 中获得 do/while 功能。值得注意的是,if <condition>: break
。但是由于您已经(正确地)将代码包装在 try/except
块中,您可以删除显式中断并依靠 except 块来中断。例如,类似于:
def stupidFacebookPost():
integerValues = []
productValues = []
commonValue = []
while True:
try:
integer = int(input("Enter a Integer Value "))
Product = int(input("Enter a Product Value "))
integerValues.append(integer)
productValues.append(Product)
print(integerValues) #testing
print(productValues) #testing
except ValueError:
break
for integers in integerValues:
for products in productValues:
commonValue.append(int(products) // int(integers))
print(commonValue) #test
integerValues.pop([0])
productValues.pop([0])
print('the Common Value is {}'.format((commonValue)))
stupidFacebookPost()
在下面的代码中,要求用户输入项目。然而,用户的第一个输入被忽略了。为此,我不知道为什么。有什么想法吗?
def stupidFacebookPost():
interger = int((input("Enter a Interger Value")))
Product = int((input("Enter a Product Value")))
intergerValues = []
productValues = []
commonValue = []
while interger != '' and Product != '':
try:
interger = int((input("Enter a Interger Value")))
intergerValues.append(interger)
print(intergerValues) #testing
Product = int((input("Enter a Product Value")))
productValues.append(Product)
print(productValues) #testing
except ValueError:
break
for intergers in intergerValues:
for products in productValues:
commonValue.append(int(products) // int(intergers))
print(commonValue) #test
intergerValues.pop([0])
productValues.pop([0])
print('the Common Value is {}'.format((commonValue)))
#testInterger = input("Enter a test value Interger")
输出仅供测试
stupidFacebookPost()
Enter a Interger Value1
Enter a Product Value1
Enter a Interger Value2
[2]
Enter a Product Value4
[4]
Enter a Interger Value3
[2, 3]
Enter a Product Value6
[4, 6]
第 2 行和第 3 行的结果永远不会附加到相应的列表中。
所以你可以用这些值初始化列表:
interger = int((input("Enter a Interger Value")))
Product = int((input("Enter a Product Value")))
intergerValues = [interger,]
productValues = [Product,]
#...
但这不是最好的解决方案。它迫使我们复制代码(输入行)。
此外,循环的构造有点偏离,因为无论内容如何,值都会附加到列表中,而且我们永远不会中断,因为输入是立即转换为整数(因此 integer != ''
将始终为真)
在本例中,我们 "really want" 是一个 do-while 循环。 做某事(提示用户输入),满足某些条件(输入不是空字符串)。
在 python 中,我们没有 do-while 循环,但我们可以使用无限循环 + break 语句来完成相同(甚至更多)的功能。
所以一个 do while 循环可以这样写:
do:
do_something1
do_something2
while(<some condition>)
可以写成python为:
while True: # Infinite loop
do_something1
do_something2
if not(<some condition>): break
请注意,我们在条件处反转了逻辑。为了在 do/while 循环中继续循环,我们希望条件为真,在 while/break 构造中,条件必须为假。
考虑一个稍微不同的结构:
def stupidFacebookPost():
integerValues = []
productValues = []
commonValue = []
while True:
try:
integer = input("Enter a Integer Value ")
if integer == '': break
Product = input("Enter a Product Value ")
if Product == '': break
integerValues.append(int(integer))
productValues.append(int(Product))
print(integerValues) #testing
print(productValues) #testing
except ValueError:
break
for integers in integerValues:
for products in productValues:
commonValue.append(int(products) // int(integers))
print(commonValue) #test
integerValues.pop([0])
productValues.pop([0])
print('the Common Value is {}'.format((commonValue)))
stupidFacebookPost()
如果您使用 Python 2 -- 您的 input
函数应该是 raw_input
.
请注意,您的第二个循环中的逻辑似乎仍然存在问题,但至少您现在得到了可靠的结果。
编辑 编写以上代码是为了说明如何在 python 中获得 do/while 功能。值得注意的是,if <condition>: break
。但是由于您已经(正确地)将代码包装在 try/except
块中,您可以删除显式中断并依靠 except 块来中断。例如,类似于:
def stupidFacebookPost():
integerValues = []
productValues = []
commonValue = []
while True:
try:
integer = int(input("Enter a Integer Value "))
Product = int(input("Enter a Product Value "))
integerValues.append(integer)
productValues.append(Product)
print(integerValues) #testing
print(productValues) #testing
except ValueError:
break
for integers in integerValues:
for products in productValues:
commonValue.append(int(products) // int(integers))
print(commonValue) #test
integerValues.pop([0])
productValues.pop([0])
print('the Common Value is {}'.format((commonValue)))
stupidFacebookPost()