首页 > 解决方案 > 在 python 计算器中处理负整数输入的最佳方法是什么?

问题描述

你好,开发人员和工程师:

如何处理这两种类型的输入1) 当用户输入 "-0"2) 当用户输入减号 "-"时,在我的while循环中添加非负整数。

该程序在整体设计中开发了一些功能,即添加非负整数,但在用户输入-0或-(减号)符号时存在缺陷。当用户输入这些条目时,我想打印('你输入了一个负整数或负/减号')。

目前,当用户在输入中提交 -0 时程序继续运行而不添加,而当用户仅提交 - 符号时出现 ValueError。

请提供反馈。

entry = 0 
sum = 0
# Request input from the user
print('This is nonnegative integer addition program. \n',)

while entry >= 0:
    entry=int(input('Please enter numbers to add: '))
    if entry >=0:
        sum+=entry
    elif entry<0 or str(entry[0])=='-' or str(entry)=='-0':  # -0 nor (first index -(minus) does not work
        print('You have entered a negative integer or symbol:', \
            entry, ', therefore you have been exited out of the program')
print('total integer input sum =',sum)

标签: python-3.x

解决方案


如另一个答案中所述。您将值转换为 int 并且您不能再访问这些字符。我已经让程序存储了 user_input 并检查了它。

entry = 0 
sum = 0
# Request input from the user
print('This is nonnegative integer addition program. \n',)

while entry >= 0:
    user_input = input('Please enter numbers to add: ')

    if '-' in user_input:
        print( 
           'You have entered a negative integer or symbol:', 
           user_input, 
           ', therefore you have been exited out of the program'
        )
        break

    entry = int(user_input)
    sum+=entry

print('total integer input sum =',sum)

在这个版本中,我将输入字符串存储为user_input并检查它是否有“-”符号。我使用'-' in而不是user_input[0]=='-'因为以空格开头的输入仍然可以使用int.

需要注意的另一件事是,您的 if/elif 指定过多。

if entry >=0:
    sum+=entry
elif entry<0 or str(entry[0])=='-' or str(entry)=='-0':
    break

在您的第二个子句中,条目保证小于零。所以str(entry[0])永远不会被调用。谢天谢地,因为这是一个错误。您的 if 语句等效于。

if entry>=0:
    ...
else:
    ...

最后一个小点。当您在打印语句中有一组括号时。您不需要 a\来指示续行。

print(
    "one",
    "two"
)

Python 识别打开的(. 如果你想继续一个字符串,你需要它。

print("one \
      two")

推荐阅读