Python 计算整数内的单个数字以确定偶数计数
我应该为其编写代码的程序要求用户输入(可以是十进制,也可以不是十进制),然后该函数应该忽略十进制后的任何数字,并计算整数中有多少数字是偶数。到目前为止,我所做的(我甚至不知道这是否是解决这个问题的最佳或正确的方法)是让用户输入一个字符串,而不是整数或浮点,然后找到小数点并将这个新数字分配给一个新变量。 我遇到的问题是,通过循环每个数字来确定它是否为偶数。它不允许我在循环之前将其转换为整数,因为它说整数不能被迭代,并且当我在循环中进行转换时,它也会给我一个错误Python 计算整数内的单个数字以确定偶数计数,python,python-3.x,Python,Python 3.x,我应该为其编写代码的程序要求用户输入(可以是十进制,也可以不是十进制),然后该函数应该忽略十进制后的任何数字,并计算整数中有多少数字是偶数。到目前为止,我所做的(我甚至不知道这是否是解决这个问题的最佳或正确的方法)是让用户输入一个字符串,而不是整数或浮点,然后找到小数点并将这个新数字分配给一个新变量。 我遇到的问题是,通过循环每个数字来确定它是否为偶数。它不允许我在循环之前将其转换为整数,因为它说整数不能被迭代,并且当我在循环中进行转换时,它也会给我一个错误 digit_input=(input
digit_input=(input("Enter a number:"))
def digit_count(digit_input):
i = 0
even_count = 0
start = digit_input.find(".", i)
new_num=(digit_input[:start])
while i < len(new_num):
new=int(new_num[i])
if new % 2 == 0:
even_count += 1
return even_count
else:
break
i+=1
print(digit_count(digit_input))
数字输入=(输入(“输入数字”))
def数字计数(数字输入):
i=0
偶数计数=0
开始=数字输入。查找(“.”,i)
新数字=(数字输入[:开始])
而我
我现在拥有的确实告诉我第一个整数是否为偶数。但如果,例如,我输入222,它告诉我只有1个偶数
*****如果有更好的方法,请随时告诉我。我是python新手,这是我唯一能想到的方法 除了肯定有更快或更优雅的方法可以做到这一点之外,下面的更改将修复您的代码。第一个偶数后不返回,继续计数:
while i < len(new_num):
new = int(new_num[i])
if new % 2 == 0:
even_count += 1 # do not return meaningless count now!
# do not break otherwise, keep counting
i += 1
return even_count # but return count after finishing counting
除了肯定有更快或更优雅的方法可以做到这一点之外,下面的更改将修复您的代码。第一个偶数后不返回,继续计数:
while i < len(new_num):
new = int(new_num[i])
if new % 2 == 0:
even_count += 1 # do not return meaningless count now!
# do not break otherwise, keep counting
i += 1
return even_count # but return count after finishing counting
在一个班轮你可以做到这一点
n_even_before_decimal = len(list(x for x in digit_input.split('.')[0] if int(x)%2 == 0))
此代码假定您有用户输入的数字,在数字输入
变量中有一个小数点作为字符串
解释
列表
函数中的代码只是在“.”之前的所有字符上迭代(表示为拆分
函数的[0]
)将它们转换为int
s,并检查它们是否为偶数。
它将它们全部保存到一个列表中,并在末尾计算长度。在一行中,您可以这样做
n_even_before_decimal = len(list(x for x in digit_input.split('.')[0] if int(x)%2 == 0))
此代码假定您有用户输入的数字,在数字输入
变量中有一个小数点作为字符串
解释
列表
函数中的代码只是在“.”之前的所有字符上迭代(表示为拆分
函数的[0]
)将它们转换为int
s,并检查它们是否为偶数。
它会将它们全部保存到一个列表中,并在末尾计算长度。您不能直接将输入转换为整数,而不是处理小数点吗?提示的一部分希望程序只处理小数点之前的数字。我个人不知道如果我马上把它转换成整数怎么办。如果是,请告诉我,这样我就可以学习了,因为我是python的新手。你能不能直接将输入转换成整数,而不是小数点?提示的一部分希望程序只处理小数点之前的数字。我个人不知道如果我马上把它转换成整数怎么办。如果你这么做了,请告诉我,这样我就可以学习,因为我是新来的蟒蛇。我的意思是,我肯定有更好的方法,但我不知道如何去做。如果你能给我指出正确(或更好)的方向,那就太好了。@NouraAsrar补充了一个简短的解决方案谢谢!但它为什么会对以10为底的int()表示无效的文本:“a”,如果您的输入包含非数字,则会发生这种情况。在这种情况下,
int
转换将失败。我的第二个建议(未注释)在这方面更加有力。我指的是你建议的一行。那个给了我一个错误。我的意思是我肯定有更好的方法,但我不知道如何去做。如果你能给我指出正确(或更好)的方向,那就太好了。@NouraAsrar补充了一个简短的解决方案谢谢!但它为什么会对以10为底的int()表示无效的文本:“a”,如果您的输入包含非数字,则会发生这种情况。在这种情况下,int
转换将失败。我的第二个建议(未注释)在这方面更加有力。我指的是你建议的一行。那个给了我一个错误。