python - 如何使输入语句可选?
问题描述
当我尝试编写一个程序来计算对 Python 的简单兴趣时,我遇到了一个小问题。
def si(p,r=100,t=2):
return (p*r*t)/100
x=float(input("Enter principal amount"))
y=float(input("Enter rate"))
z=float(input("Enter time"))
print (si(x,y,z))
我想让 y 和 z 可选。知道我该怎么做吗?如果我将其留空并按 Enter,则会显示错误。
解决方案
最简单的方法是使用or
def si(p,r,t): return (p r t)/100
x = float(input("Enter principal amount: "))
y = float(input("Enter rate: ") or 100)
z = float(input("Enter time: ") or 2)
print (si(x,y,z))
Enter principal amount: 1
Enter rate:
Enter time:
2.0
但正确的方法是在将输入转换为浮点数之前验证输入
def si(p,r=100,t=2):
return (p*r*t)/100
x = input("Enter principal amount: ")
y = input("Enter rate: ")
z = input("Enter time: ")
def validate(param):
return float(param) if param else 1
print (si(validate(x), validate(y), validate(z)))
输出:
Enter principal amount: 1
Enter rate:
Enter time:
0.01
推荐阅读
- postgresql - 如何在 PostgreSQL 10.6 中删除 uuid 帖子?
- spring-boot - spring boot feign客户端:为什么是http调用时出现ssl错误
- gatling - getCookieValue 返回一个对象
- java - 用更简洁的字符串编码方式替换多个 replaceAll
- google-vision - Nuxeo Vision 包在 Nuxeo 平台中不起作用
- spring - 类和方法级别的 Spring 配置文件
- vue.js - v-select 验证在 Internet Explorer 11 中不起作用
- kubernetes - 如何使用 Kubernetes 端点对象?
- sql - 如何从与另一个表中的所有值匹配的表中获取记录
- laravel - 路由模型绑定、提供者、中间件、构造函数或函数特定