作业四、选择结构、循环结构、函数定义与使用
作业内容:
1、有n个人围成一圈,从1开始按顺序编号,从第一个人开始从1到k(假设k = 3)报数,报到k的人退出圈子;然后圈子缩小,从下一个人继续游戏,问最后留下的是原来的第几号。
要求:编写程序,模拟上面的游戏,要求初始人数n和报数临界值k可以自由指定。运行程序并观察游戏进行的过程。使用两种方法实现,并简单分析其优劣。
2、编写程序,至少使用两种不同的方法计算100以内所有奇数的和。
3、编写程序,输出所有由1、2、3、4这4个数字组成的素数,并且在每个素数中每个数字只使用一次。
4、编写函数,可以接收任意多个整数并输出其中的最大值和所有整数之和。
5、编写函数,模拟内置函数sorted()。
#4.1 #solution 1 n = input(); k = input(); arr = {}; for i in range(int(n)): arr[int(i)] = 1; ans = int(n)-1; pos = 0; while ans!=0: tmp = k; while tmp!=0: if(arr[pos]==1): tmp=int(tmp)-1; if(tmp==0): arr[pos] = 0; pos+=1; pos = int(pos)%int(n); ans-=1; for i in range(int(n)): if(arr[int(i)]==1): print(i); #solution 2 n = int(input()); k = int(input()); ans = int(0); for i in range(n): ans = (ans+m)%i print(ans); #第一种模拟实际情况,过程直观但效率低,第二种使用数学推导式,代码简洁效率高。 #4.2 #solution 1 ans = int(0); for i in range(1,101,2): ans+=i; print(ans); #solution 2 ans = int(50+50*49*2/2); print(ans); #4.3 import math def isprime(x): if(x==1): return False; for i in range(2,int(math.sqrt(x))+1): if(x%i==0): return False; return True; def isok(x): x = int(x); arr = [0,0,0,0]; while int(x)!=0: tmp = int(x%10); x/=10; if(tmp==0): return False; if(tmp<=4): arr[tmp-1]+=1; if(arr[tmp-1]>1): return False; else: return False; return True; for i in range(1,4322): if(isok(i)): if(isprime(i)): print(i); #4.4 arr = list(map(int,input().split())); ans = int(0); mx = int(0); minn = 1e18; for i in range(len(arr)): mx = max(mx,arr[i]); minn = min(minn,arr[i]); ans+=arr[i]; print('最大值为',mx); print('最小值为',minn); print('和为',ans); #4.5 n = int(input()); arr = list(map(int,input().split())); for i in range(n): for j in range(0,n-i-1): if(arr[j]>arr[j+1]): tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; for i in range(n): print(arr[i]);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)