验证家庭作业帮助
Python提示:将用户输入验证为数字(整数)
发表于2015年1月8日由管理员 – 无评论↓
在大多数Python程序中,您将需要通过询问问题和检索用户输入与最终用户进行交互。
为此,您可以使用input()函数:例如
username = input(“你的用户名是什么?”)
1
username = input(“你的用户名是什么?”)
有时您需要检索数字。整数(无小数位数)称为整数。要使用它们作为整数,您将需要使用int()函数将用户输入转换为整数。例如
age = int(输入(“你的年龄是多少”))
1
age = int(输入(“你的年龄是多少”))
只要用户输入一个整数,这行代码就可以正常工作。如果错误地输入字母或标点符号,则转换为整数将失败并生成异常(错误),程序将停止运行。
为了验证用户条目并确保它是一个数字,可以使用try … except … .else块发生时捕获此异常,如下所示:
尝试:
value = int(input(“Type a number:”))
除了ValueError:
print(“这不是整数”)
1
2
3
4
尝试:
value = int(input(“Type a number:”))
除了ValueError:
print(“这不是整数”)
看看我们如何使用这种方法来定义我们自己的函数(称为inputNumber())来询问一个数字。只要我们期望用户输入一个整数,就可以使用这个新功能代替一个input()函数。此功能使用try … except … .else块在一个while循环中,以便它不断要求用户输入一个数字,直到用户正确。
现实世界的例子:
2005年12月,一家日本证券交易商发行了10亿美元的打字错误,当时他错误地出售了600,000股股票,每股1日元,而不是卖出一个60万日元的股票。几行代码可能避免了这个错误。
肥胖的手指打字费用是一个交易员的老板1.28亿英镑,“时代在线”,2005年12月9日
Web应用程序极易受到输入验证错误的影响。在易受攻击的电子商务网站上输入无效条目“!@#$%^&*()”可能会在易受攻击的系统上造成性能问题或“拒绝服务”,或者无效的密码如“pwd”或“1 = 1-”可能导致未经授权的访问。
http://www.processor.com/editorial/article.asp?article=articles%2Fp3112%2F32p12%2F32p12%2F32p12.asp&guid=&searchtype=&WordList=&bJumpTo=True
一名挪威女子在网上银行系统上错误的输入了帐号。而不是键入11位数的帐号,她不小心输入了一个额外的数字,总共有12个数字。系统丢弃了额外的数字,并将$ 100,000转入(不正确的)帐户。一个简单的对话框通知她,她输入的数字太多将有助于避免这个昂贵的错误。
奥尔森,凯。 “$ 100,000 Keying error”IEEE Computer,2008年8月
网站xssed.com列出了近1.3万个易受攻击的网页,其中包括yahoo.com,google.com,msn.com,facebook.com,craigslist.com和cnn.com等网站。
代码示例:
testScore = int(input(’Enter test score:’))
如果testScore> = 90:
打印(’你的成绩是A’)
elif testScore> = 80:
打印(’你的成绩是B’)
elif testScore> = 70:
打印(’你的成绩是C’)
elif testScore> = 60:
打印(’你的成绩是D’)
其他:
打印(’你的成绩是F’)
此代码无法检查负面测试成绩或测试成绩超过100。
代码负责 – 如何正确验证输入?
检查所有输入:以下是一些部分列表,其中包括:
范围检查:检查数字以确保它们在可能值的范围内,例如,月份的值应在1和12之间。
合理检查:检查其合理性的价值,例如(年龄> 16岁)&&(年龄<100岁)
算术检查:检查可能会导致诸如除以零的问题的值的变量。
格式检查:检查数据是否为指定格式(模板),例如,日期必须为DD / MM / YYYY格式。
以下功能显示测试成绩的输入验证:
def check_input(min,max):
prompt =“在%d和%d之间输入一个整数:”%(最小,最大)
value = int(input(prompt))
while(值<min或value> max):
value = int(input(prompt))
返回值
适当恢复:强大的程序将以适当,正确和安全的方式响应无效输入。当您的程序运行无效输入时,应尽可能地恢复,然后重复该请求或以其他方式提醒用户出现问题。应避免任意裁决,例如截断或以其他方式重新格式化数据以“使其适合”。
自愿,甚至名字,是一个Python数据验证库。这意味着用于验证作为JSON,YAML等进入Python的数据。
它有三个目标:
简单。
支持复杂的数据结构。
提供有用的错误消息
联系
Volksive现在有一个邮件列表!发送邮件至`<mailto:[email protected]>`__订阅。将会说明。
您也可以通过电子邮件或Twitter直接与我联系。
要提交错误,请在GitHub上创建一个新问题,并提供如何复制问题的简短示例
文件
文档提供[这里](http://alecthomas.github.io/voluptuous/)。
给我一个例子
Twitter的用户搜索API接受查询网址,如:
$ Curl’http://api.twitter.com/1/users/search.json?q=python&per_page=20&page=1
为了验证这一点,我们可以使用一个模式,如:
>>>从引人入胜的模式
>>> schema = Schema({
…’q’:str,
…’per_page’:int,
…’page’:int,
…})
该模式非常简洁粗略地表示了API所需的数据,并且可以正常工作。但它有一些问题。首先,它并没有完全表达API的限制。根据API,per_page应该限制在最多20个,默认为5。为了更准确地描述API的语义,我们的架构将需要更加成熟:
>>>从进口需要,全部,长度,范围
>>> schema = Schema({
…必需(’q’):全部(str,长度(min = 1)),
…必需(’per_page’,default = 5):全部(int,Range(min = 1,max = 20)),
…’page’:All(int,Range(min = 0)),
…})
该模式完全实现了Twitter文档中定义的接口,并进一步完善。
我们为Python或Python验证功课的作业分配提供专家协助。 我们的导师是为各级学生提供家庭作业的专家。