[英]How do I have a value that can be both a floating decimal point or a string in python?
所以,我需要我的一个变量成为一种可能性。 比如,它是一个用户输入变量,它可以是一个浮动小数点或一个字符串。 而且,所以我想用它做一些事情,比如 >/</= 但如果用户说“完成”我退出。 那么,让我告诉你:
largest = None
smallest = None
while True:
try:
num = input("Enter a number: ")
float(num)
except:
"invalid input"
if num == "done":
break
if num > largest:
largest = num
if smallest == None:
smallest= num
if smallest > num:
smallest = num
print(num)
print("Maximum is", largest)
print("Minimum is", smallest)
我不太明白您要做什么,但是在将用户输入与字符串进行比较后,您始终可以执行float
转换:
largest = float('inf')
smallest = None
while True:
num = input("Enter a number: ")
if num == "done":
break
try:
num = float(num)
except:
print("invalid input")
if num > largest:
largest = num
if smallest == None:
smallest = num
if smallest > num:
smallest = num
print(num)
print("Maximum is", largest)
print("Minimum is", smallest)
这是一个示例播放:
Enter a number: 1.2
1.2
Enter a number: 3.4
3.4
Enter a number: 0
0.0
Enter a number: done
Maximum is inf
Minimum is 0.0
假设您使用的是 Python 3.8+,我对代码简化的一个建议是使用 walrus :=
运算符,它应该允许您省略break
条件:
while (num := input("Enter a number: ")) != 'done':
try: # same as before
...
首先,将数字作为字符串读取,检查它是否“完成”并且仅在转换为浮点数之后:
while True:
num = input()
if num == "done":
break
num = float(num)
# ... do something with num ...
对于此示例,您不需要拥有它。 您从用户输入中读取的值始终可以是字符串,如果该字符串不是"done"
,则它应该是一个浮点数,否则无效。 更具体地说,您不需要输入是任何浮点数或字符串。 你需要它是任何浮动或"done"
。 请参阅以下代码段:
largest = None
smallest = None
while True:
text = input("Enter a number: ")
if text == "done":
break
else:
try:
num = float(text)
if smallest is None or num < smallest:
smallest = num
if largest is None or num > largest:
largest = nunm
except:
print("Invalid input")
print("Maximum is", largest)
print("Minimum is", smallest)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.