作业四、选择结构、循环结构、函数定义与使用
作业内容:
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]);