Python基础入门(四):循环语句for

一、循环语句for

        for是python中的另一个循环语句,提供了更为强大的循环结构,它可以遍历任何序列;

        例如:字符串、列表、元组、字典、集合等。

# for循环语法格式:

for 临时变量 in 被遍历对象:
    代码块
    
# 注意:
# 被遍历的对象可以是任意序列,也可以是一个区间范围。   
# 只要被遍历对象没有遍历完,就可以一直循环遍历,直到遍历结束。 

二:for循环的常用2个函数

        2.1: range()函数

# 功能:返回一个整数序列
# 语法:range(起始值start, 终止值end, 步长值step)
# 注意:range返回的区间范围是 [start , end),也就是说不包含终值end
#      参数1,start默认是0,可以省略不写
#      参数2,end没有默认值,不可以省略
#      参数3,step默认值为1,可以省略不写

for i in range(10):
    print(i, end=' ')    # 0 1 2 3 4 5 6 7 8 9

for i in range(0):
    print(i, end=' ')    # 空

for i in range(-10):
    print(i, end=' ')    # 空

for i in range(1, 11):
    print(i, end=' ')    # 1 2 3 4 5 6 7 8 9 10

for i in range(0, 30, 5):
    print(i, end=' ')    # 0 5 10 15 20 25

for i in range(0, -10, -2):
    print(i, end=' ')    # 0 -2 -4 -6 -8

for i in range(-10, 0, 2):
    print(i, end=' ')    # -10 -8 -6 -4 -2

        练习题:

# 打印一个n行的等腰三角形

# 方法1: 循环嵌套
n = int(input("请输入三角形的行数:"))
for i in range(1, n+1):
    for j in range(1, n-i+1):
        print(' ', end='')
    for k in range(1, 2*i):
        print('*', end='')
    print()

# 方法2: 拼接
n = int(input("请输入三角形的行数:"))
for i in range(1, n+1):
    s = '*'*(2*i-1)
    print(' '*(n-i)+s)

# 方法3: 格式化直接居中对齐输出
n = int(input("请输入三角形的行数:"))
for i in range(1, n+1):
    s = '*'*(2*i-1)
    print(f"{s:^{2*n-1}}")

         2.2:len()函数

# 功能:返回一个序列[字符串、列表、元组等]的长度或者元素个数。
# 参数:序列[字符串、列表、元组等]
# 通常和range配合使用,用于序列中元素的计算。

s = "hello"
print(f"长度是{len(s)}", end=' ')  # 长度是5

# 按元素遍历
for i in s:
    print(i, end=' ')   # h e l l o

# 按下标、索引遍历
for i in range(len(s)):
    print(s[i], end=' ')    # h e l l o

        练习题:

# 1、输出一百以内的所有质数

for i in range(2, 101):
    flag = True
    for j in range(2, i):
        if i%j==0:
            flag = False
    if flag:
        print(i)



# 2、编程求 2000 以内的所有“完数”;
# 完数,是指一个数恰好等于它的因子值之和;
# 例如:6是完数,因为 6=1+2+3。

for i in range(1, 2001):
    sum = 0
    # 求因子
    for j in range(1, i):
        if i % j == 0:
            sum += j

    if i == sum:
        print(f"{i}是完数")



# 3、已知一串5位数的密码,满足a开头,取值范围是1-9,其他4位由bcde代替
#    取值范围是0-9。密码要满足下面两个条件:
#     ① abcde * a == eeeeee
#     ② a b c d e互不相等
# 穷举算法:列举出所有的可能性进行逐一验证;
# 解题思路:
#     ① 找对象[变量]
#     ② 找范围
#     ③ 找条件
# 我有一把密码锁,一位密码,问一个一个试密码,几种? 答:0到9
# 我有一把密码锁,两位密码,问一个一个试密码,几种? 答:10*10=100

for a in range(1, 10):
    for b in range(10):
        for c in range(10):
            for d in range(10):
                for e in range(10):
                    if (10000*a+1000*b+100*c+10*d+e) * a == 100000*e+10000*e+1000*e+100*e+10*e+e:
                        if a!=b!=c!=d!=e:
                            print(a, b, c, d, e)



三、循环控制关键字

        break:结束本层循环;

        continue:结束本次循环,继续下一次循环;

# break:结束本层循环
for i in range(1,6):
    if i==3:
        break
    print(f"跑第{i}圈", end=' ')    # 跑第1圈 跑第2圈


# continue:结束本次循环,继续下一次循环;
for i in range(1,6):
    if i==3:
        continue
    print(f"跑第{i}圈", end=' ')   # 跑第1圈 跑第2圈 跑第4圈 跑第5圈 

        练习题:

# 用户由键盘输入用户名和密码,分别保存在user和psd中;
# 同时验证用户名和密码是否正确,用户名默认为admin,密码默认为666888
# 如果正确提示登录成功,否则提示用户名或密码错误,请重新登录
# 以上功能最多尝试5次,若次数用完未能成功,则提示登录失败

for i in range(5):
    user = input("请输入用户名:")
    psd = input("请输入密码:")
    if user == "admin" and psd == '666888':
        print("登录成功!")
        break
    else:
        print("用户名或密码错误!请重新输入!")

else:
    print("5次机会已用完,登录失败!")

        注意:

        # 在python中,else是可以和循环结合使用的;

        # 当循环是正常结束的时候,则执行else;

        # 当循环非正常结束的时候,则不执行else;

四、算法的优化分析

import time

start = time.time()
# 100以内所有的质数
for i in range(2, 100001):
    # 假设 i 是质数,那么只有 1 和 i 两个因子
    flag = True
    # 进行验证,在 2 到 i-1 区间有无因子
    for j in range(2, int(i**0.5)+1):
        if i % j == 0:
            flag = False    # 有因子,假设不成立
            break
    if flag:
        pass
end = time.time()
print(end-start, "秒")   # 0.17497920989990234 秒

五:循环总结

        5.1:while循环的使用场景:

                while循环适用于需要根据条件来判断是否继续循环的情况。

                例如,当需要不断接收用户输入直到用户输入特定的值时,可以使用while循环;

                或者程序的运行结果满足某条件时需要结束循环,也可以使用while循环。

        5.2:for循环的使用场景:

                for循环适用于遍历序列(如列表、元组、字符串等)中的元素。

                当需要对一个序列中的每个元素执行相同的操作时,

                可以通过 range() 函数与 len() 函数来配合for循环来完成。

六、课后练习题

# 猜数字游戏
# 用户输入任意一个100以内数字,与随机生成的数字比较,两个数字若一样就赢了。
# 要求:
# 1. 使用random模块; 【import random】
# 2. 有8次猜错机会,猜对则打印数字; 【生成随机整数random】
# 3. 用while循环实现功能

import random

rand_num = random.randint(1, 100)
i = 1
while i <= 8:
    num = int(input("请输入你猜的数:"))
    if num == rand_num:
        print("恭喜你猜对了!")
        break
    elif num < rand_num:
        print("猜小了")
    else:
        print("猜大了")
    i += 1
else:
    print("八次猜数已结束!")

# /// 运行结果如下:
# > 请输入你猜的数:50
# > 猜小了
# > 请输入你猜的数:75
# > 猜大了
# > 请输入你猜的数:63
# > 猜大了
# > 请输入你猜的数:56
# > 猜小了
# > 请输入你猜的数:59
# > 猜小了
# > 请输入你猜的数:61
# > 恭喜你猜对了!


# 1、使用循环语句,计算以下表达式的值:
# 1 + 1/2 + 1/3 + 1/4 + .... + 1/n

n = int(input("输入一个数n:"))
sum = 0
for i in range(1, 2):
    for j in range(1, n+1):
        sum += i / j
    print(f"1+1/2+1/3+1/4+...+1/n 的和是: {sum}")



# 2、使用循环语句,计算以下表达式的值:
# 1/2 + 2/3 + 3/4 + ...... + n/(n+1)

n = int(input("输入一个数n:"))
numerator = 1  # 分子
denominator = 2  # 分母
sum = 0
while True:
    sum += numerator / denominator
    if numerator == n:
        break
    numerator += 1
    denominator += 1
print(f"1/2+2/3+3/4+...+n/(n+1) 的和是: {sum}")


### 回答1: Python是一门简洁、易读且功能强大的编程语言,非常适合初学者入门。下面是一个来自《Python编程入门》的编程题目以供参考。 题目:编写一个Python程序,输出从1到100的所有偶数。 解答如下: ```python for num in range(1, 101): if num % 2 == 0: print(num) ``` 以上程序使用了for循环来遍历从1到100的数字。在每次遍历时,使用if语句判断当前数字是否是偶数,如果是,则输出该数字。代码中的%运算符用于判断一个数是否能够被2整除,如果结果为0,则说明该数是偶数。 运行以上代码,即可输出从1到100之间的所有偶数。 在Python中,编写一个简单的程序只需要几行代码就能完成。这也是为什么Python是非常适合初学者入门的原因之一。不仅如此,Python还有丰富的库和模块,可以用于各种用途,无论是数据分析、网络编程还是网站开发。希望这个简单的编程题目能够帮助你入门Python编程。 ### 回答2: 以下是一个Python入门编程题目的答案,用300字中文回答: 题目要求编写一个程序,实现将一个正整数的每一位数字相加并输出结果。 假设输入的正整数为n,首先将n转换为字符串,然后遍历字符串中的每一位数字,将其转换为整数并累加到一个变量sum中。 最后输出sum的值作为结果。 考虑到一些边界情况,例如输入为0或者负数,可以在程序中添加一些判断,如果输入小于等于0,则输出错误提示信息。 具体的程序实现如下: ```python n = int(input("请输入一个正整数:")) if n <= 0: print("输入的数字不合法!") else: n_str = str(n) sum = 0 for digit in n_str: sum += int(digit) print("每一位数字相加的结果为:", sum) ``` 在程序中,首先通过input函数获取用户输入的数字n,并将其转换为整数。 然后,使用一个if-else语句判断输入的数字是否合法,如果不合法则输出错误提示信息。 对于合法的输入,将n转换为字符串n_str,并初始化sum变量为0。 接下来,使用一个for循环遍历n_str中的每一位数字,并将其转换为整数,累加到sum变量中。 最后,使用print函数输出每一位数字相加的结果。 这个程序是一个简单的Python入门编程题目,通过编写该程序,可以加深对于Python基础语法的理解和应用。 ### 回答3: 题目一:猜数字游戏 题目描述: 编写一个猜数字的小游戏程序。程序随机生成一个1到100之间的整数,用户通过输入猜测的数字,程序根据猜测的大小给出相应的提示,直到用户猜中为止。 解题思路: 1. 导入random模块,使用random.randint()函数生成一个1到100之间的随机整数作为答案。 2. 使用while循环,每次循环中提示用户输入一个猜测的数字,并将其转换为整数类型。 3. 判断用户输入的数字与答案的大小关系,给出相应的提示。如果猜中了,跳出循环;否则继续下一轮循环。 4. 提示用户猜测次数,并输出答案。 代码示例: import random answer = random.randint(1, 100) guess_times = 0 while True: guess = int(input("请输入一个1到100之间的整数:")) guess_times += 1 if guess > answer: print("猜大了,请再试一次。") elif guess < answer: print("猜小了,请再试一次。") else: print("恭喜你,猜对了!") break print("你一共猜了%d次,答案是%d。" % (guess_times, answer)) 题目二:字符串反转 题目描述: 编写一个函数,接收一个字符串作为参数,返回将该字符串反转后的结果。 解题思路: 1. 使用[::-1]切片操作实现字符串反转。 代码示例: def reverse_string(s): return s[::-1] # 测试示例 s = "Hello, World!" print(reverse_string(s)) # 输出:!dlroW ,olleH 题目三:计算素数 题目描述: 编写一个函数,接收一个正整数n作为参数,返回从1到n之间的所有素数。 解题思路: 1. 定义一个空列表prime_nums用于存放素数。 2. 使用for循环从2遍历到n,对于每个数判断是否为素数。 3. 判断素数的方法是,如果一个数能被2到其平方根范围内的任意一个数整除,即不为素数。 4. 如果一个数没有被整除,则加入prime_nums列表中。 代码示例: import math def prime_numbers(n): prime_nums = [] for num in range(2, n + 1): is_prime = True for i in range(2, int(math.sqrt(num)) + 1): if num % i == 0: is_prime = False break if is_prime: prime_nums.append(num) return prime_nums # 测试示例 n = 100 print(prime_numbers(n)) # 输出:[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] 以上是三个基础Python编程题目的解答和代码示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值