我试图编写一个能够连接两个单词并乘以两个浮点数的函数,但是try-error模块遇到了问题。我希望函数还检查str是否仅由数字组成,但这不起作用。你能找到问题了吗?
import Vue from 'vue'
import VueSlick from 'vue-slick'
Vue.use(VueSlick);
答案 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
。一旦w1
或w2
都不能转换成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_input
是float
-否则由于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