繁体   English   中英

我如何在python中拥有一个既可以是浮点小数点又可以是字符串的值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM