Python用户输入

2024-05-18 14:22:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图想出一个简单的计算器,它接受用户的输入并进行计算,但它不断抛出错误。你知道吗

raw = input("Raw Formatting:")
disk = input("On-disk formatting:")
slack = input("Slack space:")
quest = input("Select protection; 1=FTT, 2=EC-1, 3=EC-2:")

if quest == 1:
    answer = raw * (1-disk) * (1-slack) * 0.5
    print (answer)
elif quest == 2:
    answer = raw * (1-disk) * (1-slack) * 0.75
    print (answer)
elif quest == 3:
    answer = raw * (1-disk) * (1-slack) * 0.67
    print (answer)
else:
    print ("You didn't provide a valid protection level")

输出:

Raw Formatting:24
On-disk formatting:0.1
Slack space:0.3
Select protection; 1=FTT, 2=EC-1, 3=EC-2:1
Traceback (most recent call last):
 File "C:\Users\Ed\Desktop\hello.py", line 7, in <module>
  answer = raw * (1-disk) * (1-slack) * 0.5
TypeError: unsupported operand type(s) for -: 'int' and 'str' 

任何帮助都将不胜感激。你知道吗

谢谢


Tags: answerinputrawonspaceslackdiskprint
2条回答

您正在比较字符串和整数。你知道吗

您应该(使用所有变量):

quest = int(input(" .... "))

然后比较一下你现在的表现。你知道吗

师父的回答是正确的:

你正在接受一个输入,它是一个字符串,不管输入什么,然后你试图用一个字符串和一个整数执行一个数学运算。你知道吗

在执行数学函数时,需要将字符串转换为int或将其称为int。你知道吗

示例一:

raw = input("Raw Formatting:")
disk = input("On-disk formatting:")
slack = input("Slack space:")
quest = input("Select protection; 1=FTT, 2=EC-1, 3=EC-2:")
raw = float(raw)
disk = float(disk)
slack = float(slack)
quest= float(quest)
if quest == 1:
    answer = raw * (1-disk) * (1-slack) * 0.5
    print (answer)
elif quest == 2:
    answer = raw * (1-disk) * (1-slack) * 0.75
    print (answer)
elif quest == 3:
    answer = raw * (1-disk) * (1-slack) * 0.67
    print (answer)
else:
    print ("You didn't provide a valid protection level")

例2

raw = input("Raw Formatting:")
disk = input("On-disk formatting:")
slack = input("Slack space:")
quest = input("Select protection; 1=FTT, 2=EC-1, 3=EC-2:")

if quest == '1':
    answer = float(raw) * (1-float(disk)) * (1-float(slack)) * 0.5
    print (answer)
elif quest == '2':
    answer = float(raw) * (1-float(disk)) * (1-float(slack)) * 0.75
    print (answer)
elif quest == '3':
    answer = float(raw) * (1-float(disk)) * (1-float(slack)) * 0.67
    print (answer)
else:
    print ("You didn't provide a valid protection level")

您还需要检查以确保返回的结果将计算为整数,您希望的错误越少。。首先要做的是从输入中去掉空格

x = input('type a number: ').strip(' ')

然后您应该确保您的输入(字符串值)是数字。你知道吗

if not x.isdigit():
    print("you didn't enter a number")

或者,有更多的Python的方式来执行我给出的答案,但我认为答案是适合你目前 你应该能处理这个。。 阅读文档https://docs.python.org/3/library/

相关问题 更多 >

    热门问题