我的老师想让我通过迭代找到用户10个输入的中位数。
这就是我使用迭代来查找总和,奇数数,最大值和质数数的方式。但我一直坚持要找到中位数。
def Main(): #main function
sum=0
odd=0
temp=0
prime=0
median=0
for i in range(10):
x=float(input("Please enter a number")) #ask user for input 10 times
sum=sum+x #adds all inputs together
if x%2!=0: #all even numbers are divisible by 2
odd=odd+1
if x>=temp: #update temp with current largest input
temp=x
for p in range (2,int(math.sqrt(x))+1):#find prime numbers
if x>=2 and x%p==0: prime=prime+1
首先,正如一个用户在对你的问题的评论中指出的,你确定质数的方法是不正确的。您只应在检查完所有因素后增加该计数器,而不是在检查完每个因素后。
StackOverflow上有几个问题展示了如何在python中计算质数;这是一个稍微改进的代码版本,修复了该错误(以及一些风格改进建议):
def main():
sum = 0
counter_odd = 0
max_num = None
min_num = None
counter_prime = 0
median = 0
for i in range(10):
x = float(input("Please enter a number"))
sum += x
if x % 2 != 0:
counter_odd += 1
if max_num is None or max_num < x:
max_num = x
if min_num is None or min_num > x:
min_num = x
if x == 0 or x == 1:
counter_prime += 1
elif x > 1:
if not any(x % d == 0 for d in range(2, int(math.sqrt(x)) + 1)):
counter_prime += 1
至于你的主要问题:SO有几个关于在未排序列表中查找中位数的问题(这与在没有整个列表的情况下搜索中位数非常相似)。也许在没有Python标签的情况下搜索它,这样你就可以看到一些算法,而不会与特定语言联系起来。
例如,在这个问题中,您可以找到使用中值法的建议(维基百科)。
import math
def Main(): #main function
sum=0
odd=0
temp=0
prime=0
median=0
my_list =[]
for i in range(10):
x=float(input("Please enter a number: ")) #ask user for input 10 times
sum=sum+x #adds all inputs together
if x%2!=0: #all even numbers are divisible by 2
odd=odd+1
if x>=temp: #update temp with current largest input
temp=x
for p in range (2,int(math.sqrt(x))+1):#find prime numbers
if x>=2 and x%p==0: prime=prime+1
my_list.append(x)
my_list.sort()
size =len(my_list)
if size == 1:
median = my_list[0]
elif size % 2 == 0:
size = int(size/2)
median=(my_list[size-1]+my_list[size])/2
else:
median = my_list[int(size / 2)]
print("sum is ", sum, ",odd is ", odd, ",temp is ", temp, ",prime is ", prime, "median is ", median)
Main()
问题内容: 我有一个2的幂的整数输入(1、2、4、8等)。我希望函数不使用log()返回位位置。例如,对于上述输入,对于C#,将分别返回{0,1,2,3}。另外,如果可以在SQL中完成。 谢谢! 问题答案: 我发现执行此操作最快的代码来自Bit Twiddling Hacks网站。具体而言,基于DeBruijn序列的查找。参见http://graphics.stanford.edu/~seande
本文向大家介绍如何在C#中不使用foreach的情况下从列表复制项目到列表?,包括了如何在C#中不使用foreach的情况下从列表复制项目到列表?的使用技巧和注意事项,需要的朋友参考一下 List <T>是强类型对象的集合,可以通过索引对其进行访问,并具有用于排序,搜索和修改列表的方法。它是System.Collection.Generic命名空间下的ArrayList的常规版本。 List <T
问题内容: 我想更改数据库表的列位置而不丢失数据。 例如: 当前表: 到 问题答案: 试试这个:
我想在不丢失数据的情况下更改数据库表的列位置。 例如: 当前表格: 到
rbindlist做的正是我需要的,但'do.call'做不到! do.Call不是我想要的
问题内容: 我有一个列表看起来像这样: 我想把它弄平 有没有使用numpy的轻量级功能来执行此操作? 问题答案: 如果没有numpy(),一种使用方式 是: 或者作为另一种Python方式,您可以使用 列表理解 : 另一个非常适合短列表的功能方法也可以在Python2和Python3中使用(不要将其用于长列表): 为了使其更快一点,您可以使用内置,而不是: 基准: 使用@Will答案的基准测试(对