如何在 Python 中将字符串转换为 int?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3979077/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How can I convert a string to an int in Python?
提问by
The output I'm getting for my little example app is the following:
我的小示例应用程序的输出如下:
Welcome to the Calculator!
Please choose what you'd like to do:
0: Addition
1: Subtraction
2: Multiplication
3: Division
4: Quit Application
0
Enter your first number: 1
Enter your second number: 1
Your result is:
11
This is because the addition() method is taking the input() as strings and not numbers. How can I use them as numbers?
这是因为 add() 方法将 input() 作为字符串而不是数字。我如何将它们用作数字?
Here is my entire script:
这是我的整个脚本:
def addition(a, b):
return a + b
def subtraction(a, b):
return a - b
def multiplication(a, b):
return a * b
def division(a, b):
return a / b
keepProgramRunning = True
print "Welcome to the Calculator!"
while keepProgramRunning:
print "Please choose what you'd like to do:"
print "0: Addition"
print "1: Subtraction"
print "2: Multiplication"
print "3: Division"
print "4: Quit Application"
#Capture the menu choice.
choice = raw_input()
if choice == "0":
numberA = raw_input("Enter your first number: ")
numberB = raw_input("Enter your second number: ")
print "Your result is:"
print addition(numberA, numberB)
elif choice == "1":
numberA = raw_input("Enter your first number: ")
numberB = raw_input("Enter your second number: ")
print "Your result is:"
print subtraction(numberA, numberB)
elif choice == "2":
numberA = raw_input("Enter your first number: ")
numberB = raw_input("Enter your second number: ")
print "Your result is:"
print multiplication(numberA, numberB)
elif choice == "3":
numberA = raw_input("Enter your first number: ")
numberB = raw_input("Enter your second number: ")
print "Your result is:"
print division(numberA, numberB)
elif choice == "4":
print "Bye!"
keepProgramRunning = False
else:
print "Please choose a valid option."
print "\n"
采纳答案by Aphex
Since you're writing a calculator that would presumably also accept floats (1.5, 0.03), a more robust way would be to use this simple helper function:
由于您正在编写一个可能也接受浮点数 ( 1.5, 0.03)的计算器,因此更可靠的方法是使用这个简单的辅助函数:
def convertStr(s):
"""Convert string to either int or float."""
try:
ret = int(s)
except ValueError:
#Try float.
ret = float(s)
return ret
That way if the int conversion doesn't work, you'll get a float returned.
这样,如果 int 转换不起作用,您将得到一个浮点数返回。
Edit: Your divisionfunction might also result in some sad faces if you aren't fully aware of how python 2.x handles integer division.
编辑:division如果您不完全了解python 2.x 如何处理整数除法,您的函数也可能会导致一些悲伤的面孔。
In short, if you want 10/2to equal 2.5and not2, you'll need to do from __future__ import divisionor cast one or both of the arguments to float, like so:
简而言之,如果您想要10/2equal2.5和not2,则需要执行from __future__ import division或强制转换其中一个或两个参数以浮动,如下所示:
def division(a, b):
return float(a) / float(b)
回答by hughdbrown
>>> a = "123"
>>> int(a)
123
Here's some freebie code:
这是一些免费赠品代码:
def getTwoNumbers():
numberA = raw_input("Enter your first number: ")
numberB = raw_input("Enter your second number: ")
return int(numberA), int(numberB)
回答by Nick
Perhaps the following, then your calculator can use arbitrary number base (e.g. hex, binary, base 7! etc): (untested)
也许以下,那么您的计算器可以使用任意数字基数(例如十六进制、二进制、基数 7!等):(未经测试)
def convert(str):
try:
base = 10 # default
if ':' in str:
sstr = str.split(':')
base, str = int(sstr[0]), sstr[1]
val = int(str, base)
except ValueError:
val = None
return val
val = convert(raw_input("Enter value:"))
# 10 : Decimal
# 16:a : Hex, 10
# 2:1010 : Binary, 10
回答by Richard
easy!
简单!
if option == str(1):
numberA = int(raw_input("enter first number. "))
numberB= int(raw_input("enter second number. "))
print " "
print addition(numberA, numberB)
etc etc etc
回答by Munst
def addition(a, b): return a + b
def add(a, b): 返回 a + b
def subtraction(a, b): return a - b
def 减法(a, b): 返回 a - b
def multiplication(a, b): return a * b
def乘法(a,b):返回a * b
def division(a, b): return a / b
def Division(a, b): 返回 a / b
keepProgramRunning = True
keepProgramRunning = 真
print "Welcome to the Calculator!"
打印“欢迎使用计算器!”
while keepProgramRunning:
print "Please choose what you'd like to do:"
而 keepProgramRunning:
打印“请选择您想要执行的操作:”
print "0: Addition"
print "1: Subtraction"
print "2: Multiplication"
print "3: Division"
print "4: Quit Application"
#Capture the menu choice.
choice = raw_input()
if choice == "0":
numberA = input("Enter your first number: ")
numberB = input("Enter your second number: ")
print "Your result is: " + str(addition(numberA, numberB)) + "\n"
elif choice == "1":
numberA = input("Enter your first number: ")
numberB = input("Enter your second number: ")
print "Your result is: " + str(subtraction(numberA, numberB)) + "\n"
elif choice == "2":
numberA = input("Enter your first number: ")
numberB = input("Enter your second number: ")
print "Your result is: " + str(multiplication(numberA, numberB)) + "\n"
elif choice == "3":
numberA = input("Enter your first number: ")
numberB = input("Enter your second number: ")
print "Your result is: " + str(division(numberA, numberB)) + "\n"
elif choice == "4":
print "Bye!"
keepProgramRunning = False
else:
print "Please choose a valid option."
print "\n"
回答by moob
def addition(a, b): return a + b
def subtraction(a, b): return a - b
def multiplication(a, b): return a * b
def division(a, b): return a / b
keepProgramRunning = True
print "Welcome to the Calculator!"
while keepProgramRunning:
print "Please choose what you'd like to do:"
回答by Chippy
While calling your sub functions from your main functions you can convert the variables into int and then call. Please refer the below code:
从主函数调用子函数时,您可以将变量转换为 int 然后调用。请参考以下代码:
import sys
print("Welcome to Calculator\n")
print("Please find the options:\n" + "1. Addition\n" + "2. Subtraction\n" +
"3. Multiplication\n" + "4. Division\n" + "5. Exponential\n" + "6. Quit\n")
def calculator():
choice = input("Enter choice\n")
if int(choice) == 1:
a = input("Enter first number\n")
b = input("Enter second number\n")
add(int(a), int(b))
if int(choice) == 2:
a = input("Enter first number\n")
b = input("Enter second number\n")
diff(int(a), int(b))
if int(choice) == 3:
a = input("Enter first number\n")
b = input("Enter second number\n")
mult(int(a), int(b))
if int(choice) == 4:
a = input("Enter first number\n")
b = input("Enter second number\n")
div(float(a), float(b))
if int(choice) == 5:
a = input("Enter the base number\n")
b = input("Enter the exponential\n")
exp(int(a), int(b))
if int(choice) == 6:
print("Bye")
sys.exit(0)
def add(a, b):
c = a+b
print("Sum of {} and {} is {}".format(a, b, c))
def diff(a,b):
c = a-b
print("Difference between {} and {} is {}".format(a, b, c))
def mult(a, b):
c = a*b
print("The Product of {} and {} is {}".format(a, b, c))
def div(a, b):
c = a/b
print("The Quotient of {} and {} is {}".format(a, b, c))
def exp(a, b):
c = a**b
print("The result of {} to the power of {} is {}".format(a, b, c))
calculator()
Here what I did is I called each of the function while converting the parameters inputted to int. I hope this has been helpful.
在这里,我所做的是在将输入的参数转换为 int 时调用每个函数。希望这有用。
In your case it could be changed like this:
在你的情况下,它可以像这样改变:
if choice == "0":
numberA = raw_input("Enter your first number: ")
numberB = raw_input("Enter your second number: ")
print "Your result is:"
print addition(int(numberA), int(numberB))
回答by Shailesh Umbardand
Don't use str() method directly in html instead use with y=x|string()
不要直接在 html 中使用 str() 方法,而是使用y=x|string()
<div class="row">
{% for x in range(photo_upload_count) %}
{% with y=x|string() %}
<div col-md-4 >
<div class="col-md-12">
<div class="card card-primary " style="border:1px solid #000">
<div class="card-body">
{% if data['profile_photo']!= None: %}
<img class="profile-user-img img-responsive" src="{{ data['photo_'+y] }}" width="200px" alt="User profile picture">
{% else: %}
<img class="profile-user-img img-responsive" src="static/img/user.png" width="200px" alt="User profile picture">
{% endif %}
</div>
<div class="card-footer text-center">
<a href="{{value}}edit_photo/{{ 'photo_'+y }}" class="btn btn-primary">Edit</a>
</div>
</div>
</div>
</div>
{% endwith %}
{% endfor %}
</div>

