识别仅由数字组成的字符串

时间:2018-12-16 20:44:13

标签: python string numbers

我试图编写一个能够连接两个单词并乘以两个浮点数的函数,但是try-error模块遇到了问题。我希望函数还检查str是否仅由数字组成,但这不起作用。你能找到问题了吗?

import Vue from 'vue'
import VueSlick from 'vue-slick'

Vue.use(VueSlick);

3 个答案:

答案 0 :(得分:1)

isalpha 将为您提供帮助:

if w1.isalpha() and w2.isapha():
    # w1 and w2 have not any numeric values

答案 1 :(得分:0)

您的问题出在try语句中:

try:
    float(w2), float(w1)
    print('I want a word')
    funz()

请注意,使用此语句,您仅检查两个单词之一是否不是float。一旦w1w2都不能转换成float,这意味着它是一个单词,就跳转到except语句。这是错误的,因为其中之一可能是数字。

通过这种方式,这是一种更清洁,更简单的方法:

def funz():

    while True:

        w1=input('insert a word')
        w2=input('insert a second word')
        n1=input('insert a num')
        n2=input('insert a second num')

        if not (str(w1).isalpha()) & str(w2).isalpha():
            print('I want a word')
            continue

        if not (str(n1).isnumeric()) & (str(n2).isnumeric()):
            print('I said a number!')
            continue

        print('\n'+w1+w2+'\n')
        print(float(n1)*float(n2))
        break

答案 2 :(得分:0)

也许这个小例子有帮助:

while True:
    user_input = input("Please type something: ")
    try:
        user_input = float(user_input)
        print("Your input can be interpreted as a float")
    except:
        print("Your input can *not* be interpreted as a float")
        continue
    break

这将确保user_inputfloat-否则由于continue,循环将再次开始。

如果要确保user_input不是 一个float,只需移动continue

while True:
    user_input = input("Please type something: ")
    try:
        user_input = float(user_input)
        print("Your input can be interpreted as a float")
        continue
    except:
        print("Your input can *not* be interpreted as a float")
    break