作业三、列表、元组、字典、集合与字符串
作业内容:
1、编写程序,输入一个大于 2 的自然数,然后输出小于该数字的所有素数组成的元组。所谓素数,是指除了1和自身之外没有其他因数的自然数,最小的素数是2,后面依次是3、5、7、11、13
2、输入一个大于 2 的自然数,输出小于该数字的所有素数组成的集合。
3、首先,使用列表推导式和标准库random生成一个包含50个介于1~100的随机整数的列表,然后编写函数def isPrime(n)用来测试整数n是否为素数,接下来使用内置函数filter()把函数isPrime()作用到包含若干随机整数的列表lst上,最后程序输出一个列表,其中只包含列表lst中不是素数的那些整数。
4、输入一个字符串,检查该字符串是否为回文(正着读和反着读都一样的字符串),如果是就输出Yes,否则输出No。要求使用切片实现。
5、编写程序,通过字典记录一周的气温数据(具体的数据值随机生成即可),输出本周内平均气温值以及最大、最小 气温值。

#3.1
import math
n = int(input('请输入一个大于2的自然数:'))
primes = ();#定义空元组
for i in range(2,n,1):
    a = True;
    for j in range(2,int(math.sqrt(i))+1,1):#range(起始,终止,步长),左闭右开
        if(i%j==0):
            a = False;
            break;
    if(a==True):
        primes=primes+(i,);#把i作为元组加入primes
print(primes);

#3.2
import math
n = int(input('请输入一个大于2的自然数:'))
primes = set();#定义空集合,{}是定义字典
for i in range(2,n,1):
    a = True;
    for j in range(2,int(math.sqrt(i))+1,1):
        if(i%j==0):
            a = False;
            break;
    if(a==True):
        primes.add(i);#给集合添加元素
print(primes);   
#除此之外:
#update({})给集合添加集合
#remove(i)删除元素i
#s1.intersection(s2)  求s1与s2的交集
#s1.union(s2)  求s1与s2的并集
#s1.difference(s2)  求s1与s2的差集

#3.3
import random
import math
list1 = [random.randint(1,100)for i in range(50)];#1~100,生成50个加入进列表
def isPrime(i):
    a = True;
    for j in range(2,int(math.sqrt(i))+1):#右边界为开
        if(i%j==0):
            a = False;
            break;
    return a;
prime_list = filter(isPrime,list1);#filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新的序列Iterator。
print(list(prime_list));

#3.4
str = input('请输入一个字符串:');
str1 = str[::-1];#[其实:终止:步长],步长为负向左切
for i in range(len(str)):
    if(str[i]==str1[i]):
        i+=1;
if(i==len(str)):
    print('Yes');
else:
    print('No');
#无步长切片,相当于C里面的下表访问,最左边0开始,最右边-1开始
#[i:]从i位置开始向右到头
#[::-1]翻转字符串,[::-2]间隔为2地翻转字符串

#3.5
import random
tem = {};
for i in range(7):
    temp = random.randint(-5, 15);
    tem[i+1] = temp;
mxtem = 0;
ave = 0;
mintem = 0;
for keys,values in tem.items():
    mxtem = max(mxtem,values);
    mintem = min(mintem,values);
    ave+=values;
ave/=7;
print('最高日温:',mxtem);
print('最低日温:',mintem);
print('平均日温:',ave);