我正在学习python,我正在尝试制作另一个计算器。当我尝试运行它时,前几个命令有效,但是当我到达第 6 行时,它说:TypeError: can only concatenate str (not "int") to str
代码在这里:
if user_input==' squares':
first_number=input(str(inp_words))
second_number=input(str(sec_inp_words))
f_num=str(first_number)
s_num=str(second_number)
answer=int(first_number)**int(second_number)
print('the answer to '+str(f_num)+'to the power of'+str(s_num)+'is'+answer)
print(str(words))
sys.exit()
以下是使用格式化字符串的方法:
print(f'the answer to {f_num} to the power of {s_num} is {answer}.')
当您在字符串之前添加 f 或 F 时,该字符串称为格式化字符串,就像将 .format(( 添加到字符串末尾一样。使用格式化字符串,您需要担心的类型转换更少。
在大括号中,您可以将任何有效的 python 表达式(如函数(放入其中,因为 f 字符串是在运行时计算的。@AnnZen的答案应该可以解决您的直接问题(+1(。 但是您似乎在处理int
和str
并记住哪个变量是哪个变量时遇到了更大的问题:
second_number=input(str(sec_inp_words))
s_num=str(second_number)
answer=int(first_number)**int(second_number)
print('the answer to '+str(f_num)+'to the power of'+str(s_num)+'is'+answer)
当您多次将字符串转换为字符串时! 更好地处理这个问题的一种可能是在变量名称中包含变量类型:
inp_words_str = "Please enter the first number: "
sec_inp_words_str = "Please enter the second number: "
words_str = "Goodbye!"
# ...
if user_input_str == 'squares':
first_number_str = input(inp_words_str)
second_number_str = input(sec_inp_words_str)
first_number_int = int(first_number_str)
second_number_int = int(second_number_str)
answer_int = first_number_int ** second_number_int
print(f'The answer to {first_number_str} to the power of {second_number_str} is {answer_int}.')
print(words_str)
这样,您就会知道不要对变量调用str()
*_str
也不要对*_int()
变量调用int()
,等等。 您也可以考虑在计算器中使用float
而不是int
。